我有一个构建于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定义的版本的注释版本的文档。 –