我有一個構建於Spring 4.1上的應用程序。我正在嘗試使用XML配置創建JMS Listener並嘗試將傳入的XML消息轉換爲Java對象。下面是我的XML配置:使用Spring JMS時未調用偵聽器方法
<jms:listener-container concurrency="10"
connection-factory="connectionFactory"
message-converter="marshallingMessageConverter">
<jms:listener destination="destination.name" ref="messageListener" method="processMessage"/>
</jms:listener-container>
<bean id="messageListener" class="com.example.CustomMessageListener">
</bean>
<bean id="marshallingMessageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
<property name="marshaller" ref="xmlMarshaller"/>
<property name="unmarshaller" ref="xmlMarshaller"/>
</bean>
<bean id="xmlMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound" value="com.example.CustomObject"/>
</bean>
的Class com.example.CustomMessageListener
看上去象下面這樣:
public class CustomMessageListener{
public void processMessage(Message message, CustomObject object){
//Do Something.
}
現在,當我發佈一條消息到目標隊列,在監聽的方法processMessage()
是沒有得到所謂的,我我越來越春季日誌下面的錯誤:
Failed to invoke target method 'processMessage' with arguments {[email protected]};
nested exception is java.lang.NoSuchMethodException:
com.example.CustomMessageListener.processMessage(com.example.CustomObject).
現在,如果我改變Listerner方法的參數,只是接受CustomObjec T,它的工作原理和我從XML正確構造的CustomObject:
public void processMessage(CustomObject, object)
但我也需要原始javax.jms.Message
實例,並根據this文件,應該可以通過在參數,指定要接收該實例名單。
有人可以請幫我在這裏?
是的,它是可能的,但如果你看看這是聽衆不聽者的XML定義的版本的註釋版本的文檔。 –