我正在使用apache camel 2.12.1,我的多个onException语句出现问题。我的路线如下:
<onException redeliveryPolicyRef="redeliveryPolicy1">
<exception>com.somePackage.Exception1</exception>
<handled>
<constant>true</constant>
</handled>
<bean ref="errorHandler" />
</onException>
<onException redeliveryPolicyRef="redeliveryPolicy2">
<exception>com.somePackage.Exception2</exception>
<handled>
<constant>true</constant>
</handled>
<bean ref="errorHandler" />
</onException>
<onException redeliveryPolicyRef="redeliveryPolicy3">
<exception>java.lang.Exception</exception>
<handled>
<constant>true</constant>
</handled>
<bean ref="errorHandler" />
</onException>
<bean ref="bean1" />
<bean ref="bean2" />
<bean ref="bean3" />
如果在bean中处理时发生Exception1或Exception2,我的errorHandler被正确调用(正确的方法绑定)。但在其他一些情况下,当我们说bean2抛出SomeOtherException时,我遇到了最后一个onException语句的问题。
我得到的错误是:
可能的模糊方法调用:[Bean2.method1(Foo1),Bean2.method2(Foo2),Bead2.method3(Foo3)]。交换[ JmsMessage [JmsMessageID:]]
可能是camel得到的是JmsMessage而不是我的类Foo1,Foo2。怎么解决这个问题?
答案 0 :(得分:1)
你可以告诉Camel当它的模糊时调用哪个方法,比如在最后的onException
更改
<bean ref="errorHandler" />
包含方法属性
<bean ref="errorHandler" method="nameOfMethodToCall" />
答案 1 :(得分:0)
就我而言,问题是两个具有相同名称的ID。
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="route">
...
<to uri="bean:processService" id="processService"/>
...
</route>
</camelContext>
<bean id="processService">
</bean>