我正在使用JbossFuse进行骆驼项目。我在这里使用蓝图。现在我想要的是,当任何路由中出现任何异常时,它将由某个处理器处理,并且有效的响应将返回给客户端。
答案 0 :(得分:1)
您可以使用try catch覆盖蓝图文件中的任何路由,并处理对客户端的最终响应。逻辑将类似于:
<route id="route_1">
<from id="_from_1" uri="direct:processDemo1"/>
<doTry id="_doTryDemo1">
<process id="_process_processDemo1" ref="processorBean"/>
<doCatch id="_doCatchDemo1">
<exception>java.lang.Exception</exception>
<to id="_handleExceptionDemo1" uri="direct:HandleException_demo1"/>
</doCatch>
<doFinally id="_doFinallyDemo1">
<log id="_log_Demo1Process_finally" message="Demo1 operation completed"/>
</doFinally>
</doTry>
</route>
这里processorBean
是处理Demo1路由的Bean类,而uri="direct:HandleException_demo1"
是另一个路由,如果Demo1路由中有异常,则将调用该路由。因此,该路由的例外路由将是
<route id="routeDemo1Exception">
<from id="_fromdemo1Exception" uri="direct:HandleException_demo1"/>
<log id="log_demo1Exception" message="Demo1 Exception called"/>
<process id="_process_exception_Demo1" ref="processDemo1ExceptionBean"/>
</route>