Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Not A Problem
-
3.1.1
-
None
-
None
-
Unknown
Description
Hello,
I need to use soap over jms via tibco for some service.
Spring config :
<jaxws:endpoint xmlns:tns="http://blabla.be/WSDL/BE/BE_RiskAcceptance_BUS/1/GetRiskAcceptanceStatus/1" id="GetRiskAcceptanceStatus" serviceName="tns:GetRiskAcceptanceStatus" endpointName="tns:GetRiskAcceptanceStatus_Binding_JMS" implementor="#GetRiskAcceptanceStatusService" transportId="http://cxf.apache.org/transports/jms" address="jms:jndi:ESB.BE.BS.RiskAcceptance.BE_RiskAcceptance_BUS.1.GetRiskAcceptanceStatus.1.Request" > <jaxws:features> <ref bean="jmsConfigFeatureGetRiskAcceptanceStatus"/> </jaxws:features> </jaxws:endpoint>
When deployment occurs, I see every 5s some reconnection.
I analyzed what occurs and it comes from org.apache.cxf.transport.jms.JMSDestination.
private JMSListenerContainer createTargetDestinationListener() { Session session = null; try { connection = JMSFactory.createConnection(jmsConfig); connection.setExceptionListener(new ExceptionListener() { public void onException(JMSException exception) { if (!shutdown) { LOG.log(Level.WARNING, "Exception on JMS connection. Trying to reconnect", exception); restartConnection(); } } }); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = jmsConfig.getTargetDestination(session); PollingMessageListenerContainer container = new PollingMessageListenerContainer(connection, destination, this); container.setConcurrentConsumers(jmsConfig.getConcurrentConsumers()); container.setTransactionManager(jmsConfig.getTransactionManager()); container.setMessageSelector(jmsConfig.getMessageSelector()); container.setTransacted(jmsConfig.isSessionTransacted()); container.setDurableSubscriptionName(jmsConfig.getDurableSubscriptionName()); Executor executor = JMSFactory.createExecutor(bus, "jms-destination"); container.setExecutor(executor); container.start(); suspendedContinuations.setListenerContainer(container); connection.start(); return container; } catch (JMSException e) { throw JMSUtil.convertJmsException(e); } finally { ResourceCloser.close(session); } }
The setExceptionListener invoked on a org.jboss.resource.adapter.jms.JmsSessionFactory throw directly that exception with message : "This method is not applicable inside the application server. See the J2EE spec, e.g. J2EE1.4 Section 6.6";
For the specs : http://java.cnam.fr/iagl/biblio/spec/j2ee-1_4-fr-spec.pdf page 103 + 104
Something I do wrong or issue in jms transport ?
Regards