I've been trying to create a MDP to listen to messages on a queue that is on hornetq 2.2.2 which runs inside JBoss 5.1.0. My spring app is not running on the same JBoss server, but on a Jetty app server on the same host. HornetQ's samples only show the embedded JMS scenario, and didn't see anything on this forum or on hornetq's that shows how to configure spring to do this. Note that a MDB running on an ear file deployed on this JBoss instance works fine, and I want to replace it with a spring-based MDP.
Following is one of the configurations that almost works. My listener:
My spring config (snippet):Code:import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyJMSListener implements MessageListener { private static final Logger logger = LoggerFactory.getLogger(MyJMSListener.class); public void onMessage(Message message) { try { TextMessage msg = (TextMessage) message; logger.info("Consumed message: " + msg.getText()); } catch (Exception ex) { ex.printStackTrace(); } } }
And this is the resulting error (if all I need is to specify the username/password of the JMS server, just simply tell me where to specify that in the configuration, because it's not obvious to me):Code:<?xml version="1.0" encoding="UTF-8" standalone="no"?> <beans > <!-- other stuff suppressed for clarity --> <jee:jndi-lookup id="connectionFactory" jndi-name="java:/ConnectionFactory" cache="true" resource-ref="true" lookup-on-startup="true" expected-type="" proxy-interface="javax.jms.ConnectionFactory" > <jee:environment> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=jnp://localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces </jee:environment> </jee:jndi-lookup> <jee:jndi-lookup id="eventsQueue" jndi-name="/queue/MyQueue/receive" cache="true" resource-ref="true" lookup-on-startup="true" proxy-interface="javax.jms.Queue" > <jee:environment> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=jnp://localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces </jee:environment> </jee:jndi-lookup> <bean id="myListener" class="com.mycompany.MyJMSListener" /> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory"/> <property name="destination" ref="eventsQueue"/> <property name="messageListener" ref="myListener"/> </bean> </beans>
Code:ERROR [org.hornetq.core.protocol.core.impl.HornetQPacketHandler] (Old I/O server worker (parentId: 21883281, [id: 0x014de991, /127.0.0.1:5445])) Failed to create session HornetQException[errorCode=105 message=Unable to validate user: null] at org.hornetq.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:141) at org.hornetq.core.server.impl.HornetQServerImpl.createSession(HornetQServerImpl.java:916) at org.hornetq.core.protocol.core.impl.HornetQPacketHandler.handleCreateSession(HornetQPacketHandler.java:168) at org.hornetq.core.protocol.core.impl.HornetQPacketHandler.handlePacket(HornetQPacketHandler.java:84) at org.hornetq.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:474) at org.hornetq.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:496) at org.hornetq.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:457) at org.hornetq.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:459) at org.hornetq.core.remoting.impl.netty.HornetQChannelHandler.messageReceived(HornetQChannelHandler.java:73) at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:100) at org.jboss.netty.channel.StaticChannelPipeline.sendUpstream(StaticChannelPipeline.java:362) at org.jboss.netty.channel.StaticChannelPipeline$StaticChannelHandlerContext.sendUpstream(StaticChannelPipeline.java:514) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:287) at org.hornetq.core.remoting.impl.netty.HornetQFrameDecoder2.decode(HornetQFrameDecoder2.java:169) at org.hornetq.core.remoting.impl.netty.HornetQFrameDecoder2.messageReceived(HornetQFrameDecoder2.java:134) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80) at org.jboss.netty.channel.StaticChannelPipeline.sendUpstream(StaticChannelPipeline.java:362) at org.jboss.netty.channel.StaticChannelPipeline.sendUpstream(StaticChannelPipeline.java:357) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261) at org.jboss.netty.channel.socket.oio.OioWorker.run(OioWorker.java:90) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46) at org.jboss.netty.util.VirtualExecutorService$ChildExecutorRunnable.run(VirtualExecutorService.java:181) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)


Reply With Quote
