2014-01-15 1 views
1

Jboss 웹 응용 프로그램에 HBase Java 클라이언트를 연결하려고합니다. 독립 실행 형 애플리케이션 인 개념 증명 (POC)을 HBase 액세스 용으로 만들었을 때 저지 라이브러리를 통합 할 필요가 없었습니다.JBoss 응용 프로그램에 저지 라이브러리 통합

그러나 Jboss Web App에서 동일한 POC 모듈을 통합 할 때 예외가 발생했습니다.

13:37:20,261 WARN [org.jboss.modules] (http--0.0.0.0-8080-2) Failed to define class org.apache.hadoop.hdfs.web.resources.UserProvider in Module "deployment.HFPlatform.ear:main" from Service Module Loader: java.lang.LinkageError: Failed to link org/apache/hadoop/hdfs/web/resources/UserProvider (Module "deployment.HFPlatform.ear:main" from Service Module Loader) 
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396) 
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:243) 
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:73) 
    at org.jboss.modules.Module.loadModuleClass(Module.java:517) 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:182) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) 
    at org.jboss.resteasy.spi.ResteasyDeployment.registerProvider(ResteasyDeployment.java:499) [resteasy-jaxrs-2.3.2.Final.jar:] 
    at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:305) [resteasy-jaxrs-2.3.2.Final.jar:] 
    at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:225) [resteasy-jaxrs-2.3.2.Final.jar:] 
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:67) [resteasy-jaxrs-2.3.2.Final.jar:] 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36) [resteasy-jaxrs-2.3.2.Final.jar:] 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:952) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:188) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] 
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
    . 
    . 
    . 
Caused by: java.lang.NoClassDefFoundError: com/sun/jersey/spi/inject/InjectableProvider 
    at java.lang.ClassLoader.defineClass1(Native Method) [classes.jar:1.6.0_65] 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) [classes.jar:1.6.0_65] 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621) [classes.jar:1.6.0_65] 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) [classes.jar:1.6.0_65] 
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:327) 

다음 클래스 문제를 해결하기 위해 jersey jar를 추가했습니다.

Caused by: java.lang.NoClassDefFoundError: com/sun/jersey/spi/inject/InjectableProvider 

는 그런 다음

13:56:11,021 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00001: Failed to start service jboss.deployment.unit."HFPlatform.ear".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."HFPlatform.ear".POST_MODULE: Failed to process phase POST_MODULE of deployment "HFPlatform.ear" 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [classes.jar:1.6.0_65] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [classes.jar:1.6.0_65] 
    at java.lang.Thread.run(Thread.java:695) [classes.jar:1.6.0_65] 
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011232: Only one JAX-RS Application Class allowed. com.sun.jersey.api.core.ScanningResourceConfig com.sun.jersey.api.core.WebAppResourceConfig com.sun.jersey.server.impl.application.DeferredResourceConfig com.sun.jersey.api.core.ResourceConfig com.sun.jersey.api.core.ClassNamesResourceConfig com.sun.jersey.api.core.ClasspathResourceConfig com.sun.jersey.api.core.ApplicationAdapter org.apache.hadoop.hbase.rest.ResourceConfig com.sun.jersey.api.core.PackagesResourceConfig com.sun.jersey.api.core.DefaultResourceConfig 
    at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:209) 
    at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:101) 
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 

날이 문제를 해결하기 위해 도와주세요 다음과 같은 문제를주고 시작합니다. 독립형 HBase는 저지없이 작동하지만 JBoss에서는 작동하지 않습니다.

답변

1

예외는 하나 이상의 JAX-RS 제공자가 있다는 것입니다. 기본적으로 Jboss는 resteasy 항아리가 제공됩니다. 클래스 패스에서 resteasy 개를 제거하십시오. 작동해야합니다.

또는

확인 다른 JAX-RS 제공자 항아리 클래스 경로에 있습니다.

+0

resteasy jars를 사용하고 싶습니다. 나는 저지가 다른 jax-rs 제공자를 데려 올 것이라고 생각한다. 나는 그것을 할 수없는 다른 jax-rs 공급자를 제거하고 싶다. jboss에게 resteasy jars 만 사용하고 ohters는 무시하도록 요청할 수 있습니까? – subhashlg26

+0

org.apache.hadoop.hdfs.web.resources.UserProvider 클래스는 jersey를 JAX-RS 제공자로 사용합니다. 클래스 코드를 확인할 수 있습니다. 같은 클래스를 사용하는 경우 resteasy 대신 Jersey를 사용해야합니다. – Neeraj

관련 문제