java - 将 jar 添加到 application.xml 中的应用程序?

标签 java weblogic application.xml

我有一个java应用程序需要部署在weblogic服务器中。我目前正在为该应用程序制作耳朵文件。我的ear文件里面有一个ejb jar。我想将 log4j2 jar 添加到此应用程序。所以我的文件夹结构是

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

目前,我已将 jar 放在 APP-INF 文件夹/lib 中,在 META-INF/application.xml 中,我已将 jar 放在模块中。这是我的 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 jar。有什么解决办法吗??

最佳答案

如果您只打包一个应用程序,我强烈建议使用 war 文件而不是 Ear,因为它更简单。否则,您可能需要将当前的 Project-Name.jar 打包到一个 war 文件中,然后将其打包到 Ear 中。

查看类似 the one here 的教程

也就是说 - 您不需要使用 module 标记在 application.xml 文件中显式引用 log4j 库。来自 Oracle docs :

The classes and libraries stored under APP-INF/classes and APP-INF/lib are available to all modules in the Enterprise Application. The application classloader always attempts to resolve class requests by first looking in APP-INF/classes, then APP-INF/lib.

最后但并非最不重要的一点是,如果 Weblogic 似乎没有使用您想要的类,而是使用默认值,在您的情况下是 log4j 1.2log4j 2,您需要在 application.xml 中设置以下内容来告诉 Weblogic 使用哪一个:

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

关于java - 将 jar 添加到 application.xml 中的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27456384/

相关文章:

java - 是否有使用不同应用服务器测试应用程序的技巧或最佳实践?

java - JBoss 在 war 文件中使用 @WebService 和 @Stateless 时忽略 application.xml 中的上下文路径

ejb - 在 JavaEE 6 for ejb 中需要 application.xml

java - 在 mySQL 和 hibernate 之间映射 MediumBlob

java - react 器 Mono.defer 调用上的时间戳未更新

java - XStream 或简单

jakarta-ee - gradle:无法为 org.gradle.api.Project 类型的根项目设置只读属性 'module' 的值

java - 使用延迟加载恢复 JTree 中的扩展/选择状态

java - 用户注销后 JSessionID 没有改变 - 这是安全问题吗?

bash - 在 Vagrant VM 中静默安装 Weblogic