需要识别“JBAS011232:只允许一个 JAX-RS 应用程序类”的根本原因的策略

问题描述

我遇到了与我的 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”的出现时,我看到以下内容

hadoop common occurrences

我目前的策略是这样的:

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 (将#修改为@)