2014-11-21 3 views
3

JBoss EAP 6.3에 jax-rs 구현을 사용하여 REST API를 배포하려고합니다. 이는 WAR 아카이브에 제공되는 2.7.x11을 기반으로합니다.JBoss EAP 6.3 + cxf 2.7.11 jax-rs가 발생합니다.

12:22:14,627 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/my-app-1.0-SNAPSHOT].[CXFServlet]] (http-/127.0.0.1:8080-2) JBWEB000236: Servlet.service() for servlet CXFServlet threw exception: java.lang.NoSuchMethodError: javax.ws.rs.ClientErrorException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status$Family;)Ljavax/ws/rs/core/Response; 
at javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127) [javax.ws.rs-api-2.0-m10.jar:2.0-m10] 
at org.apache.cxf.jaxrs.utils.SpecExceptions.toHttpException(SpecExceptions.java:110) [cxf-rt-frontend-jaxrs-2.7.13.jar:2.7.13] 
at org.apache.cxf.jaxrs.utils.ExceptionUtils.toHttpException(ExceptionUtils.java:149) [cxf-rt-frontend-jaxrs-2.7.13.jar:2.7.13] 
at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:477) [cxf-rt-frontend-jaxrs-2.7.13.jar:2.7.13] 
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:196) [cxf-rt-frontend-jaxrs-2.7.13.jar:2.7.13] 
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88) [cxf-rt-frontend-jaxrs-2.7.13.jar:2.7.13] 
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:241) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] 
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262) [cxf-rt-transports-http-2.7.13.jar:2.7.13] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19] 
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19] 
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.4.0.Final-redhat-19.jar:7.4.0.Final-redhat-19] 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_09] 

내가 JBoss에 배포-structure.xml에 RESTEasy가 제외하려하지만 도움이되지 않습니다 : 현재 내가 전화를 다음과 같은 오류 (예상 404)이 아닌 기존 URL을 얻고있다

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
     <exclude-subsystems> 
      <subsystem name="resteasy" /> 
      <subsystem name="jaxrs" /> 
      <subsystem name="webservices" /> 
     </exclude-subsystems> 
     <exclusions> 
      <module name="javax.ws.rs.api" /> 
      <module name="org.apache.cxf" /> 
      <module name="org.apache.cxf.impl" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

CXF 버전 2.6.16이 정상적으로 작동합니다.

cxf-rt-frontend-jaxrs의 전이 종속성이있는 javax.ws.rs-api-2.0-m10에 문제가있는 것 같지만, 이것을 제외하면 jax-rs API에 대한 ClassNotFoundException이 발생합니다 수업.

이 문제에 대한 해결책이 있습니까?

+0

는 클래스 패스 어딘가에 추가 jsr311 API가 있습니까? – soilworker

+0

제공 범위 : org.jboss.resteasy : jaxrs-api : jar : 2.1.0.GA : 제공된 – Konrad

답변

1

당신은 cxf 2.6.x에서는 작동하지만 2.7.x에서는 작동하지 않는다고 언급했습니다. 그래서 마이그레이션 가이드 http://cxf.apache.org/docs/27-migration-guide.html 따라야한다고 생각 : 당신이 (1.1 JAX-RS) API JSR-311에 대한 응용 프로그램 번들을 컴파일 한 경우 OSGI 에서

JAX-RS 엔드 포인트를 그들을 CXF 실행 좀하고 싶습니다 2.7.x에서 JSR-339 (JAX-RS 2.0) API에 대해 다시 컴파일하지 않고 에 "javax.ws.rs", "javax.ws.rs.core"및 "javax.ws.rs.ext"가 "[1.1, 3]"버전 범위를 사용하고 org.apache.servicemix.specs.jsr339-api-m10-2.1.0 스펙 번들을 사용하거나 org.apache.servicemix.specs.jsr339-api-m10-2.2.0을 사용하십시오 spec 번들이 릴리스 될 때 번들.

종류와 관련, soilworker

+0

jboss 모듈을 검사 한 결과 cxf 2.7.11 병이 있다는 것을 발견했습니다. 마이그레이션이 필요 없다고 생각했습니다. '$ 찾기. -type f -name "* cxf *" ./system/layers/base/org/apache/cxf/main/cxf-api-2.7.11.redhat-3.jar ./system/layers/base/org /apache/cxf/impl/main/cxf-rt-transports-http-2.7.11.redhat-3.jar ...' – Konrad

+1

그러나 응용 프로그램은 2.6.x에서 작동합니다. 제 의견으로는 마이그레이션 가이드에서 위에 언급 한 오류를 유발하는 추가 jsr-311.jar 또는 뭔가에 대한 힌트가 있어야합니다. – soilworker

관련 문제