Author |
Message
|
pabloadmin |
Posted: Wed Feb 01, 2006 9:54 am Post subject: mq series with jboss |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
Hi, i use a java application over websphere (4.0.7) with MQ to send and recive messages. The application works fine in this environment, but now i want to test with jboss 4.0.2 on suse linux over pseries. The only problem is with mq, i recive this error:
2006-02-01 13:40:17,338 ERROR [mqsupport.MQConnection] MQJE001: Completion Code 2, Reason 2033
com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2033
at com.ibm.mq.MQQueue.get(MQQueue.java:822)
and the application doesn't work. this is my mq configuration on the client:
mq.host = 10.250.0.49
mq.qmgr = QM.SISDESA
mq.channel = CANAL_JAVA
mq.request = ITC_REQUEST
mq.response = ITC_RESPONSE
mq.highThreshold = 25
mq.timeout = 3600000
I used a little java program to put and get a message from the mq and it works well.
At the moment i can put a messages in the queue, but i cann't get the response. somebody has a idea?
thank you. |
|
Back to top |
|
 |
HubertKleinmanns |
Posted: Wed Feb 01, 2006 10:08 am Post subject: |
|
|
 Shaman
Joined: 24 Feb 2004 Posts: 732 Location: Germany
|
Reason 2033 means "no msg available". This could be, because the queue is empty or your app reads with a specific key (msg id or correl id) and the coresponding messages was not found.
Are you reading the correct queue?
Are you connected to the correct QMgr? _________________ Regards
Hubert |
|
Back to top |
|
 |
csmith28 |
Posted: Wed Feb 01, 2006 10:08 am Post subject: |
|
|
 Grand Master
Joined: 15 Jul 2003 Posts: 1196 Location: Arizona
|
Reason 2033 means MQRC_NO_MSG_Available
That is to say. There was no message in the Queue you attempted to GET a message from. _________________ Yes, I am an agent of Satan but my duties are largely ceremonial. |
|
Back to top |
|
 |
pabloadmin |
Posted: Wed Feb 01, 2006 11:23 am Post subject: |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
Thank you, but i have the same application at websphere and at jboss and
i use the same mq for both with the same configuration.
In the queue i see the message, but the application cann't get it.
can be a bit deference at os or at jvm level?, because websphere is running on HPUX 11i with a ibm jvm 1.3.x and the jboss on linux suse with ibm jvm 1.4.2.
thank you. |
|
Back to top |
|
 |
mrlinux |
Posted: Wed Feb 01, 2006 11:47 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
Well based on the fact you are getting 2033 (No Message Available) means that you are connecting to a queue(may be not the one you think),
are you using JMS ??? _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
pabloadmin |
Posted: Wed Feb 01, 2006 12:28 pm Post subject: |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
No, i use the mq java classes directly, so i don't use a poll at the application server.
thank you. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Feb 01, 2006 2:08 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Well.... the fact that you see a message in the queue(queue depth) does not mean that it is in a gettable state.
it may be in any of the following states:
a) not committed (hint: you should not be able to browse it either)
b) expired
Assuming that you have no selector set and are getting messages as they come, if the message is in any of the above mentioned states it is not available.
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
mvic |
Posted: Wed Feb 01, 2006 2:45 pm Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
pabloadmin wrote: |
can be a bit deference at os or at jvm level?, because websphere is running on HPUX 11i with a ibm jvm 1.3.x and the jboss on linux suse with ibm jvm 1.4.2. |
The 2033 comes from the queue manager, which is written in C, and runs in separate processes from the JVM your client program is running in. The version of the JRE you have does not influence the operation of the queue manager. It it's returning 2033, this will be because there is no message available to be removed from the queue. Take note also of fjb_saper's comments on possible reasons why messages may be on a queue but not available to MQGET. |
|
Back to top |
|
 |
pabloadmin |
Posted: Wed Feb 01, 2006 2:51 pm Post subject: |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
Yes, but why works in websphere and not in jboss, with the same mq server?. (I use the same data, the same configuration and same application to test). |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Feb 01, 2006 2:53 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Maybe the transactional attribute for the part that is putting the message is different in JBOSS from what it is in websphere. Have you checked your deployment descriptors?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
pabloadmin |
Posted: Wed Feb 01, 2006 3:02 pm Post subject: |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
I have this at application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN" "http://java.sun.com/j2ee/dtds/application_1_2.dtd">
<application id="Application_ID">
<display-name>ReintegrosWeb</display-name>
<description>Reintegros Web</description>
<module id="WebModule_1">
<web>
<web-uri>reintegros.war</web-uri>
<context-root>/reintegros</context-root>
</web>
</module>
</application>
and this is my web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app id="WebApp">
<display-name>Reintegros</display-name>
<context-param>
<param-name>session-timeout</param-name>
<param-value>3600</param-value>
<description>time out de la session</description>
</context-param>
<servlet>
<servlet-name>reintegros</servlet-name>
<display-name>Turbine</display-name>
<servlet-class>org.apache.turbine.Turbine</servlet-class>
<init-param>
<param-name>applicationRoot</param-name>
<param-value>webContext</param-value>
</init-param>
<init-param>
<param-name>properties</param-name>
<param-value>/WEB-INF/conf/TurbineResources.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>reintegros</servlet-name>
<url-pattern>/servlet/reintegros/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/jsp/index.jsp</welcome-file>
</welcome-file-list>
<security-constraint>
<web-resource-collection>
<web-resource-name>templates</web-resource-name>
<url-pattern>/templates/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>logs</web-resource-name>
<url-pattern>/logs/*</url-pattern>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Templates</realm-name>
</login-config>
</web-app>
thank you.
Last edited by pabloadmin on Wed Feb 01, 2006 3:09 pm; edited 1 time in total |
|
Back to top |
|
 |
mvic |
Posted: Wed Feb 01, 2006 3:33 pm Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
pabloadmin wrote: |
Yes, but why works in websphere and not in jboss, with the same mq server? |
I did realise that this is the question that is important to you.
It's my opinion that the material difference between the two cases is that, in one case the app is calling MQGET on a queue where there is a message available, and in the other case the app is calling MQGET on a queue where there is not a message available.
If you have analysed correctly, then MQ is not letting your app remove a message from a queue, when in fact there is one available to be removed. I don't think you have yet shared with us exactly what facts lead you to this conclusion.
For example, how are you sure that there is a message available that MQ is failing to deliver?
EDIT: correct 2nd paragraph |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Feb 01, 2006 4:23 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Your deployment descriptor makes no mention of transaction management. However if the put is transaction managed it may mean that it never gets committed....  _________________ MQ & Broker admin |
|
Back to top |
|
 |
pabloadmin |
Posted: Thu Feb 02, 2006 6:02 am Post subject: |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
mvic wrote: |
pabloadmin wrote: |
Yes, but why works in websphere and not in jboss, with the same mq server? |
I did realise that this is the question that is important to you.
It's my opinion that the material difference between the two cases is that, in one case the app is calling MQGET on a queue where there is a message available, and in the other case the app is calling MQGET on a queue where there is not a message available.
If you have analysed correctly, then MQ is not letting your app remove a message from a queue, when in fact there is one available to be removed. I don't think you have yet shared with us exactly what facts lead you to this conclusion.
For example, how are you sure that there is a message available that MQ is failing to deliver?
EDIT: correct 2nd paragraph |
Hi, i'am sure because i use a little java application to check the mq queue.
The queue has the messages. |
|
Back to top |
|
 |
pabloadmin |
Posted: Thu Feb 02, 2006 6:06 am Post subject: |
|
|
Newbie
Joined: 01 Feb 2006 Posts: 9 Location: Argentina
|
fjb_saper wrote: |
Your deployment descriptor makes no mention of transaction management. However if the put is transaction managed it may mean that it never gets committed....  |
Ok thank you, but what line do i need to adding to do this? |
|
Back to top |
|
 |
|