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/%3c493d6d06.3060...@apache.org%3e Regards, Florian -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.