Der Versuch, einen Nicht-XML-JMS-Listener mit Spring 4 und ActiveMQ zu implementieren. Mein Problem ist, dass ich die folgenden Fehler mit meinem Klienten erhalte:Authentifizierung für @ JmsListener mit Spring 4.2-Anmerkungen und ActiveMQ
Setup of JMS message listener invoker failed for destination 'topic.FromJndiProperties' [...]
Cause: The JMS connection has failed: Force close due to SecurityException on connect.
Cause: User name [null] or password is invalid.
So ist die Verbindung zum Ziel mit Benutzername und Passwort null gemacht wird. Ich denke, dass ich das ZielResolver nicht korrekt eingerichtet habe, aber ich bin dabei, herauszufinden, wie ich das beheben kann. Kann mir jemand helfen, das zu beheben?
Mein AppConfig:
@Autowired
private Environment env;
@Autowired
private BeanFactory springContextBeanFactory;
@Bean
public DefaultJmsListenerContainerFactory myListenerContainerFactory() throws NamingException {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, env.getProperty("java.naming.factory.initial"));
props.setProperty(Context.PROVIDER_URL, env.getProperty("java.naming.provider.url"));
props.setProperty(Context.SECURITY_PRINCIPAL, env.getProperty("java.naming.security.principal"));
props.setProperty(Context.SECURITY_CREDENTIALS, env.getProperty("java.naming.security.credentials"));
Context jndiContext = new InitialContext(props);;
ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("ConnectionFactory");
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setDestinationResolver(new BeanFactoryDestinationResolver(springContextBeanFactory));
factory.setPubSubDomain(true);
factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
return factory;
}
Der Zuhörer:
@JmsListener(containerFactory = "myListenerContainerFactory", destination = "topic.FromJndiProperties")
public void receiveMessage(String message) {
try {
System.out.println("Received <" + message + ">");
} catch (Exception e) {
e.printStackTrace();
}
}
Hallo Sundar. Danke für den Hinweis. Diese Werte werden jedoch bereits eingestellt. Ich denke, es ist etwas seltsam, wie das Ziel/die Session erstellt wird. – Dan