Pinned topic More information on JMSMQ1113 please
We are receiving the following exception while trying to connect to a simple queue manager residing on same server with queues using our application. It just fails to connect with no other information except below. What does this exception mean as IBM InfoCenter has the same information as below and nothing more anywhere on the web
2012-04-05 09:36:45,404DefaultMessageListenerContainer-31 ERROR org.springframework.jms.listener.DefaultMessageListenerContainer (Lo
gger.java:328) - Setup of JMS message listener invoker failed - trying to recover
2012-04-05 09:36:45,450com.ibm.msg.client.jms.DetailedJMSException: JMSMQ1113: The destination does not have a name set. An attempt was made to
use a MQQueue or MQTopic that was created with the default constructor. A name should have then been set before the queue was used. After creatio
n set a name on the MQQueue or MQTopic.
at sun.reflect.GeneratedConstructorAccessor38.newInstance(Unknown Source)
mbw 100000TM2G50 Posts
Re: More information on JMSMQ1113 please2012-04-12T13:55:55ZThis is the accepted answer. This is the accepted answer.When creating a message consumer or message producer an object implementing JMS Destination is required. This has to be either a topic or queue - and in practical terms will be an instance of either com.ibm.mq.jms.MQQueue or com.ibm.mq.jms.MQTopic.
When either of these objects is created a string giving the actual queue or topic name must be specified. If you are creating the objects yourself in a program that's easy to do. If the objects are in JNDI then the tooling will have done this for you.
The bit to focus on is
JMSMQ1113: The destination does not have a name set. An attempt was made to
use a MQQueue or MQTopic that was created with the default constructor. A name should have then been set before the queue was used. After creation set a name on the MQQueue or MQTopic.
What this error is saying is that a MQQueue or MQTopic object is being used that hasn't been created correctly. These objects do have default constructors that don't set a name. These are there for historic reasons and must not be used. At the very least if they are used a name should be set on the object before actual use eg creating a consumer.
In this case it looks like Spring is involved in creating the objects; so the question to ask is why has Spring created a MQQueue object via a constructor that didn't specify a name.
Sadly though that's not something I can help with.
Re: More information on JMSMQ1113 please2012-04-13T11:19:28ZThis is the accepted answer. This is the accepted answer.mbw, Many thanks for that detailed explanation.
What we do here is that we generate JMS bindings on MQ, which are then used by the application (Spring) to bind to the MQ. On further investigation we found our MQ Admin had modified JMSAdmin script to include incorrect MQ Lib path, which caused the bindings file to generate, however I believe the name was missed. Spring used this bindings, created a MQQueue object without a name which caused this issue.
Thanks again, you explanation of this issue was very valid in the context where this issue occurred.
MacIzem 310002MT0G1 Post
Re: More information on JMSMQ1113 please2017-02-15T15:50:30ZThis is the accepted answer. This is the accepted answer.
Hi NishanthBhandary and mbw,
I hope you are doing great :)
Excuse me, I'm encountering the same problem JMSMQ1113!
Could you please tell me what did you do to resolve this issue?
Thank you in advance.