JBoss EAP 6在APP-INF / lib中找不到JAR

时间:2016-02-04 16:50:32

标签: java jboss migration ejb weblogic

我正在从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中的类。

2 个答案:

答案 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>