【问题标题】:How to use httpcomponents in wildfly 10 with EAR project?如何在带有 EAR 项目的 Wildfly 10 中使用 httpcomponents?
【发布时间】:2016-04-27 23:29:34
【问题描述】:

我无法让 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

我查看了Wildfly 8.1 ClassNotFound org.apache.http.conn.ClientConnectionManager,但jboss-deployment-structure.xml 描述这里没有工作。

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

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

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

编辑:我正在使用 JBoss Developer Studio。我似乎取得了一些进展,如果我手动将 opca-ear.ear 文件复制到部署目录,那么 httpclient 和 httpcore jar 将被部署,但如果我从 jbstudio 部署它们不会,所以我猜这是一个问题jboss-modules.jar 部署。无法从 jbstudio 调试/部署会很痛苦。 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 仅适用于“完整”部署,因此我使用了 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>

【问题讨论】:

  • 您的 EAR 文件中的 Http Components jar 安装在哪里?在 EAR/lib 目录中?你那里有 httpclient 和 httpcore 吗?
  • 嗨@SteveC,请参阅编辑。
  • 您的部署包含 jboss-modules.jar?
  • 没有。我认为 jbstudio/eclipse 使用它来做它的部署。
  • 请显示您正在使用的 pom.xml 文件。 jboss-deployment-structure.xml 仅在您想使用 WildFly/JBossAS 附带的 Http 组件时才有用——我不推荐这样做。第一步是获取应用程序的 maven 命令行构建,以创建正确的人工制品。之后我们可以处理 JBoss Developer Studio 问题——如果它们仍然存在的话。

标签: java jakarta-ee jboss httpclient wildfly


【解决方案1】:

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

【讨论】:

  • 好的,这是很好的信息。清单似乎正在运行。
猜你喜欢
  • 2017-06-19
  • 2019-06-04
  • 2020-03-22
  • 2017-05-12
  • 1970-01-01
  • 2021-04-02
  • 2017-03-25
  • 2021-07-22
  • 2016-06-26
相关资源
最近更新 更多