MDB consuming from temporary JMS destination with '/' characters broken in JBoss EAP CP

Solution Verified - Updated -

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 4.3 CP08

Issue

We use MDBs which consume messages from destinations which aren't explicitly defined.  Because they aren't explicitly defined the container creates temporary destinations automatically when the MDBs are deployed.  In JBoss Enterprise Application Platform (EAP) 4.3 CP07 this worked when the destinations had '/' characters in the name.  However, in JBoss EAP 4.3 CP08 this no longer works.  An error like this is thrown:

INFO [EJBContainer] STARTED EJB: com.redhat.example.ExampleEJB3MDB ejbName: ExampleEJB3MDB 
WARN [MessagingContainer] Could not find the queue destination-jndi-name=queue/example/tests/myqueue/ver1 
WARN [MessagingContainer] destination not found: queue/example/tests/myqueue/ver1 reason: javax.naming.NameNotFoundException: example not bound 
WARN [MessagingContainer] creating a new temporary destination: queue/example/tests/myqueue/ver1 
ERROR [ExceptionUtil] Queue[(destination.getName() == NULL)] startService 
java.lang.IllegalStateException: The queue name should not contain forward slash: example/tests/myqueue/ver1 
    at org.jboss.jms.server.destination.DestinationServiceSupport.startService(DestinationServiceSupport.java:108) 
    ...

Resolution

Apply JBPAPP-4481 to restore the default behaviour.

Root Cause

https://jira.jboss.org/browse/JBMESSAGING-1807

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.