首先,我对JBoss几乎一无所知。从来没有在昨天碰过它,仍然没有真正理解它。但是,我公司的一个客户正在使用它来部署我们的应用程序,而我们的最新更新打破了他们的配置,所以我正试图解决它。
无论如何,这是版本信息:
Hadoop:2.7.2
泽西岛:2.3JBoss:6.1
操作系统:Windows(我怀疑这是特定于操作系统的,这只是我正在研究的环境)我们最近在我们的应用程序中添加了一个Hadoop连接器模块,这似乎是导致失败的原因。我已经能够重现这个问题,这里是堆栈跟踪:
13:32:39,857 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit."eip.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."eip.war".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment "eip.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_65]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_65]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_65]
Caused by: java.lang.LinkageError: Failed to link org/apache/hadoop/hdfs/web/resources/UserProvider (Module "deployment.eip.war:main" from Service Module Loader)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:428) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:261) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:76) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.Module.loadModuleClass(Module.java:548) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:189) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.loadClassInfoSet(ServletContainerInitializerDeploymentProcessor.java:232)
at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.deploy(ServletContainerInitializerDeploymentProcessor.java:161)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
... 5 more
Caused by: java.lang.NoClassDefFoundError: com/sun/jersey/spi/inject/InjectableProvider
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.8.0_65]
at java.lang.ClassLoader.defineClass(ClassLoader.java:760) [rt.jar:1.8.0_65]
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:345) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:423) [jboss-modules.jar:1.3.0.Final-redhat-2]
... 16 more
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.spi.inject.InjectableProvider from [Module "deployment.eip.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final-redhat-2]
... 20 more
所以这个UserProvider类,似乎是设置实现Jersey接口。问题是,Jersey接口是一个1.x接口,我们的应用程序中有2.x库。我们需要将2.x库用于其他组件,几个月前实际上有很大的迁移到沟渠1.x.
所以我完全迷失了。我已经尝试了一切我能想到的尝试来解决这个问题。我深入研究了Weld的文档,但每当我尝试任何基于配置的禁用焊接方法时,我都会得到一个例外,它不知道如何解析引用焊接的xml元素。
我只是完全迷失了(是的,我已经说过了,但这是真的)。 JBoss让我疯狂,但是这个客户想要使用它,所以我们必须找到一种方法来支持它。
所以,以下是我真正可以使用的东西:
1)禁用尝试加载UserProvider的扫描进程。我们在应用程序中没有以任何形式或形式使用此类,我们甚至不想这样做。
2)使用Jersey 2.3让JBoss更好地工作。不完全确定那是可能的......
3)Hacky丑陋的方式让这个例外消失了。希望...
4)我可以采取任何其他措施来使这件该死的事情发挥作用。
感谢。
答案 0 :(得分:0)
问题是Hadoop 2.7使用了泽西1.9
答案 1 :(得分:0)
在此错误中,我必须删除版本中的hadoop依赖项:2.6.0-mr1-cdh5.7.4
并添加jersey-server one:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19.3</version>
</dependency>
答案 2 :(得分:0)
对于我来说,将solr-solrj和solr-core从6.2.1升级到6.5.1修复了这个问题,尽管我仍然看到有关UserService的警告。这是一个奇怪的错误,因为它从一天到另一天出现,没有做任何改变。