JMS IlegalStateException when attempting to use Spring SingleConnectionFactory 
retrieved from JNDI
--------------------------------------------------------------------------------------------------

                 Key: CXF-2577
                 URL: https://issues.apache.org/jira/browse/CXF-2577
             Project: CXF
          Issue Type: Bug
          Components: Transports
    Affects Versions: 2.3
         Environment: Windows, JDK 1.6
            Reporter: Ron Gavlin


A JMS IllegalStateException is thrown when I attempt to use a Spring 
SingleConnectionFactory retrieved directly from a local JNDI environment. A 
unit test and patch will be attached shortly. The stack trace generated by the 
unit test is listed below:

org.springframework.jms.IllegalStateException: setExceptionListener call not 
supported on proxy for shared Connection. Set the 'exceptionListener' property 
on the SingleConnectionFactory instead. Alternatively, activate 
SingleConnectionFactory's 'reconnectOnException' feature, which will allow for 
registering further ExceptionListeners to the recovery chain.; nested exception 
is javax.jms.IllegalStateException: setExceptionListener call not supported on 
proxy for shared Connection. Set the 'exceptionListener' property on the 
SingleConnectionFactory instead. Alternatively, activate 
SingleConnectionFactory's 'reconnectOnException' feature, which will allow for 
registering further ExceptionListeners to the recovery chain.
        at 
org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:271)
        at 
org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:168)
        at 
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:474)
        at 
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:436)
        at 
org.apache.cxf.transport.jms.JMSFactory.resolveOrCreateDestination(JMSFactory.java:236)
        at 
org.apache.cxf.transport.jms.JMSFactory.createJmsListener(JMSFactory.java:216)
        at 
org.apache.cxf.transport.jms.JMSFactory.createJmsListener(JMSFactory.java:156)
        at 
org.apache.cxf.transport.jms.JMSDestination.activate(JMSDestination.java:107)
        at 
org.apache.cxf.transport.AbstractObservable.setMessageObserver(AbstractObservable.java:48)
        at 
org.apache.cxf.transport.jms.JMSDestinationTest.setupJMSDestination(JMSDestinationTest.java:102)
        at 
org.apache.cxf.transport.jms.JMSDestinationTest.testGetSpringSingleConnectionFactoryFromWSDL(JMSDestinationTest.java:550)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
        at 
org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
        at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
        at 
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
        at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
        at 
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
        at 
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
        at 
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
        at 
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at 
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at 
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
        at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
        at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: javax.jms.IllegalStateException: setExceptionListener call not 
supported on proxy for shared Connection. Set the 'exceptionListener' property 
on the SingleConnectionFactory instead. Alternatively, activate 
SingleConnectionFactory's 'reconnectOnException' feature, which will allow for 
registering further ExceptionListeners to the recovery chain.
        at 
org.springframework.jms.connection.SingleConnectionFactory$SharedConnectionInvocationHandler.invoke(SingleConnectionFactory.java:505)
        at $Proxy36.setExceptionListener(Unknown Source)
        at 
org.springframework.jms.connection.SingleConnectionFactory.prepareConnection(SingleConnectionFactory.java:365)
        at 
org.springframework.jms.connection.SingleConnectionFactory.initConnection(SingleConnectionFactory.java:291)
        at 
org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:227)
        at 
org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
        at 
org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:461)
        ... 30 more




-- 
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