apache camel:可能有不明确的方法调用:JmsMessage

时间:2014-01-10 10:03:28

标签: java apache-camel

我正在使用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。怎么解决这个问题?

2 个答案:

答案 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>