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

时间:2016-04-27 23:29:35

标签: java java-ee jboss httpclient wildfly

我无法让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资源的访问权限,那么我就不必担心{{ 1}}。

解决方案:如接受的答案中所述,jboss-modules.jar仅适用于“完整”部署,因此我使用了manifest.mf条目

jboss-deployment-structure.xml

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

Dependencies: org.apache.httpcomponents

1 个答案:

答案 0 :(得分:2)

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