Thanks for the answer. I don't know if the article actually helps. However, I
have found my own solution. If you want to send a message in a container
managed transaction to a remote destination, the nuts and bolts is to care
about the XAConnection, i.e., the usage of XA classes is mandatory.
This is some code exctracted from my application that works fine now:
| public void sendMessage(Message message, String providerUrl, String
queueName, String user, String password) {
| Context context = null;
|
| XAQueueConnectionFactory remoteQueueFactoryXA = null;
| XAQueueConnection connectionXA = null;
|
| Queue queue = null;
| QueueSession session = null;
| QueueSender sender = null;
|
| try {
| Properties env = new Properties();
| env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
| env.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
| env.put(Context.PROVIDER_URL, providerUrl);
| context = new InitialContext(env);
|
| remoteQueueFactoryXA =
(XAQueueConnectionFactory)context.lookup("XAConnectionFactory");
| connectionXA =
remoteQueueFactoryXA.createXAQueueConnection(user, password);
| session = connectionXA.createQueueSession(true, -1);
| queue = (Queue)context.lookup(queueName);
| sender = session.createSender(queue);
| sender.send(queue, message);
| }
| catch(Exception excep) {
| ...
| }
| finally {
| if(sender != null) {
| try {
| sender.close();
| } catch(Exception excep) {
| ...
| }
| }
| if(session != null) {
| try {
| session.close();
| } catch(Exception excep) {
| ...
| }
| }
| if(connectionXA != null) {
| try {
| connectionXA.close();
| } catch(Exception excep) {
| ...
| }
| }
| }
| }
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4005708#4005708
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4005708
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user