2014-12-13 38 views
2

我有一個需要在weblogic服務器中部署的java應用程序。我目前正在爲該應用程序製作ear文件。我的耳朵文件裏面有一個ejb jar。我想添加log4j2罐子到這個應用程序。所以,我的文件夾結構是將jar添加到application.xml中的應用程序?

> Project-Name- 
>  --Ear-Content 
>   --APP-INF 
>    --lib -> log4j2 jars 
>    --classes - > log4j2.xml 
>   --META-INF->application.xml, MANIFEST.MF, weblogic-application.xml 
>   --Project-Name.jar 

目前我已經把罐子在APP-INF文件夾/ lib和在META-INF/application.xml中我已經把罐子模塊。這是我的application.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN' 'http://java.sun.com/dtd/application_1_3.dtd'> 
<application> 
    <display-name>ProjectName</display-name> 
    <description>ProjectName</description> 

    <module> 
     <ejb>ProjectName.jar</ejb> 

    </module> 
    <module> 
     <java>lib/log4j-api-2.1.jar</java> 

    </module> 
    <module> 
    <java>lib/log4j-core-2.1.jar</java> 
    </module> 


</application> 

但它沒有采取log4j罐子。任何解決方案

回答

0

如果你只打包一個應用程序,我會強烈建議使用war文件而不是耳朵,因爲它更簡單。否則,您可能需要將當前的Project-Name.jar打包成戰爭文件,然後將其打包入耳中。

看到像the one here

也就是說教程 - 你不應該需要明確地引用log4j的圖書館在application.xml文件與module標籤。從Oracle docs:APP-INF/classes和APP-INF/lib目錄下 存儲

的類和庫可在企業應用程序的所有模塊。 應用程序類加載器總是嘗試先解析 的類請求,然後先查看APP-INF/classes,然後查看APP-INF/lib。

最後但並非最不重要的,如果它看起來像Weblogic的不使用你想要的類,轉而使用缺省值,你的情況log4j 1.2 VS log4j 2,你將需要設置在應用程序中以下。 xml告訴Weblogic使用哪一個:

<prefer-application-packages> 
    <package-name>org.apache.log4j.*</package-name> 
</prefer-application-packages> 
+0

我刪除了模塊並添加了它,它工作正常!謝謝! – 2014-12-16 08:58:42