2013-10-18 4 views
0

을 이끌 나는 reliably get client IP address in CXF JAX-WS 할 수있는 능력이 필요하고 그래서 난 내 웹 서비스에 다음 코드를 추가 수입 :PhaseInterceptorChain와 HttpServletRequest의 AbstractEndpointFactory에 ClassNotFoundException가

import javax.servlet.http.HttpServletRequest; 
import org.apache.cxf.message.Message; 
import org.apache.cxf.phase.PhaseInterceptorChain; 
import org.apache.cxf.transport.http.AbstractHTTPDestination; 

그리고에 다음 종속성을 추가 내 pom.xml :

<dependency> <!-- PhaseInterceptorChain & Message --> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-api</artifactId> 
     <version>2.4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http</artifactId> 
     <version>2.2.3</version> 
    </dependency> 
    <dependency> <!-- HttpServletRequest --> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <!-- scope>provided</scope --> 
    </dependency> 
012 (!) 나는 결과 성공적으로 빌드를 배포 할 때 3,516,

는하지만, 톰캣 (7.0.42)는 예외를 throw 전쟁 파일을로드 할 거부 ...

org.springframework.beans.factory.BeanDefinitionStoreException: 
    Unexpected exception parsing XML document from class path resource [beans.xml]; 
    nested exception is org.springframework.beans.FatalBeanException: 
     Invalid NamespaceHandler class [org.apache.cxf.jaxws.spring.NamespaceHandler] for namespace [http://cxf.apache.org/jaxws]: 
     problem with handler class file or dependent class; 
      nested exception is java.lang.NoClassDefFoundError: org/apache/cxf/endpoint/AbstractEndpointFactory 

Caused by: org.springframework.beans.FatalBeanException: 
    Invalid NamespaceHandler class [org.apache.cxf.jaxws.spring.NamespaceHandler] 
    for namespace [http://cxf.apache.org/jaxws]: 
    problem with handler class file or dependent class; 
    nested exception is java.lang.NoClassDefFoundError: org/apache/cxf/endpoint/AbstractEndpointFactory 

... 분명히

Caused by: java.lang.ClassNotFoundException: org.apache.cxf.endpoint.AbstractEndpointFactory 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 

가 뭔가 런타임에 필요한 모듈을 제공 내 pom.xml에서 누락되었습니다. 내가 뭘 놓치고 있니?

답변

1

수수께끼가 풀렸다.

입니다
<version>2.4.0</version> 

, cxf-api 유물의 버전에 걸쳐 CXF 버전과 일치하지 않았다

문제는이 줄을이었다 모두의 이익을 위해 나는 문제의 근본 원인과 솔루션을 제공하고있다 프로젝트 (및 pom.xml).

내가 문제를 해결하기 위해해야 ​​할 일을했을 모든

는 해당 라인을 변경했다 : cxf.version2.7.1로 이전에 정의 된

<version>${cxf.version}</version> 

.

결론 : CXF 의존성/패키지/플러그인 버전은 pom.xml 전체에서 일치해야합니다 (그렇지 않으면 "청어 청어"가 생깁니다).

관련 문제