|
Problem(Abstract) |
Troubleshooting for Java™ Message Service (JMS) problems
in IBM® WebSphere® Application Server. This should help address common
issues with this component before calling IBM support and save you
time. |
|
|
|
Resolving the
problem |
TroubleShooting steps to help resolve JMS problems
- What JMS Provider are you using?
- WebSphere JMS Provider (V5 only) - continue to Question
2
- WebSphere MQ JMS Provider - continue to Question 9
- Generic JMS Provider - continue to Question 25
- Default Messaging JMS Provider (V6 only) - refer to the
TroubleShooting and MustGather
documens for Service integration technologies
- V5 Default Messaging JMS Provider (V6 only) - refer to the
TroubleShooting and MustGather
documents for Service integration technologies
- Do the embedded queue manager and broker start successfully? You can
check for the following output in the SystemOut.log file for the
application server or jmsserver (if running in a Network Deployment
environment):
MSGS0050I: Starting the Queue Manager
MSGS0051I: Queue Manager open for business
MSGS0052I: Starting the Broker
MSGS0053I: Broker open for business |
|
If the queue manager or broker does not start
successfully, there will be an error after the MSGS0050I or
MSGS0052I messages.
- If either fail to start, continue to Question
3.
- If both start successfully, continue to Question
9.
|
|
- If you do not see any attempt to start the embedded queue manager and
broker in the SystemOut.log file (signified by the
MSGS0050I and MSGS0052I messages):
- Review this technote
on setting the Initial State.
- Otherwise, continue to Question 4.
- Ensure that the embedded queue manager exists. Run the dspmq
command. The name of the queue manager will be
WAS_nodename_appservername, or in a Network Deployment
environment, WAS_nodename_jmsserver.
- If the queue manager does not exist, create it using the
createmq
command.
- If the queue manager does exist, continue to Question
5.
- Is the application server or the jmsserver being started by a non-root
user? Note that this does not apply on Windows® operating systems.
- If you are using a non-root user, ensure that all of the
necessary steps
have been followed.
- If you are using a root user or if you are running on
Windows, continue to Question 6.
- Does the embedded broker fail to start with the following error?
MSGS0255E: Broker Manager unable to
attach to Queue Manager - unknown Queue |
|
- If it does, then review this technote.
- If not, continue to Question 7.
|
|
- Are you using a WebSphere Application Server test server within
WebSphere Studio Application Developer V5?
- If you are, then review this technote.
- If not, continue to Question 8.
- Review the suggested
diagnostic steps for the specific error code that is occurring during
the attempted start of the queue manager. If you still cannot resolve the
problem, continue to the MustGather
for JMS problems.
- Is the problem related to a Message-driven bean (MDB)?
- If yes, continue to Question 10.
- If no, continue to Question 18.
- Is the listener port or activation specification that is associated
with the MDB started? You can check the status using the administrative
console or the SystemOut.log file for the application server.
- If yes, continue to Question 11.
- If no, start the listener port or activation specification
using the Administrative Console.
- Is the listener port unable to start? The following error indicates
that the listener port is unable to start:
WMSG0059E: Maximum restart retry count
of 5 reached for Listener Port MyListenerPort |
|
- If the preceding error does occur when the listener port
attempts to start, ensure that the queue manager is started, and consider
increasing the MAX.RECOVERY.RETRIES and
RECOVERY.RETRY.INTERVAL properties. They are described here.
You should also check for any other errors that may show the reason why
the listener port fails to start and then continue to Question
12.
- If the listener port does start, continue to Question
12.
|
|
- Are you getting a specific error that causes the MDB to not receive
messages?
- For a MQJMS1016 error caused by a
NullPointerException, review this technote.
- For a MQJMS1025 error with Reason code 2026,
review this technote.
This problem may occur if message selectors are used.
- If you are receiving a java.lang.ClassCastException:
com.ibm.jms.JMSBytesMessage, review this technote.
- For a MQJMS2005 error with Reason code 2009,
review this technote.
- If transaction timeouts or rollbacks occur, review this technote
and set the Maximum messages property on the listener port to
1.
- If you are not encountering any of the preceding errors,
continue to Question 13.
- Are you running WebSphere Application Server V5.1.1.4?
- If yes, your problem is likely caused by a known defect;
review this technote.
- If no, continue to Question 14.
- Are you running WebSphere Application Server Enterprise Edition V5 or
WebSphere Business Integration Server Foundation V5.1 with the Extended
Messaging Service enabled?
- If yes, disable the Extended Messaging Service by
following this technote.
- If no, continue to Question 15.
- Did the listener port stop due to the Maximum retries
property on the listener port being reached? When this occurs, an entry
like this will appear in the SystemOut.log file for the
application server:
WMSG0036E: Maximum message delivery
retry count of 1 reached for MDB MyMDB, JMSDestination jms/myQueue,
MDBListener stopped |
|
- If yes, ensure that the backout threshold
property on the queue is set to a value higher than the Maximum
retries property on the listener port. You can find more information
about this here.
- If no, continue to Question 16.
|
|
- Is the problem related to slower than expected performance with the
MDB? For example, the MDB processes messages more slowly than you believe
it should.
- If yes, consider increasing the Maximum sessions
property on the listener port (described here)
and the com.ibm.mq.jms.tuning.eoqTimeout JVM™ property (described
here).
- If no, continue to Question 17.
- Is the problem related to the distribution of the messages among MDBs
in a cluster?
- If yes, review this technote.
- If no, continue to Question 18.
- Is the problem related to security; for example, any errors related to
authentication and authorization of JMS requests?
- If yes, continue to Question 19.
- If no, continue to Question 21.
- Are either of the following authentication errors occurring when
trying to establish a JMS connection?
MSGS0508E: The JMS Server security
service was unable to authenticate userid: myuser
javax.jms.JMSSecurityException: MQJMS2013: invalid security authentication
supplied for MQQueueManager |
|
- If yes, ensure that a J2C authentication alias is
specified on your QCF or TCF. If you are using the WebSphere JMS Provider
in V5 (Embedded Messaging), ensure that the userid specified in the J2C
authentication alias is also in the user registry. See this technote
and this technote
for more information.
- If no, continue to Question 20.
|
|
- Is an authorization error like the following occurring when trying to
establish a JMS connection?
MSGS0509E: The JMS Server security
service was unable to authorize userid myuser to access resource myQueue
with write permission |
|
- If yes, configure the
integral-jms-authorizations.xml file to grant permission to the
userid to access the queue or topic. This is described in detail here.
- If no, continue to Question 21.
|
|
- Is the problem related to the connection between WebSphere Application
Server and the messaging system? This would include connection pooling
problems.
- If yes, continue to Question 22.
- If no, continue to Question 25.
- Is the problem related to the number of TCP/IP connections that you
observe between your application server process and an MQ queue manager?
- If yes, or if you want to gain an understanding of how JMS
connection pooling in WebSphere Application Server works, review this technote.
- If no, continue to Question 23.
- Are you receiving JMS exceptions with MQ reason code 2019?
- If yes, review this technote.
- If no, continue to Question 24.
- Are you receiving the following exception?
J2CA0020E: The Connection Pool Manager
could not allocate a Managed Connection: java.lang.IllegalStateException:
Internal Error: cannot find the PoolManager Reference |
|
- If yes, review this technote.
- If no, continue to Question 25.
|
|
- Is your problem related to the configuration of a Generic JMS
Provider?
- If yes, review the Information Center documentation
on configuring your Generic JMS Provider.
- If no, continue to Question 26.
- Review the WebSphere Application Server V5,
V5.1,
or V6.0
Information Center, or the WebSphere Application Server Support
site for additional information that may help you to resolve the
problem.
What to do Next?
If the preceding troubleshooting steps did not solve your problem, see
the MustGather
for JMS problems to continue investigation. |
|
|
|
|
Cross Reference information |
Segment |
Product |
Component |
Platform |
Version |
Edition |
Application Servers |
Runtimes for Java Technology |
Java SDK |
|
|
|
|
|
|