Я пытаюсь сделать простое приложение WAS/Spring/JMS. Я захватываю фабрику соединений и пункт назначения для JMS из WAS с использованием JNDI. Я пытаюсь использовать эти объекты с помощью Spring JMS, но я не могу получить правильное кастинг. Я попробовал лить фабрику соединений в javax.jms.ConnectionFactory
и javax.jms.QueueConnectionFactory
. Должен ли я использовать какой-то завод пружинных соединений? Любая помощь приветствуется. WAS 8.5 и Spring 4.2.4.RELEASE.Ошибка при использовании IBM WAS ConnectionFactory и Spring
@Bean
public ConnectionFactory jndiConnectionFactory() throws NamingException {
JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
jndiObjectFactoryBean.setJndiName("jms/qcfBindingsXa");
jndiObjectFactoryBean.setLookupOnStartup(true);
jndiObjectFactoryBean.setCache(true);
jndiObjectFactoryBean.setResourceRef(true);
jndiObjectFactoryBean.setProxyInterface(javax.jms.ConnectionFactory.class);
jndiObjectFactoryBean.afterPropertiesSet();
return (ConnectionFactory) jndiObjectFactoryBean.getObject();
}
@Bean
public Destination destination() throws NamingException {
JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
jndiObjectFactoryBean.setJndiName("jms/app/insertQ");
jndiObjectFactoryBean.setLookupOnStartup(true);
jndiObjectFactoryBean.setCache(true);
jndiObjectFactoryBean.setResourceRef(true);
jndiObjectFactoryBean.setProxyInterface(javax.jms.Destination.class);
jndiObjectFactoryBean.afterPropertiesSet();
return (Destination) jndiObjectFactoryBean.getObject();
}
@Bean
public DefaultMessageListenerContainer messageListenerContainter() throws NamingException{
DefaultMessageListenerContainer messageListenerContainter = new DefaultMessageListenerContainer();
messageListenerContainter.setDestination(destination());
messageListenerContainter.setConnectionFactory(jndiConnectionFactory());
//messageListenerContainter.setMessageConverter(messageConverter());
messageListenerContainter.setMessageListener(messageListener());
messageListenerContainter.setSessionTransacted(true);
messageListenerContainter.setDestinationResolver(destinationResolver());
messageListenerContainter.afterPropertiesSet();
return messageListenerContainter;
}
Ошибка:
2016-02-12 09:51:03,493 ERROR o.s.j.l.DefaultMessageListenerContainer - Could not refresh JMS Connection for destination 'queue:///APP.INPUT.OC' - retrying using FixedBackOff{interval=5000, currentAttempts=0, maxAttempts=unlimited}. Cause: AOP configuration seems to be invalid: tried calling method [public abstract javax.jms.Connection javax.jms.ConnectionFactory.createConnection() throws javax.jms.JMSException] on target
[[email protected]_
managed connection factory = [email protected]_
connection manager = [email protected]_
restricted methods enabled = false];
nested exception is java.lang.IllegalArgumentException: object is not an instance of declaring class +[]