问题描述
我遇到了与我的 previous one 类似的问题。我有一个在 JBoss EAP 6.4 中运行良好的 web 应用程序。我想向我的 webapp 添加一些功能,以便它可以操作 hive-metastore。我向 pom.xml 添加了一个依赖项:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.2</version>
</dependency>
如果我现在尝试启动我的 web 应用程序,它会在启动时失败:
15:07:37,718 错误 [org.jboss.msc.service.fail](MSC 服务线程 1-5) MSC000001:启动服务失败 jboss.deployment.unit."myapp-0.0.1-SNAPSHOT.war".POST_MODULE: 服务中的 org.jboss.msc.service.StartException jboss.deployment.unit."myapp-0.0.1-SNAPSHOT.war".POST_MODULE: JBAS018733:无法处理部署的 POST_MODULE 阶段 “myapp-0.0.1-SNAPSHOT.war” ... 引起: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011232:只允许一个 JAX-RS 应用程序类。 com.sun.jersey.api.core.servlet.WebAppResourceConfig com.sun.jersey.api.core.DefaultResourceConfig com.sun.jersey.server.impl.application.DeferredResourceConfig com.sun.jersey.api.core.ClassNamesResourceConfig org.glassfish.jersey.server.ResourceConfig$WrappingResourceConfig org.glassfish.jersey.server.ResourceConfig org.glassfish.jersey.server.ResourceConfig$RuntimeConfig com.sun.jersey.api.core.ScanningResourceConfig com.sun.jersey.api.core.ResourceConfig com.sun.jersey.api.core.PackagesResourceConfig com.mycompany.RestApplication com.sun.jersey.api.core.ApplicationAdapter com.sun.jersey.api.core.ClassPathResourceConfig
消息“JBAS011232:只允许一个 JAX-RS 应用程序类”似乎是由我的 web 应用程序试图同时使用 RestEasy (v. 2.3.10.Final-redhat-1) 和 Jersey 引起的。 JBoss 默认使用 RestEasy。显然,hive-jdbc 必须直接或间接具有 Jersey 应用程序类。
我想通过表明我不想使用基于 Jersey 的应用程序类来消除这个问题。我可以采用什么策略来发现基于 Jersey 的类存在于何处?如果我用 mvn 生成依赖树,
mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:tree -Dverbose=true
hive-jdbc 有近 800 行依赖项。必须有比查看所有依赖项的源代码更好的策略。或者,有没有办法告诉 JBoss 忽略 Jersey 应用程序类?
顺便说一句,与我之前的问题不同,hadoop-common 似乎不是罪魁祸首。当我查看依赖树中“hadoop-common”的出现时,我看到以下内容:
我目前的策略是这样的:
Repeat
add exclusion to likely looking package in pom file
start JBoss and examine console log
if console log has no JBAS01132 error then
if console log has no startup failure due to NoClassDefFound error then
Done!
else remove exclusion
until Done
我无法“完成”。在这一点上,我似乎卡在了 jersey-server
包上。如果没有它,我们会收到 NoClassDefFound
错误。有了它,我们得到 JBAS011232: Only one JAX-RS Application Class allowed
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)