Failed to create session
elmentecato Oct 26, 2011 1:27 PMUsing JBoss 5.1.0 + EJB3 plugin with a custom instance made up of basically default + HornetQ 2.2.2.
I have an EAR with an MDB that works well listening to messages on MyQueue/receive. Now I want to do the same from a separate application server (Jetty), but same host, using Spring 3.0.6. That is, I want to create a MDP that replaces the MDB, and will keep hornetq running as it is--embedded in JBoss.
this is my spring config:
<?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="eventReportListener"/> </bean> </beans>
My listener looks like this:
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(EventReportJMSListener.class); public void onMessage(Message message) { try { TextMessage msg = (TextMessage) message; logger.info("Consumed message: " + msg.getText()); } catch (Exception ex) { ex.printStackTrace(); } } }
When I deploy my app, I see the following on JBoss' server.log (no errors from my app running on Jetty):
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)
Looks like I just need to somehow specify credentials, but I just don't see where or how. I've looked on the spring and hornetq forums and docs and haven't found a solution. Please help!