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.

Reply via email to