JMS ServiceTaskManager isn't J2EE compliant (setExceptionListener not
permitted) and fails on WebSphere AS 6.1
--------------------------------------------------------------------------------------------------------------
Key: WSCOMMONS-498
URL: https://issues.apache.org/jira/browse/WSCOMMONS-498
Project: WS-Commons
Issue Type: Bug
Components: Transport
Affects Versions: Transports 1.0
Environment: J2RE 1.5.0 IBM J9 2.3 - Maven 2.2.1 - WebSphere
Application Server 6.1 - Axis2 1.5
Reporter: Florian Minjat
Hi,
I'm trying to make a sample web application providing an Axis2 WebService over
JMS using the last version of Axis2 (1.5).
After some (long) searches for the transport-jms package which was removed from
the kernel jar, I ended on the axis2-transport-jms trunk code from this SVN
repo:
http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/transport/modules/jms
.
But this code fails to run on IBM WebSphere AS 6.1 with the following error
during the method createConnection() of ServiceTaskManager (revision 808426):
[8/27/09 11:59:16:619 CEST] 0000002f SystemOut O ERROR ServiceTaskManager -
Error acquiring a JMS connection to : mq/Z81REFAPP_QCF using JNDI properties :
{transport.jms.ConnectionFactory=refappQueueConnectionFactory,
transport.jms.ConnectionFactoryType=queue,
ServiceClass=com.volvo.ras.ws.p.RefAppService}
javax.jms.IllegalStateException: Method setExceptionListener not permitted
at
com.ibm.ejs.jms.JMSCMUtils.methodNotPermittedException(JMSCMUtils.java:253)
at
com.ibm.ejs.jms.JMSConnectionHandle.checkRestrictedMethod(JMSConnectionHandle.java:805)
at
com.ibm.ejs.jms.JMSConnectionHandle.setExceptionListener(JMSConnectionHandle.java:323)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConnection(ServiceTaskManager.java:794)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.getConnection(ServiceTaskManager.java:673)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.receiveMessage(ServiceTaskManager.java:472)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:405)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:810)
[8/27/09 11:59:16:619 CEST] 0000002f SystemOut O ERROR NativeWorkerPool -
Uncaught exception
org.apache.axis2.transport.jms.AxisJMSException: Error acquiring a JMS
connection to : mq/Z81REFAPP_QCF using JNDI properties :
{transport.jms.ConnectionFactory=refappQueueConnectionFactory,
transport.jms.ConnectionFactoryType=queue,
ServiceClass=com.volvo.ras.ws.p.RefAppService}
at
org.apache.axis2.transport.jms.ServiceTaskManager.handleException(ServiceTaskManager.java:959)
at
org.apache.axis2.transport.jms.ServiceTaskManager.access$700(ServiceTaskManager.java:48)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConnection(ServiceTaskManager.java:799)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.getConnection(ServiceTaskManager.java:673)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.receiveMessage(ServiceTaskManager.java:472)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:405)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:810)
Caused by: javax.jms.IllegalStateException: Method setExceptionListener not
permitted
at
com.ibm.ejs.jms.JMSCMUtils.methodNotPermittedException(JMSCMUtils.java:253)
at
com.ibm.ejs.jms.JMSConnectionHandle.checkRestrictedMethod(JMSConnectionHandle.java:805)
at
com.ibm.ejs.jms.JMSConnectionHandle.setExceptionListener(JMSConnectionHandle.java:323)
at
org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConnection(ServiceTaskManager.java:794)
... 7 more
This is due to the call to setExceptionListener. As documented in the links
below, this is not J2EE compliant, and WebSphere does not allow this code.
http://www-01.ibm.com/support/docview.wss?uid=swg21114239
I have no idea how to change the code to reinitialize connections on failure.
But at least the exception should be catched to prevent complete failure.
BTW I first tried with the code from the axis2-kernel-1.4.1.jar and ended with
almost the same problem but with setMessageListener. I found this mail with the
correction which lead me to the current SVN code:
http://mail-archives.apache.org/mod_mbox/ws-axis-user/200812.mbox/%[email protected]%3e
Regards,
Florian
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.