gpt4 book ai didi

java - JBoss 中基本的 ear-package 部署

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:07 25 4
gpt4 key购买 nike

这是我想要实现的:

  • 1 个耳机包:all.ear
  • 耳包包含两个 war (A.war, B.war in the ear root)
  • ear-package包含1个自制jar C和大量第三方jar(在APP-INF\lib下)

这个包需要部署在JBoss WildFly 8.2.1上

我正在使用 maven 的 ear 插件(maven-ear-plugin,版本 2.10.1)。我在 pom 中的配置如下所示(这是结合了其他三个项目的“父”项目):

<configuration>
<finalName>All</finalName>
<defaultLibBundleDir>APP-INF/lib</defaultLibBundleDir>
<includeLibInApplicationXml>true</includeLibInApplicationXml>
<version>6</version>
<displayName>All</displayName>
<modules>
<jarModule>
<groupId>project</groupId>
<artifactId>C</artifactId>
<bundleFileName>C.jar</bundleFileName>
<uri>APP-INF/lib/C.jar</uri>
<bundleDir>APP-INF/lib</bundleDir>
</jarModule>
<webModule>
<groupId>project</groupId>
<artifactId>A</artifactId>
<uri>A.war</uri>
<bundleFileName>A.war</bundleFileName>
<contextRoot>/a</contextRoot>
<bundleDir>/</bundleDir>
</webModule>
<webModule>
<groupId>project</groupId>
<artifactId>B</artifactId>
<uri>B.war</uri>
<bundleFileName>B.war</bundleFileName>
<contextRoot>/b</contextRoot>
<bundleDir>/</bundleDir>
</webModule>
</modules>
<archive>
<manifestEntries>
<Implementation-Version>1.0</Implementation-Version>
</manifestEntries>
</archive>
</configuration>

我的 META.INF/application.xml 文件像这样:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="6"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_6.xsd">
<display-name>All</display-name>
<initialize-in-order>true</initialize-in-order>
<module>
<java>APP-INF/lib/C.jar</java>
</module>
<module>
<web>
<web-uri>B.war</web-uri>
<context-root>b</context-root>
</web>
</module>
<module>
<web>
<web-uri>A.war</web-uri>
<context-root>a</context-root>
</web>
</module>
<library-directory>APP-INF/lib</library-directory>
</application>

耳包制作完成。所有第三方jar都在APP-INF/lib下,但C.jar在根目录下。

我在尝试将包上传到 JBoss 时遇到了很多问题并遇到了不同的错误:

 Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS016703: Module may not be a child of the EAR's library directory. Library directory: APP-INF/lib, module file name: APP-INF/lib/[SomeThirthPartyLib].jar"

当我将每个库放在根目录下(不要使用 APP-INF)时,我得到了 B.war 的 ClassNotFoundError(无法从 C.jar 中找到类)。

我已经尝试将“jboss”标签添加到 maven-ear-plugin(配置),但 JBoss 8+ 不支持这些标签。

我想要一个可以在 JBoss 中部署的 .ear 包,其中包含 2 个 war 和 1 个 jar,这两个 war 都引用了它。

我错过了什么? (特定 list 配置?A、B 或 C 的特定 pom.xml 设置?JBoss 设置?...?)

最佳答案

报错“WFLYEE0097: Module may not be a child”的解决方法EAR 的库目录”:错误是因为 application.xml 中的标记 APP-INF/lib。如果库 jar 位于 EAR/lib 中,那么 application.xml 将正常工作,因为它位于 EAR/APP-INF/lib 下, jboss 或 wildfly 不会理解这个(appication.xml)部署描述符。所以使用 jboss-app.xml,即使库目录不同,wildfly 也能理解。解决方案:只需将 application.xml 的完整内容复制到 jboss-app.xml 并将它放在 META-INF 文件夹中(同时确保删除 application.xml 文件或不通过 pom.xml 生成它)

关于java - JBoss 中基本的 ear-package 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33348182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com