Like
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=91589
I have the same or equal problem.

I have 2 JBoss Servers(A and B). Both 4.0.5 with Messaging 1.0.1 GA

On A I have an MDB listen on a local queue
inside the onmessage it should get the message and send a Result to a Queue on 
Server B.

Inside my MDB on A I create a connection using B´s JNDI and look for 
XAConnectionFactory.
I open the session like this:
session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);

But after the onMessage returns the Message is still not in the DB on B.

If I do it like
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
it works.

It works also, if I use TRUE and commit the session explicitly with 
session.comit(); But if then an exception on A occurs I have the Message still 
in A and already in B.

Question:
How can I span my JTA Transaction of Server A to include the send to B?


Now some config stuff follows:
My MDB Config:
<message-driven>
  |             <ejb-name>SyncRequestSenderMDB</ejb-name>
  |             <ejb-class>com.XXX.send.SyncRequestSenderMDB</ejb-class>
  |             <transaction-type>Container</transaction-type>
  |             <message-driven-destination>
  |                <destination-type>javax.jms.Queue</destination-type>
  |             </message-driven-destination>
  |         </message-driven>
  |     </enterprise-beans>
  |     <assembly-descriptor>
  |     <container-transaction>
  |       <method>
  |         <ejb-name>SyncRequestSenderMDB</ejb-name>
  |         <method-name>*</method-name>
  |       </method>
  |       <trans-attribute>Required</trans-attribute>
  |     </container-transaction>
  |      </assembly-descriptor>

My remote send call:

  | Connection conn = null;
  |     MessageProducer sender = null;
  |     try {
  | 
  |             conn = getConnection();
  |             boolean transacted = true;
  |             session = conn
  |                             .createSession(transacted, 
Session.AUTO_ACKNOWLEDGE);
  | 
  |             sender = session.createProducer(sendQueue);
  | 
  |             TextMessage tm = 
session.createTextMessage(syncMessage.getMessageAsString());
  |             
  |             sender.send(tm);
  |             Logger.debug(this, "Message sent to IM Server");
  |             // with this it will be send
  |                                 // session.commit();
  |             
  |     } catch (JMSException e) {
  |             throw new RuntimeException(
  |                             "Problems sending Sync Message to IM Server 
Queue.", e);
  |     } finally {
  |             if (sender != null)
  |                     try {
  |                             sender.close();
  |                     } catch (Exception ignore) {
  |                     }
  |             if (session != null)
  |                     try {
  |                             session.close();
  |                     } catch (Exception ignore) {
  |                     }
  |             if (conn != null)
  |                     try {
  |                             conn.close();
  |                     } catch (Exception ignore) {
  |                     }
  |     }

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3995038#3995038

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3995038

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to