如何在 EAR 项目中使用 wildfly 10 中的 httpcomponents?

How to use httpcomponents in wildfly 10 with EAR project?

我无法让 org.apache.httpcomponents 在 Wildfly 10 中工作。我没有尝试 9。我得到的错误基本上是。

Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest from [Module "deployment.opca-ear.ear.opca-ejb.jar:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
    ... 185 more

我查看了 ,但 jboss-deployment-structure.xml 描述这里不起作用。

我尝试了 POM 文件中的各种组合,但我没有得到任何结果。

class 在构造时失败,因此导入语句导致问题。

我无法访问模块或获取部署到 ear lib 目录中所需的 jar 文件。

编辑:我正在使用 JBoss Developer Studio。我似乎在这方面取得了一些进展,如果我手动将我的 opca-ear.ear 文件复制到部署目录,然后部署 httpclient 和 httpcore jar,但如果我从 jbstudio 部署,它们不会,所以我想它是jboss-modules.jar 部署存在问题。无法从 jbstudio debug/deploy 会很痛苦。 Httpclient和httpcore在我的lib目录下的opca-ear.ear文件里,还有ejb/target/opca-ear/lib目录下。

如果我能得到类似 jboss-deployment-structure.xml 的东西,或者清单文件中的一个条目可以工作,以便 wildfly 为客户端提供对 org.apache.httpcomponents 资源的访问权限,那么我就不必担心jboss-modules.jar.

解决方案:如已接受的答案所述,jboss-deployment-structure.xml 仅适用于 "full" 部署,因此我使用了 manifest.mf 条目

Dependencies: org.apache.httpcomponents

并更新了 maven-ejb-plugin 以使用它:

<artifactId>maven-ejb-plugin</artifactId>
<version>2.5.1</version>
<configuration>
  <!-- Tell Maven we are using EJB 3.1 -->
  <ejbVersion>3.1</ejbVersion>
  <archive>
    <manifestFile>${basedir}/src/main/resources/META-INF/manifest.mf</manifestFile>
  </archive>
</configuration>

这完全取决于哪个代码需要它。如果您不声明 'full' 应用程序,您提到的 jboss-部署-structure.xml 将无法工作。
也许您应该在需要它的 jar/war 中添加一个包含条目 Dependencies: org.apache.httpcomponents 的清单。
看看 https://docs.jboss.org/author/display/WFLY10/Class+Loading+in+WildFly