JBoss EAP 6 在 APP-INF/lib 中找不到 JAR
JBoss EAP 6 cannot find JARs in APP-INF/lib
我正在从 Weblogic 迁移到 JBoss EAP 6.4,但我在部署和启动 JBoss 服务器时遇到问题。
我的EAR结构如下:
.EAR
|
|---APP-INF
| |---lib
| |---[many .jar files]
|
|---META-INF
| |---application.xml
| |---jboss-deployment-structure.xml
|
|---[EJB JAR files]
问题:
EAR 根目录中的 EJB JAR 无法访问 APP-INF/lib
文件夹中 JAR 中的 类。
我手动将 lib
文件夹放在 EAR 的根目录下,而不是放在 APP-INF
文件夹中,这似乎可以解决问题。
JBoss 正在查看 .EAR/lib
而不是 .EAR/APP-INF/lib
然后,我在 pom.xml
的 maven-ear-plugin
部分添加了以下内容,让 Maven 在根目录而不是 APP-INF
中创建 lib
文件夹:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<goals>
<goal>generate-application-xml</goal>
<initializeInOrder>true</initializeInOrder>
</goals>
</configuration>
</plugin>
APP-INF/lib
位置特定于 WebLogic。有两种解决方案:
使 Maven 根据标准构建应用程序 - /lib
。这就是您在回答中所做的。
从 Java EE 5 开始,您可以在 META-INF/application.xml 文件中包含库目录参数:
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">
<module>
<ejb>hello-ejb.jar</ejb>
</module>
<module>
<web>
<web-uri>myapp.war</web-uri>
<context-root>myapp</context-root>
</web>
</module>
<library-directory>APP-INF/lib</library-directory>
</application>
作为替代方案,您可以在 jboss-app.xml
:
中包含相同的参数
<application>
<display-name>My Application</display-name>
<module>
<web>
<web-uri>myapp.war</web-uri>
<context-root>/myapp</context-root>
</web>
</module>
<module>
<ejb>myapp.jar</ejb>
</module>
<library-directory>APP-INF/lib</library-directory>
</application>
我正在从 Weblogic 迁移到 JBoss EAP 6.4,但我在部署和启动 JBoss 服务器时遇到问题。
我的EAR结构如下:
.EAR
|
|---APP-INF
| |---lib
| |---[many .jar files]
|
|---META-INF
| |---application.xml
| |---jboss-deployment-structure.xml
|
|---[EJB JAR files]
问题:
EAR 根目录中的 EJB JAR 无法访问 APP-INF/lib
文件夹中 JAR 中的 类。
我手动将 lib
文件夹放在 EAR 的根目录下,而不是放在 APP-INF
文件夹中,这似乎可以解决问题。
JBoss 正在查看 .EAR/lib
而不是 .EAR/APP-INF/lib
然后,我在 pom.xml
的 maven-ear-plugin
部分添加了以下内容,让 Maven 在根目录而不是 APP-INF
中创建 lib
文件夹:
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<goals>
<goal>generate-application-xml</goal>
<initializeInOrder>true</initializeInOrder>
</goals>
</configuration>
</plugin>
APP-INF/lib
位置特定于 WebLogic。有两种解决方案:
使 Maven 根据标准构建应用程序 -
/lib
。这就是您在回答中所做的。从 Java EE 5 开始,您可以在 META-INF/application.xml 文件中包含库目录参数:
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"> <module> <ejb>hello-ejb.jar</ejb> </module> <module> <web> <web-uri>myapp.war</web-uri> <context-root>myapp</context-root> </web> </module> <library-directory>APP-INF/lib</library-directory> </application>
作为替代方案,您可以在 jboss-app.xml
:
<application>
<display-name>My Application</display-name>
<module>
<web>
<web-uri>myapp.war</web-uri>
<context-root>/myapp</context-root>
</web>
</module>
<module>
<ejb>myapp.jar</ejb>
</module>
<library-directory>APP-INF/lib</library-directory>
</application>