Webapp 失败并显示“JBAS011232: Only one JAX-RS Application Class allowed"向 hadoop-azure 添加 maven 依赖项后 [英] Webapp fails with "JBAS011232: Only one JAX-RS Application Class allowed" after adding a maven dependency to hadoop-azure

查看:64
本文介绍了Webapp 失败并显示“JBAS011232: Only one JAX-RS Application Class allowed"向 hadoop-azure 添加 maven 依赖项后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在 JBoss EAP 6.4 中运行良好的 web 应用程序.我想向我的 web 应用程序添加一些功能,以便它可以处理驻留在 AzureBlob 存储中的 Parquet 文件.我向 pom.xml 添加了一个依赖项:

I have a webapp that runs fine in JBoss EAP 6.4. I want to add some functionality to my webapp so that it can process Parquet files that reside in AzureBlob storage. I add a single dependency to my pom.xml:

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-azure</artifactId>
        <version>3.1.0</version>
    </dependency>

如果我现在尝试启动我的 web 应用程序,它会在启动时失败:

If I now try to start my webapp, it fails at start up:

09:29:43,703 错误 [org.jboss.msc.service.fail](MSC 服务线程1-10) MSC000001:启动服务失败jboss.deployment.unit.myApp-0.0.1-SNAPSHOT.war".POST_MODULE:服务中的 org.jboss.msc.service.StartExceptionjboss.deployment.unit.myApp-0.0.1-SNAPSHOT.war".POST_MODULE:JBAS018733:无法处理部署的 POST_MODULE 阶段myApp-0.0.1-SNAPSHOT.war"在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166)[jboss-as-server-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980)[jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1]...引起:org.jboss.as.server.deployment.DeploymentUnitProcessingException:JBAS011232:只允许一个 JAX-RS 应用程序类.com.sun.jersey.api.core.ResourceConfigcom.sun.jersey.api.core.DefaultResourceConfigcom.sun.jersey.api.core.PackagesResourceConfigcom.mycompany.myapp.rest.RestApplicationcom.sun.jersey.api.core.ClassNamesResourceConfigcom.sun.jersey.api.core.ScanningResourceConfigcom.sun.jersey.api.core.servlet.WebAppResourceConfigcom.sun.jersey.api.core.ApplicationAdaptercom.sun.jersey.server.impl.application.DeferredResourceConfigcom.sun.jersey.api.core.ClasspathResourceConfig 在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:206)在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:104)在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159)[jboss-as-server-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] ...还有 5 个

09:29:43,703 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-10) MSC000001: Failed to start service jboss.deployment.unit."myApp-0.0.1-SNAPSHOT.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."myApp-0.0.1-SNAPSHOT.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment "myApp-0.0.1-SNAPSHOT.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [jboss-as-server-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] ... Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011232: Only one JAX-RS Application Class allowed. com.sun.jersey.api.core.ResourceConfig com.sun.jersey.api.core.DefaultResourceConfig com.sun.jersey.api.core.PackagesResourceConfig com.mycompany.myapp.rest.RestApplication com.sun.jersey.api.core.ClassNamesResourceConfig com.sun.jersey.api.core.ScanningResourceConfig com.sun.jersey.api.core.servlet.WebAppResourceConfig com.sun.jersey.api.core.ApplicationAdapter com.sun.jersey.server.impl.application.DeferredResourceConfig com.sun.jersey.api.core.ClasspathResourceConfig at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:206) at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:104) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [jboss-as-server-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] ... 5 more

09:29:43,709 错误 [org.jboss.as.controller.management-operation](控制器引导线程)​​JBAS014612:操作(部署")失败 -地址:([(部署"=>myApp-0.0.1-SNAPSHOT.war")]) - 失败描述:{JBAS014671:失败的服务";=>{jboss.deployment.unit."myApp-0.0.1-SNAPSHOT.war.POST_MODULE"=>"org.jboss.msc.service.StartException in servicejboss.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.ResourceConfigcom.sun.jersey.api.core.DefaultResourceConfigcom.sun.jersey.api.core.PackagesResourceConfigcom.mycompany.myapp.rest.RestApplicationcom.sun.jersey.api.core.ClassNamesResourceConfigcom.sun.jersey.api.core.ScanningResourceConfigcom.sun.jersey.api.core.servlet.WebAppResourceConfigcom.sun.jersey.api.core.ApplicationAdaptercom.sun.jersey.server.impl.application.DeferredResourceConfigcom.sun.jersey.api.core.ClasspathResourceConfig"}}

09:29:43,709 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014612: Operation ("deploy") failed - address: ([("deployment" => "myApp-0.0.1-SNAPSHOT.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit."myApp-0.0.1-SNAPSHOT.war".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit."myApp-0.0.1-SNAPSHOT.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment "myApp-0.0.1-SNAPSHOT.war" Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011232: Only one JAX-RS Application Class allowed. com.sun.jersey.api.core.ResourceConfig com.sun.jersey.api.core.DefaultResourceConfig com.sun.jersey.api.core.PackagesResourceConfig com.mycompany.myapp.rest.RestApplication com.sun.jersey.api.core.ClassNamesResourceConfig com.sun.jersey.api.core.ScanningResourceConfig com.sun.jersey.api.core.servlet.WebAppResourceConfig com.sun.jersey.api.core.ApplicationAdapter com.sun.jersey.server.impl.application.DeferredResourceConfig com.sun.jersey.api.core.ClasspathResourceConfig"}}

消息JBAS011232:只允许一个 JAX-RS 应用程序类"似乎是由我的 web 应用程序试图同时使用 RestEasy 和 Jersey 引起的.JBoss 默认使用 RestEasy.显然,hadoop-azure 必须有一个 Jersey 应用程序类.如何通过表明我不想使用基于 Jersey 的应用程序类来消除此问题?

The message "JBAS011232: Only one JAX-RS Application Class allowed" seems to be caused by my webapp trying to use both RestEasy and Jersey. JBoss uses RestEasy by default. Apparently, hadoop-azure must have a Jersey application class. How can I eliminate this problem by indicating that I don't want to use the Jersey-based application class?

推荐答案

hadoop-azure 引入了 hadoop-common,后者引入了 Jersey.在您使用的 hadoop-azure 版本中,hadoop-common 位于 compile .在新版本中,它在 provided 范围内.因此,您可以将 hadoop-azure 依赖项升级到最新的依赖项.如果你需要hadoop-common来编译,那么你可以重新声明hadoop-common并将其放入provided作用域.

hadoop-azure pulls in hadoop-common, which pulls in Jersey. In the version of hadoop-azure you're using, hadoop-common is in compile <scope>. In new version, it is in provided scope. So you can just upgrade the hadoop-azure dependency to the latest one. If you need hadoop-common to compile, then you can redeclare hadoop-common and put it in provided scope.

这篇关于Webapp 失败并显示“JBAS011232: Only one JAX-RS Application Class allowed"向 hadoop-azure 添加 maven 依赖项后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆