Topic
  • 4 replies
  • Latest Post - ‏2017-02-15T15:50:30Z by MacIzem
NishanthBhandary
NishanthBhandary
3 Posts

Pinned topic More information on JMSMQ1113 please

‏2012-04-11T20:53:14Z |
Hi

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)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39)
at java.lang.reflect.Constructor.newInstance(Constructor.java:527)
at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:313)
at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices.java:388)
at com.ibm.mq.jms.MQDestination.validateDestination(MQDestination.java:1676)
at com.ibm.mq.jms.MQQueueSession.createReceiver(MQQueueSession.java:118)
at com.ibm.mq.jms.MQQueueSession.createConsumer(MQQueueSession.java:196)
at org.springframework.jms.listener.DefaultMessageListenerContainer.createConsumer(DefaultMessageListenerContainer.java:810)
at org.springframework.jms.listener.DefaultMessageListenerContainer.createListenerConsumer(DefaultMessageListenerContainer.java:443)
at org.springframework.jms.listener.DefaultMessageListenerContainer.doReceiveAndExecute(DefaultMessageListenerContainer.java:520)
at org.springframework.jms.listener.DefaultMessageListenerContainer.receiveAndExecute(DefaultMessageListenerContainer.java:459)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerCont
ainer.java:889)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:
842)
at org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:203)
at java.lang.Thread.run(Thread.java:736)

Cheers
Nishanth
Updated on 2012-04-13T11:19:28Z at 2012-04-13T11:19:28Z by NishanthBhandary
  • NishanthBhandary
    NishanthBhandary
    3 Posts

    Re: More information on JMSMQ1113 please

    ‏2012-04-11T20:54:54Z  
    More Information

    WebSphere MQ -- 7.0.1.7
    WebSphere Application Server - 7.0.0.21
    AIX 6.1 (Both of above are on this server)

    Cheers
    Nishanth
  • mbw
    mbw
    50 Posts

    Re: More information on JMSMQ1113 please

    ‏2012-04-12T13:55:55Z  
    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.
  • NishanthBhandary
    NishanthBhandary
    3 Posts

    Re: More information on JMSMQ1113 please

    ‏2012-04-13T11:19:28Z  
    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.

    Cheers
    Nishanth
  • MacIzem
    MacIzem
    1 Post

    Re: More information on JMSMQ1113 please

    ‏2017-02-15T15:50:30Z  

    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.

     

    Cordially

    Mac