代码之家  ›  专栏  ›  技术社区  ›  Tanvir

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

  •  2
  • Tanvir  · 技术社区  · 9 年前

    我正在从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无法访问JAR中位于 APP-INF/lib 文件夹

    2 回复  |  直到 9 年前
        1
  •  1
  •   Tanvir    9 年前

    我手动将 lib 文件夹位于EAR的根目录,而不是 APP-INF 文件夹,它似乎做到了。

    JBoss正在查看内部 .EAR/lib 而不是 .EAR/APP-INF/lib

    然后,我在 maven-ear-plugin 我的部分 pom.xml 让maven创建 图书馆 文件夹位于根目录,而不在 应用程序 :

    <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>
    
        2
  •  1
  •   Ondra Žižka David Lilljegren    9 年前

    这个 APP-INF/lib 位置特定于WebLogic。有两种解决方案:

    • 让Maven根据标准构建应用程序- /lib 。这就是你在回答中所做的。

    • 从JavaEE5开始,您可以在META-INF/应用程序中包含库目录参数。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>