Ok, I see the problem. So there's two ways to fix it.
1) We come up with some mechanism where the ServerIL's transact() request
can vote READONLY in this case.
This would require a mixin interface like the Recovery interface
such that newer clients can take advantage of it.
i.e. something like
| public interface NewTxProtocol
| {
| TransactionResult transact2(ConnectionToken dc, TransactionRequest t) throws
Exception;
| }
|
| with the necessary know on changes throughout the Invoker layer.
|
| Then have the client side can use it (if the server side supports it)
|
| org.jboss.mq.Connection;
| protected TransactionResult send(TransactionRequest transaction) throws
JMSException
| {
| checkClosed();
| if (trace)
| log.trace("Transact request=" + transaction + " " +
this);
|
| try
| {
| if (serverIL instanceof NewTxProtocol)
| {
| return serverIL.transact2(connectionToken, transaction);
| }
| else
| {
| serverIL.transact2(connectionToken, transaction);
| return null;
| }
| }
| catch (Throwable t)
| {
| SpyJMSException.rethrowAsJMSException("Cannot process a
transaction", t);
| }
| }
|
|
2) We disable the lazy insert of the tx record in the jdbc2 persistence manager
when it is a real XID.
(2) is obviously easier, but it is not as efficient as (1).
I'll do (2) but do you want to have a go at trying to do (1) ?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4154677#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...