【发布时间】:2021-08-20 17:35:03
【问题描述】:
我有一个在 JBoss EAP 6.4 中运行良好的 webapp。我想向我的 web 应用程序添加一些功能,以便它可以处理驻留在 AzureBlob 存储中的 Parquet 文件。我向我的 pom.xml 添加了一个依赖项:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-azure</artifactId>
<version>3.1.0</version>
</dependency>
如果我现在尝试启动我的 web 应用程序,它会在启动时失败:
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.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.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.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 位于 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,709 错误 [org.jboss.as.controller.management-operation] (控制器引导线程)JBAS014612:操作(“部署”)失败 - 地址:([("deployment" => "myApp-0.0.1-SNAPSHOT.war")]) - 失败 描述:{“JBAS014671:失败的服务”=> {"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.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 的应用程序类来消除此问题?
【问题讨论】:
-
您可以尝试使用最新的
hadoop-azure看看会发生什么。在您使用的版本中,hadoop-common是compile,更新版本是provided。hadoop-common是泽西岛的魅力所在。 -
我将 hadoop-azure 更新到 3.3.0(也尝试了 3.2.2),但仍然得到“JBAS011232:只允许一个 JAX-RS 应用程序类”。我已更新问题以显示 3.3.0。
-
问题解决了!我的 pom.xml 也有一个 hadoop-common 条目,其范围为“编译”。当我将其更改为“提供”时,我的应用程序在 JBoss 中运行。 @Paul - 如果您写下您的评论作为答案,我很乐意接受。如果你不喜欢它,我会写下来。
标签: maven jboss jersey azure-web-app-service resteasy