我正在从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中的类。
答案 0 :(得分:1)
我手动将lib
文件夹放在EAR的根目录而不是APP-INF
文件夹中,它似乎可以解决问题。
JBoss正在.EAR/lib
而不是.EAR/APP-INF/lib
然后,我在maven-ear-plugin
的{{1}}部分添加了以下内容,以便让maven在根目录而不是pom.xml
创建lib
文件夹:
APP-INF
答案 1 :(得分:1)
APP-INF/lib
位置特定于WebLogic。有两种解决方案:
让Maven根据标准构建应用程序 - /lib
。这就是你在答案中所做的。
从Java EE 5开始,您可以在META-INF / application.xml文件中包含library-directory参数:
<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>