2014-05-14 3 views
5

내가 보스 퓨즈 6.1-마지막을 사용하고웹 서비스 엔드 포인트가

<route> 
    <from uri="cxf:bean:synchronousEndpoint"/> 
    <log message="Service invoked." /> 
    <process ref="simpleProcessor"/> 
</route> 

simpleProcessor에 내가 올바른 응답을 걸었습니다 (예 : 해당 JAXB 객체)를 컨텍스트에 추가합니다. 그러나, 그것은 오류로 응답

Caused by: java.lang.ClassCastException: java.lang.Object cannot be cast to org.w3c.dom.Element 

어떤 힌트이나 제안이 여기

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
      <faultcode>soap:Server</faultcode> 
      <faultstring>Marshalling Error: java.lang.Object cannot be cast to org.w3c.dom.Element</faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

는 스택 추적입니까?

답변

0

bit는 simpleProcessor에서 더 많은 코드를 보지 않고 말하기가 어렵습니다. 그러나 잘못된 dataFormat 매개 변수를 사용하고있는 것처럼 보입니다.

CXF 컴포넌트 중 임의의 것일 수 DATAFORMAT 매개 변수가 다음

  • POJO : POJO에은 (보통 오래된 자바 오브젝트)를 방법에 Java 파라미터는 타깃에서 호출되고 섬기는 사람. 프로토콜과 논리적 모두 JAX-WS 핸들러가 지원됩니다.

  • PAYLOAD 다음 CXF 엔드 포인트에 메시지 구성 후에 적용 은 : 페이로드는 메시지 페이로드 (본체 비누의 내용)이다. 프로토콜 JAX-WS 핸들러 만 지원됩니다. 논리적 인 JAX-WS 핸들러는 지원되지 않습니다.

  • 메시지 : MESSAGE는 전송 계층에서받은 원시 메시지입니다. 당신이 이 종류의 DataFormat을 사용하고 있다면 CXF 인터셉터가 제거되어 camel-cxf 소비자와 JAX-WS 핸들러가 비누 헤더를 볼 수 없도록 스트림을 만지거나 변경한다고 가정합니다. 지원되지 않습니다.

  • CXF_MESSAGE : 낙타 2.8.2의 새로운 기능은 CXF_MESSAGE 원시 SOAP 메시지

기본으로 에서 전송 계층을 메시지를 변환하여 CXF 인터셉터의 전체 기능을 호출 할 수 있습니다 POJO는 XML이 전달되는 메시지가 없다는 것을 의미합니다. Camel이 객체를 전달 중입니다. I 용의 XML로 응답을 조작하려 할 때 문제가 발생할 수 있습니다.

나는 POJO를 수신 할 때 XML에 XPATH 쿼리를 수행함으로써 POJO를 XML로 변환하려고 시도하면서 여기서 비슷한 점을 발견했다.

관련 문제