Since no one responded to say that this isn't a regression, I'd submit a bug in JIRA (if you haven't already).
Tim On Oct 29, 2015 11:20 AM, "acidul" <aci...@free.fr> wrote: > Hello all, > > I am facing an issue, which seems to be a regression from my point of view, > but I'd like to know your opinion about this problem... here it is... > > We are using ActiveMQ to send a message on queue, which is quite simple: > > cf = (javax.jms.ConnectionFactory) > context.lookup(cfName); > connection = cf.createConnection(iUser, > iPwd); > connection.start(); > > javax.jms.Session session = > connection.createSession(true, > javax.jms.Session.SESSION_TRANSACTED); > javax.jms.Destination queueOrTopic = > (javax.jms.Destination) > context.lookup(iDestinationName); > > javax.jms.MessageProducer sender = > session.createProducer(queueOrTopic); > javax.jms.TextMessage message = > session.createTextMessage(iMessage.getBody()); > > sender.send(message); > session.commit(); > > connection.close(); > > It used to work fine with Apache Tomcat (TomEE)/7.0.53 (1.6.0.1), and > ActiveMQ 5.9.0. > But we now use Apache Tomcat (TomEE)/7.0.55 (1.7.1), and ActiveMQ 5.10.0, > and we get the following exception during commit operation: > > javax.jms.IllegalStateException: Not a transacted session > at > org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:569) > ~[activemq-client-5.10.0.jar:5.10.0] > at > > org.apache.activemq.ra.ManagedSessionProxy.commit(ManagedSessionProxy.java:108) > ~[activemq-ra-5.10.0.jar:5.10.0] > at > > com.xxx.jms.resource.yyy.ZZZ$Function_SendMessage.executeInternal(ZZZ.java:114) > ~[VPLMJMSConnector.jar:6.417.6.15198] > > I've compared source code of ManagedConnectionProxy which is used to create > a new ActiveMQSession, and I found in ActiveMQ 5.9.0: > private ManagedSessionProxy createSessionProxy(boolean transacted, int > acknowledgeMode) > throws JMSException > { > if(!transacted && acknowledgeMode == 0) > { > acknowledgeMode = 1; > } > ActiveMQSession session = > (ActiveMQSession)getConnection().createSession(transacted, > acknowledgeMode); > ManagedTransactionContext txContext = new > ManagedTransactionContext(managedConnection.getTransactionContext()); > > [...] > } > > and in ActiveMQ 5.10.0: > private ManagedSessionProxy createSessionProxy(boolean transacted, int > acknowledgeMode) > throws JMSException > { > ActiveMQSession session = > (ActiveMQSession)getConnection().createSession(false, 1); > ManagedTransactionContext txContext = new > ManagedTransactionContext(managedConnection.getTransactionContext()); > [...] > } > > As you can see, the session is now created with hardcoded values: false > (not > transacted) and 1 (AUTO_ACKNOWLEDGE mode) > That’s why (I guess) when we commit the transaction, we get the exception. > > What do you think about this issue? > Do we have to change something on our side to make it work with Apache > Tomcat (TomEE)/7.0.55 (1.7.1), and ActiveMQ 5.10.0? > Or do we have to create an incident about this issue? > > Don't hesitate if you need more info... > And thanks in advance for your help > > > > > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/Not-a-transacted-session-tp4703470.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. >