我有一个任务来处理路由中的所有传入消息并将它们保存到数据库。 我的路由从webservice(camel-cxf)开始,然后处理到ejb并返回soap响应。
我决定使用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 :(得分:0)
我可能误解了这个问题,但是如果有异常,它看起来你正试图以XML格式保存SOAP消息。
默认情况下,CXF的dataFormat是POJO,意味着它在camel路由周围发送POJO,即SOAP XML转换为POJO。
有两种选择: