2014-01-10 15 views
0

我使用的是Apache駝峯2.12.1,並且我的多個onException語句有問題。我的路線是這樣的:apache camel:模糊的方法調用可能:JmsMessage

<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" /> 

的情況下Exception1或Exception2發生,而在豆類我的ErrorHandler正確調用處理(正確的方法綁定)。但在其他一些情況下,當我們說bean2拋出SomeOtherException我最後的onException語句有問題。

我得到的錯誤是:

歧義方法調用可能的:Bean2.method1(Foo1),Bean2.method2(foo2的),Bead2.method3(Foo3)]。交換[JmsMessage [JmsMessageID:]]

大概駱駝獲取Exchange是JmsMessage而不是我的類Foo1,Foo2。如何解決這個問題?

回答

1

你可以告訴駱駝哪種方法來調用時,其模棱兩可,比如在過去的onException的

變化

<bean ref="errorHandler" /> 

要包含方法屬性

<bean ref="errorHandler" method="nameOfMethodToCall" />