StompConnect can not deliver messages to Jboss if name of destination contains / (slash)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

StompConnect can not deliver messages to Jboss if name of destination contains / (slash)

Alexander L.
Hello all,

Configuration is:
- C++ client (ActiveMQ CMS over Stomp) is sender
- JBoss 5.0 with MQ and MDB is receiver. StompConnect's thread is working inside JBoss

When the name of the JMS topic is laconic "SERVER", c++ client sends message to topic "SERVER", and MDB listening for messages from topic "SERVER", everything is transmitted well.

But when the name of the JMS  topic is "SERVER/TOP"  (there is slash in the name), c++  client sends message to topic "SERVER/TOP", and MDB listening for messages from topic "SERVER/TOP", an exception is thrown on JBoss side. Full stack of exception is at the end of this message.

However, at the same time when the name of the JMS  topic is "SERVER/TOP", but c++  client sends message to topic "SERVER", and MDB still listening for messages from topic "SERVER/TOP", message is received properly. That case is detected accidentally.

Can anybody explain such a strange behaviour?

Exception:
11:42:21,562 ERROR [ExceptionUtil] SessionEndpoint[7b-y2923txf-1-zooy2txf-2p9g2a-w30b3a] createTopic [8b-y2923txf-1-zooy2txf-2p9g2a-w30b3a]
javax.jms.JMSException: There is no administratively defined topic with name:SERVER/TOP
        at org.jboss.jms.server.endpoint.ServerSessionEndpoint.createTopic(ServerSessionEndpoint.java:321)
        at org.jboss.jms.server.endpoint.advised.SessionAdvised.org$jboss$jms$server$endpoint$advised$SessionAdvised$createTopic$aop(SessionAdvised.java:110)
        at org.jboss.jms.server.endpoint.advised.SessionAdvised$createTopic_N1144803973659535745.invokeTarget(SessionAdvised$createTopic_N1144803973659535745.java)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
        at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.jms.server.endpoint.advised.SessionAdvised.createTopic(SessionAdvised.java)
        at org.jboss.jms.wireformat.SessionCreateTopicRequest.serverInvoke(SessionCreateTopicRequest.java:74)
        at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
        at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:908)
        at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:106)
        at org.jboss.remoting.Client.invoke(Client.java:1708)
        at org.jboss.remoting.Client.invoke(Client.java:612)
        at org.jboss.remoting.Client.invoke(Client.java:600)
        at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
        at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
        at org.jboss.jms.client.delegate.ClientSessionDelegate.org$jboss$jms$client$delegate$ClientSessionDelegate$createTopic$aop(ClientSessionDelegate.java:353)
        at org.jboss.jms.client.delegate.ClientSessionDelegate$createTopic_N1144803973659535745.invokeTarget(ClientSessionDelegate$createTopic_N1144803973659535745.java)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
        at org.jboss.jms.client.container.FailoverValveInterceptor.invoke(FailoverValveInterceptor.java:92)
        at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
        at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:86)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.jms.client.delegate.ClientSessionDelegate.createTopic(ClientSessionDelegate.java)
        at org.jboss.jms.client.JBossSession.createTopic(JBossSession.java:260)
        at org.codehaus.stomp.jms.StompSession.convertDestination(StompSession.java:96)
        at org.codehaus.stomp.jms.StompSession.sendToJms(StompSession.java:71)
        at org.codehaus.stomp.jms.ProtocolConverter.onStompSend(ProtocolConverter.java:260)
        at org.codehaus.stomp.jms.ProtocolConverter.onStompFrame(ProtocolConverter.java:132)
        at org.codehaus.stomp.tcp.TcpTransport.run(TcpTransport.java:131)
        at java.lang.Thread.run(Thread.java:619)
Reply | Threaded
Open this post in threaded view
|

Re: StompConnect can not deliver messages to Jboss if name of destination contains / (slash)

Alexander L.

Alexander L. wrote
Hello all,

Can anybody explain such a strange behaviour?

This is a bug of JBoss Messaging 1.x.
Workaround is to have destination names without slashes at all.