骆驼ErrorHandler不调用
问题描述:
我打电话给WS使用cxf:cxfEndpoint和它的工作正常。我想用onException或类似的东西来捕获任何异常。由于某种原因,它不工作。我已将dataFormat设置为PAYLOAD,路径上的handleFault属性和/或骆驼上下文为true。该Web服务没有运行,所以我期待异常被捕获,但它无法正常工作。与解编XML相同的问题。骆驼ErrorHandler不调用
当我抛出使用它的异常被成功捕获使用java.lang.Exception并写入我的虚拟异常队列......但是当web服务关闭或者我传入一些无效的XML并且编组失败时,异常被投掷但没有被抓住。
还有什么需要注意的吗?
编辑:包括解编的代码。切换到使用try/catch语句,当我在无效的XML传递例外情况得到JUnit测试中捕获,但在运行时不
<route>
<from uri="jmsamq:In"/>
<doTry>
<unmarshal>
<jaxb contextPath="outbound.message"/>
</unmarshal>
<doCatch>
<exception>java.lang.Exception</exception>
<handled>
<constant>true</constant>
</handled>
<transform>
<simple>Mapping Failed</simple>
</transform>
<to uri="jmsamq:errorqueue1"/>
</doCatch>
</doTry>
<log message="${body}"/>
<multicast stopOnException="true">
<to uri="direct:webservice"/>
<to uri="direct:myqueue"/>
</multicast>
</route>
答
不正确的骆驼上下文XML文件被运行时使用抓到..忽略问题!
我对web服务使用doTry/doCatch(http://camel.apache.org/try-catch-finally.html),创建一个错误消息并设置响应代码。在此之后 - 当您使用无效的XML时,解析将在CXF端点上失败,并且路线甚至不涉及。 – gusto2
你可以发布你的代码,以便我们可以看到你在做什么? –
doTry/doCatch为Web服务工作 - 谢谢!它不会帮助解组jaxb虽然..应该包装在doTry块以及?我相信它会起作用,但这是必要的吗?你知道为什么onException不会与Web服务一起工作吗?事实上,一个错误正在被抛出而不是异常呢? – kinsey