2014-05-19 4 views
0

경로 내에 들어오는 모든 메시지를 처리하고 데이터베이스에 저장하는 작업이 있습니다. 내 경로가 webservice (camel-cxf)로 시작한 다음 ejb로 처리하여 비누 응답을 반환합니다.Camel + sql + 오류 처리

나는 camel-sql 구성 요소를 사용하기로 결정했습니다. 지금까지 내가 로깅 수신 메시지에 어떤 문제가 발생하지 않는 :

<camelContext id="InstitutionContext" xmlns="http://camel.apache.org/schema/spring"> 

    <onException> 
     <exception>org.example.MyException</exception> 
     <continued><constant>true</constant></continued> 
     <to uri="bean:myExceptionHandler?method=handle" /> 
    </onException> 

    <route id="InstitutionRoute" > 
     <from uri="direct:start" /> 
     <to uri="sql:insert into translog(id,type,data) values(2,'IN',#)" /> 
     <split> 
      <tokenize token="\n" /> 
      <unmarshal> 
       <csv delimiter=";" /> 
      </unmarshal> 
      <process ref="InstitutionProcessorTest" /> 
     </split> 
     <to uri="bean:myExceptionHandler?method=checkErrors" /> 
    </route> 

</camelContext> 

을하지만 예외를 처리하고 SOAP 메시지의 형태에 저장하는 방법을 생각하지 않습니다.

<onCompletion onFailureOnly="true"> 
    <to uri="sql:insert into translog(id,type,data) values(2,'ERROR',#)" /> 
</onCompletion> 

그러나 원래의 메시지는 데이터 열에 저장됩니다. 도울 수있는 시체가 있습니까?

답변

0

나는 오해 할 수도 있지만 예외가있는 경우 XML 형식으로 SOAP 메시지를 저장하려고합니다.

기본적으로 CXF 용 dataFormat은 낙하 경로 주변에서 POJO를 전송한다는 의미의 POJO입니다. 즉, SOAP XML은 POJO로 변환됩니다.

두 가지 옵션이 마음에 와서 :

  1. 는 메시지 또는 페이로드에 DATAFORMAT을 설정합니다. 그러면 POJO가 아닌 낙타 경로를 통해 XML 메시지가 전송됩니다.
  2. POJO를 XML 메시지로 마샬링하고 저장합니다.
+0

감사합니다. 시도해 보겠습니다. –