2016-05-13 126 views
0

我打电话给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> 
+0

我对web服务使用doTry/doCatch(http://camel.apache.org/try-catch-finally.html),创建一个错误消息并设置响应代码。在此之后 - 当您使用无效的XML时,解析将在CXF端点上失败,并且路线甚至不涉及。 – gusto2

+0

你可以发布你的代码,以便我们可以看到你在做什么? –

+0

doTry/doCatch为Web服务工作 - 谢谢!它不会帮助解组jaxb虽然..应该包装在doTry块以及?我相信它会起作用,但这是必要的吗?你知道为什么onException不会与Web服务一起工作吗?事实上,一个错误正在被抛出而不是异常呢? – kinsey

回答

0

不正确的骆驼上下文XML文件被运行时使用抓到..忽略问题!