2017-02-04 3 views
0

매우 신참 오전 Apache CXF이고 외부 서버에서받은 SOAP 메시지에서 네임 스페이스를 제거하는 문제가 있습니다. 서비스)서버에서받은 비누 메시지에서 네임 스페이스를 제거하는 방법

wsdl에서 생성 된 스텁은 @WebResult에서 다른 네임 스페이스를 갖지만 서버 시스템에서받은 SOAP 봉투는 다릅니다. 클라이언트 유효성 검사가 실패하지 않도록 응답 메시지에서 네임 스페이스를 제거하기 위해 일반 솔루션을 적용하려고합니다.

o.a.c.p.PhaseInterceptorChain - 인터셉터에 대한 {http://www.abc.xyz/webservices/facade} 서비스 # {http://www.abc.xyz/webservices/facade} 여기서 serviceName이 예외를 던져 지금

org.apache.cxf.interceptor.Fault을 풀기있다 : 예기치 않은 요소 {http://www.abc.xyz/webservices/facade} serviceResponse이 발견했다. 예상되는 {http : // www.abc.xyz/webservices/facade/ xxx} serviceResponse.

친절히 도움.

솔루션 시도 지금까지 :

(CXF 변환 기능)이 방법에서

Map<String, String> inTransformMap = Collections.singletonMap("{http:// www.abc.xyz/webservices/facade/**xxx**}serviceResponse", ""); 
org.apache.cxf.interceptor.transform.TransformInInterceptor transformInInterceptor = new org.apache.cxf.interceptor.transform.TransformInInterceptor(); 
transformInInterceptor.setInTransformElements(inTransformMap); 
proxy.getInInterceptors().add(transformInInterceptor); 

, 나는 "", 서버 중단으로 {http://www.abc.xyz/webservices/facade/**xxx**}serviceResponse를 교체하려고 그것은 org.apache에서 무한 루프로 전환 할 때 .cxf.staxutils.transform.InTransformReader.handleDeepDrop() 라인 (266)

+0

스택 오버플로에 오신 것을 환영합니다! 우리는 질문 - 응답 사이트이며, 코더 - 투 - 고용 서비스는 아닙니다. 지금까지 시도한 것과 왜 효과가 없는지 설명하십시오. See : [왜 누군가가 나를 도울 수 있습니까? " 실제 질문이 아닙니까?] (http://meta.stackoverflow.com/q/284236) –

답변

0

는 드디어 다음

하여이 문제를 해결할 수 있었다
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 
Map<String, Object> props = factory.getProperties(); 
if (null == props) { 
    props = new HashMap<String, Object>(); 
} 
props.put("soap.no.validate.parts", true); 
factory.setProperties(props); 

위의 솔루션을 사용하면 들어오는 응답 유효성 검사를 해제 할 수 있으므로 org.apache.cxf.interceptor.Fault와 같은 예외는 없습니다. 예기치 않은 요소.