我的任务是处理路由中的所有传入消息,并将它们保存到数据库中。我的路由从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> 但是它将原始消息保存在数据列中。有谁能帮忙吗?
发布于 2014-05-20 03:47:55
我可能误解了这个问题,但如果有异常,您似乎正在尝试以XML格式保存SOAP消息。
默认情况下,CXF的dataFormat是POJO,这意味着它在camel路由周围发送POJO,即SOAP被转换为POJO。
我想到了两个选择:
https://stackoverflow.com/questions/23733065
复制相似问题