1 Reply Latest reply on Jun 7, 2008 10:34 AM by timfox

    Non JCA JMS and Transactions

    jamesbo

      I'm using JBoss-4.2.2.GA and JBossMessaging-1.4.0.SP3.

      It appears that my JMS messages sent transactionally are lost, and non-transactionally are transmitted OK as shown in the following traces (all log lines for the relevant message id shown):

      TRACE [org.jboss.jms.message.MessageIdGenerator] Getting next message id=1765522
      TRACE [org.jboss.jms.client.container.SessionAspect] sending message JBossMessage[1765522]:PERSISTENT transactionally, queueing on resource manager txID=LocalTx[f5-z0pvn4hf-1-jbdun4hf-r3jkeb-o2e184a] sessionID= e5-z0pvn4hf-1-jbdun4hf-r3jkeb-o2e184a
      TRACE [org.jboss.jms.tx.ResourceManager] addding message JBossMessage[1765522]:PERSISTENT for xid LocalTx[f5-z0pvn4hf-1-jbdun4hf-r3jkeb-o2e184a]
      



      TRACE [org.jboss.jms.message.MessageIdGenerator] Getting next message id=1765514
      TRACE [org.jboss.jms.server.endpoint.ServerConnectionEndpoint] ConnectionEndpoint[gl1-afx8o4hf-1-jbdun4hf-r3jkeb-o2e184a] sending message JBossMessage[1765514]:PERSISTENT non-transactionally
      TRACE [org.jboss.messaging.core.impl.postoffice.MessagingPostOffice] org.jboss.messaging.core.impl.postoffice.MessagingPostOffice@2f8985ba routing Reference[1765514]:RELIABLE with condition 'topic.ACTIVITY_LOG' from cluster false
      TRACE [org.jboss.messaging.core.impl.ChannelSupport] Queue[887642795/1/5265-ea1-h7g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] handles Reference[1765514]:RELIABLE non-transactionally
      TRACE [org.jboss.messaging.core.impl.ChannelSupport] Queue[887642795/1/5265-ea1-h7g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] added Reference[1765514]:RELIABLE non-transactionally in memory
      TRACE [org.jboss.messaging.core.impl.ChannelSupport] Queue[887642795/1/5265-ea1-h7g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] pushing Reference[1765514]:RELIABLE
      TRACE [org.jboss.jms.server.endpoint.ServerConsumerEndpoint] ConsumerEndpoint[da1-h7g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] receives Reference[1765514]:RELIABLE for delivery
      TRACE [org.jboss.jms.server.endpoint.ServerSessionEndpoint] SessionEndpoint[ca1-17g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] handling delivery Delivery[Reference[1765514]:RELIABLE]
      TRACE [org.jboss.messaging.core.impl.SimpleDelivery] Delivery[Reference[1765514]:RELIABLE] acknowledging delivery non-transactionally
      TRACE [org.jboss.messaging.core.impl.ChannelSupport] acknowledging Delivery[Reference[1765514]:RELIABLE] non-transactionally
      TRACE [org.jboss.jms.server.endpoint.ServerSessionEndpoint] SessionEndpoint[ca1-17g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] performing delivery for Reference[1765514]:RELIABLE
      TRACE [org.jboss.jms.server.endpoint.ServerSessionEndpoint] SessionEndpoint[ca1-17g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] submitting message JBossMessage[1765514]:PERSISTENT to the remoting layer to be sent asynchronously
      DEBUG [org.jboss.remoting.callback.ServerInvokerCallbackHandler] ServerInvokerCallbackHandler[a481e2o-8ownnu-fh4nzxf5-1-fh4o8g66-50+a481e2o-8ownnu-fh4nzxf5-1-fh4o8g6m-53] got PUSH callback InvocationRequest[11453981, ClientDelivery[JBossMessage[1765514]:PERSISTENT]]
      TRACE [org.jboss.jms.wireformat.JMSWireFormat] It's a callback: InvocationRequest[11453981, ClientDelivery[JBossMessage[1765514]:PERSISTENT]]
      TRACE [org.jboss.jms.wireformat.JMSWireFormat] Writing packet: ClientDelivery[JBossMessage[1765514]:PERSISTENT]
      TRACE [org.jboss.messaging.core.impl.RoundRobinDistributor] receiver ConsumerEndpoint[da1-h7g8o4hf-1-jbdun4hf-r3jkeb-o2e184a] handled Reference[1765514]:RELIABLE and returned Delivery[Reference[1765514]:RELIABLE]
      TRACE [org.jboss.messaging.core.impl.ClusterRoundRobinDistributor] org.jboss.messaging.core.impl.ClusterRoundRobinDistributor@70ccbbea local distributor returned Delivery[Reference[1765514]:RELIABLE]
      TRACE [org.jboss.messaging.core.impl.ChannelSupport] Queue[887642795/1/5265-ea1-h7g8o4hf-1-jbdun4hf-r3jkeb-o2e184a]: Delivery[Reference[1765514]:RELIABLE] returned for message Reference[1765514]:RELIABLE
      TRACE [org.jboss.messaging.core.impl.postoffice.MessagingPostOffice] Queue returned Delivery[Reference[1765514]:RELIABLE]
      TRACE [org.jboss.jms.server.endpoint.ServerConnectionEndpoint] sent JBossMessage[1765514]:PERSISTENT


      For historical reasons (I'm porting some existing code from WLS) the JMS connections in the server are obtained in the same manner as a remote client, i.e. it does not use a JCA ConnectionManager. The JMS messages are sent in the context of a CMT SLSB and the transactions are committing. Is it possible that I'm not getting proper transaction integration if using connections not obtained via a JCA ConnectionManager?

        • 1. Re: Non JCA JMS and Transactions
          timfox

           

          "jamesbo" wrote:
          Is it possible that I'm not getting proper transaction integration if using connections not obtained via a JCA ConnectionManager?


          Yes you must always use the JCA managed connection factory if you want transaction propagation from EJB-->JMS.