在WildFly 10中部署共享JAR文件

3
我有一个以WAR格式封装的完全功能Web应用程序,我正在尝试将/WEB-INF/lib中的*.jar文件移除并放置到WildFly 10中。
迄今为止我做了以下(不成功)的操作,并参考了以下资源:
  1. 从/WEB-INF/lib中复制*.jar到C:... /wildfly-10.0.0.Final/standalone/deployments
  2. 成功部署了复制的JAR文件。
  3. 创建了一个/WEB-INF/jboss-deployment-structure.xml(见下文),以引用部署目录中的jars
上述尝试是响应在Wildfly中与war部署共享util jar文件 我也愿意尝试其他方法。我认为可以将我WEB-INF/lib中的所有jar打包到一个jar中,并让WildFly 10为该jar创建一个ID。 然后,我的war文件将在某个地方指定此ID。问题是我不太确定如何使用具有特定Wildfly/J2EE术语的关键字来搜索这个过程。参考https://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly没有给我提供具体示例来帮助我。
jboss-deployment-structure.xml
<jboss-deployment-structure>
  <!-- Make sub deployments isolated by default, so they cannot see each others classes without a Class-Path entry -->
  <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
  <!-- This corresponds to the top level deployment. For a war this is the war's module, for an ear -->
  <!-- This is the top level ear module, which contains all the classes in the EAR's lib folder     -->
  <deployment>
     <!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->
     <!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->
    <!-- This allows you to define additional dependencies, it is the same as using the Dependencies: manifest attribute -->
    <dependencies>
        <module name="deployment.aesh-0.33.11.jar" />
        <module name="deployment.aether-api-1.13.1.jar" />
        <module name="deployment.aether-impl-1.13.1.jar" />
        <module name="deployment.aether-spi-1.13.1.jar" />
        <module name="deployment.aether-util-1.13.1.jar" />
        <module name="deployment.angular2-2.0.0-beta.7.jar" />
        <module name="deployment.antlr-2.7.7.jar" />
        <module name="deployment.antlr4-runtime-4.5.2-1.jar" />
        <module name="deployment.aopalliance-1.0.jar" />
        <module name="deployment.bcpkix-jdk15on-1.48.jar" />
        <module name="deployment.bcprov-jdk15on-1.48.jar" />
        <module name="deployment.bootstrap-3.3.6.jar" />
        <module name="deployment.cglib-nodep-2.1_3.jar" />
        <module name="deployment.checkstyle-6.16.1.jar" />
        <module name="deployment.commons-beanutils-1.9.2.jar" />
        <module name="deployment.commons-cli-1.3.1.jar" />
        <module name="deployment.commons-codec-1.10.jar" />
        <module name="deployment.commons-collections-3.2.1.jar" />
        <module name="deployment.commons-compress-1.5.jar" />
        <module name="deployment.commons-exec-1.3.jar" />
        <module name="deployment.commons-io-2.4.jar" />
        <module name="deployment.commons-lang3-3.4.jar" />
        <module name="deployment.commons-logging-1.2.jar" />
        <module name="deployment.dom4j-1.6.1.jar" />
        <module name="deployment.gson-2.3.1.jar" />
        <module name="deployment.guava-19.0.jar" />
        <module name="deployment.hibernate-commons-annotations-4.0.5.Final.jar" />
        <module name="deployment.hibernate-core-4.3.11.Final.jar" />
        <module name="deployment.hibernate-jpa-2.1-api-1.0.0.Final.jar" />
        <module name="deployment.httpclient-4.3.5.jar" />
        <module name="deployment.httpcore-4.3.2.jar" />
        <module name="deployment.jackson-core-asl-1.9.13.jar" />
        <module name="deployment.jackson-mapper-asl-1.9.13.jar" />
        <module name="deployment.jandex-1.1.0.Final.jar" />
        <module name="deployment.jansi-1.9.jar" />
        <module name="deployment.javassist-3.12.1.GA.jar" />
        <module name="deployment.javassist-3.18.1-GA.jar" />
        <module name="deployment.javax.servlet.jsp-api-2.3.1.jar" />
        <module name="deployment.javax.servlet-api-3.1.0.jar" />
        <module name="deployment.jboss-dmr-1.2.0.Final.jar" />
        <module name="deployment.jboss-logging-3.1.3.GA.jar" />
        <module name="deployment.jboss-logging-annotations-1.2.0.Beta1.jar" />
        <module name="deployment.jboss-marshalling-1.4.2.Final.jar" />
        <module name="deployment.jboss-marshalling-river-1.4.2.Final.jar" />
        <module name="deployment.jboss-remoting-4.0.3.Final.jar" />
        <module name="deployment.jboss-sasl-1.0.4.Final.jar" />
        <module name="deployment.jboss-threads-2.1.1.Final.jar" />
        <module name="deployment.jboss-transaction-api_1.2_spec-1.0.0.Final.jar" />
        <module name="deployment.jboss-vfs-3.2.5.Final.jar" />
        <module name="deployment.jcip-annotations-1.0.jar" />
        <module name="deployment.jcommander-1.48.jar" />
        <module name="deployment.jetty-rc-repacked-5.jar" />
        <module name="deployment.jetty-repacked-9.2.13.v20150730.jar" />
        <module name="deployment.jna-4.1.0.jar" />
        <module name="deployment.jna-platform-4.1.0.jar" />
        <module name="deployment.jquery-1.11.1.jar" />
        <module name="deployment.jstl-1.2.jar" />
        <module name="deployment.log4j-api-2.0.jar" />
        <module name="deployment.log4j-core-2.0.jar" />
        <module name="deployment.log4j-slf4j-impl-2.5.jar" />
        <module name="deployment.maven-aether-provider-3.0.5.jar" />
        <module name="deployment.maven-artifact-3.0.5.jar" />
        <module name="deployment.maven-core-3.0.5.jar" />
        <module name="deployment.maven-model-3.0.5.jar" />
        <module name="deployment.maven-model-builder-3.0.5.jar" />
        <module name="deployment.maven-plugin-annotations-3.2.jar" />
        <module name="deployment.maven-plugin-api-3.0.5.jar" />
        <module name="deployment.maven-repository-metadata-3.0.5.jar" />
        <module name="deployment.maven-settings-3.0.5.jar" />
        <module name="deployment.maven-settings-builder-3.0.5.jar" />
        <module name="deployment.mx4j-tools-3.0.1.jar" />
        <module name="deployment.mysql-connector-java-5.1.38.jar" />
        <module name="deployment.netty-3.5.7.Final.jar" />
        <module name="deployment.plexus-cipher-1.4.jar" />
        <module name="deployment.plexus-classworlds-2.4.jar" />
        <module name="deployment.plexus-component-annotations-1.5.5.jar" />
        <module name="deployment.plexus-interpolation-1.14.jar" />
        <module name="deployment.plexus-sec-dispatcher-1.3.jar" />
        <module name="deployment.plexus-utils-3.0.10.jar" />
        <module name="deployment.remoting-jmx-2.0.0.Final.jar" />
        <module name="deployment.selenium-api-2.53.0.jar" />
        <module name="deployment.selenium-chrome-driver-2.53.0.jar" />
        <module name="deployment.selenium-edge-driver-2.53.0.jar" />
        <module name="deployment.selenium-firefox-driver-2.53.0.jar" />
        <module name="deployment.selenium-ie-driver-2.53.0.jar" />
        <module name="deployment.selenium-java-2.53.0.jar" />
        <module name="deployment.selenium-leg-rc-2.53.0.jar" />
        <module name="deployment.selenium-remote-driver-2.53.0.jar" />
        <module name="deployment.selenium-safari-driver-2.53.0.jar" />
        <module name="deployment.selenium-server-2.53.0.jar" />
        <module name="deployment.selenium-support-2.53.0.jar" />
        <module name="deployment.sisu-guava-0.9.9.jar" />
        <module name="deployment.sisu-guice-3.1.0-no_aop.jar" />
        <module name="deployment.sisu-inject-bean-2.3.0.jar" />
        <module name="deployment.sisu-inject-plexus-2.3.0.jar" />
        <module name="deployment.slf4j-api-1.7.18.jar" />
        <module name="deployment.snakeyaml-1.8.jar" />
        <module name="deployment.spring-aop-4.1.6.RELEASE.jar" />
        <module name="deployment.spring-beans-4.1.6.RELEASE.jar" />
        <module name="deployment.spring-context-4.1.6.RELEASE.jar" />
        <module name="deployment.spring-core-4.1.6.RELEASE.jar" />
        <module name="deployment.spring-expression-4.1.6.RELEASE.jar" />
        <module name="deployment.spring-jdbc-4.2.4.RELEASE.jar" />
        <module name="deployment.spring-security-acl-4.0.3.RELEASE.jar" />
        <module name="deployment.spring-security-config-4.0.1.RELEASE.jar" />
        <module name="deployment.spring-security-core-4.0.1.RELEASE.jar" />
        <module name="deployment.spring-security-taglibs-4.0.3.RELEASE.jar" />
        <module name="deployment.spring-security-web-4.0.1.RELEASE.jar" />
        <module name="deployment.spring-tx-4.2.4.RELEASE.jar" />
        <module name="deployment.spring-web-4.1.6.RELEASE.jar" />
        <module name="deployment.spring-webmvc-4.1.6.RELEASE.jar" />
        <module name="deployment.stacks-client-1.0.2.Final.jar" />
        <module name="deployment.staxmapper-1.1.0.Final.jar" />
        <module name="deployment.wildfly-build-config-8.1.0.Final.jar" />
        <module name="deployment.wildfly-cli-8.1.0.Final.jar" />
        <module name="deployment.wildfly-controller-client-8.1.0.Final.jar" />
        <module name="deployment.wildfly-maven-plugin-1.0.2.Final.jar" />
        <module name="deployment.wildfly-protocol-8.1.0.Final.jar" />
        <module name="deployment.wildfly-security-manager-1.0.0.Final.jar" />
        <module name="deployment.xml-apis-1.0.b2.jar" />
        <module name="deployment.xnio-api-3.2.2.Final.jar" />
        <module name="deployment.xnio-nio-3.2.2.Final.jar" />
        <module name="deployment.xz-1.2.jar" />
    </dependencies>
    <!-- These add additional classes to the module. In this case it is the same as including the jar in the EAR's lib directory -->
    <resources>
      <resource-root path="md.jar" />
    </resources>
  </deployment>
</jboss-deployment-structure>

来自WildFly的错误日志显示无法部署我的ROOT.war文件。
13:27:30,977 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "antlr4-runtime-4.5.2-1.jar" (runtime-name : "antlr4-runtime-4.5.2-1.jar")
13:27:30,978 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "antlr-2.7.7.jar" (runtime-name : "antlr-2.7.7.jar")
13:27:30,978 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "angular2-2.0.0-beta.7.jar" (runtime-name : "angular2-2.0.0-beta.7.jar")
13:27:30,979 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "aether-util-1.13.1.jar" (runtime-name : "aether-util-1.13.1.jar")
13:27:30,979 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "aether-spi-1.13.1.jar" (runtime-name : "aether-spi-1.13.1.jar")
13:27:30,979 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "aether-impl-1.13.1.jar" (runtime-name : "aether-impl-1.13.1.jar")
13:27:30,979 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "aether-api-1.13.1.jar" (runtime-name : "aether-api-1.13.1.jar")
13:27:30,981 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 34) WFLYSRV0010: Deployed "aesh-0.33.11.jar" (runtime-name : "aesh-0.33.11.jar")
13:27:30,983 INFO  [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report
WFLYCTL0184:    New missing/unsatisfied dependencies:
      service jboss.deployment.unit."ROOT.war".beanmanager (missing) dependents: [service jboss.deployment.unit."ROOT.war".weld.weldClassIntrospector, service jboss.deployment.unit."ROOT.war".batch.environment] 
WFLYCTL0186:   Services which failed to start:      service jboss.deployment.unit."ROOT.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."ROOT.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "ROOT.war"

13:27:31,234 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
13:27:31,234 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
13:27:31,234 ERROR [org.jboss.as] (Controller Boot Thread) WFLYSRV0026: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started (with errors) in 47550ms - Started 4867 of 5891 services (3 services failed or missing dependencies, 1357 services are lazy, passive or on-demand)
13:27:44,221 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-5) WFLYSRV0028: Stopped deployment ROOT.war (runtime-name: ROOT.war) in 11969ms
13:27:44,285 INFO  [org.jboss.as.repository] (DeploymentScanner-threads - 2) WFLYDR0002: Content removed from location C:\home\toazi\apps\wildfly-10.0.0.Final\standalone\data\content\71\0188d928a988dddca670dade8e87ac9ec64b57\content
13:27:44,285 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0009: Undeployed "ROOT.war" (runtime-name: "ROOT.war")
13:27:44,286 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0183: Service status report
WFLYCTL0186:   Services which failed to start:      service jboss.deployment.unit."ROOT.war".INSTALL
1个回答

1
Wildfly提供了你列表中的许多依赖项(例如Hibernate,日志记录)。因此,您不需要包含它们,或者如果您需要另一个版本,则应将其排除在外。
如果每个jar都是单独的部署,我不确定它们是否可以相互看到。
除此之外,把你的Jars放入一个模块可能是一个更好的主意。然后,您只需要在jboss-deployment-structure中包含对该模块的引用,而不是30个。在您链接的问题中也给出了一个示例。

"Wildfly可能会覆盖我的日志配置,这可能是原因。"如果每个"<ear-subdeployments-isolated>false</ear-subdeployments-isolated>"都让jar彼此可见,但经过第二次阅读,jar相互可见的范围仅限于位于同一EAR文件中。除了已同意的内容外,这就是我发布"...是否可能将WEB-INF/lib中的所有jar打成一个jar...",但是将30个jar打在一起并尝试引用它会增加解决Wildfly看到jar的原始问题的复杂性。感谢您的反馈,为解决问题提供了方向。 - Coder314
1
@Coder314 当使用模块时,您不必将所有内容放入一个JAR文件中。您可以将多个JAR文件放在那里,并使用resource-root元素在module.xml中引用它们。 - user140547

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接