After some discussion we came to a solution we can both live with, and it is committed, removing the -1.

Now, you can use non-NamedXAResources as long as you have the no-recovery log or don't do 2pc. If you try to use a non-NamedXAResource in a 2pc transaction while using a real recovery log, you will get an exception.

thanks
david jencks

On Aug 23, 2005, at 9:22 AM, [EMAIL PROTECTED] wrote:

On 23 Aug 2005, at 08:13, David Jencks wrote:
There hasn't been any response to my -1 here. Unless there's a response within 24 hours I'm going to revert this.

Sorry David - missed your mail.

The reason for the change was to be able to use the Geronimo TransactionManager without recovery, folks don't often have a NamedXAResource. So this relatively minor change just avoids a ClassCastException I was getting when trying to use the Geronimo TransactionManager in a spring application without Howl.

Its a pretty trivial change and just avoids a really nasty stack trace. Note that recovery is optional in the TransactionManager (you can omit the journal) so the TransactionManager should be able to work with regular XAResources without throwing nasty exceptions IMHO.

Did you have a different solution in mind? I just want Geronimo TransactionManager to work with an XAResource without throwing exceptions.

James



thanks
david jencks

On Aug 16, 2005, at 8:05 AM, David Jencks wrote:


Can you provide some justification for this? Unless you have implemented some very special XAResource where toString returns the same name no matter which vm you are running in, whenever you start the server, this breaks recovery. -1 without discussion and convincing me this will lead to greater stability and more reliable recovery.

thanks
david jencks

On Aug 16, 2005, at 3:28 AM, [EMAIL PROTECTED] wrote:


Author: jstrachan
Date: Tue Aug 16 03:28:43 2005
New Revision: 232975

URL: http://svn.apache.org/viewcvs?rev=232975&view=rev
Log:
added a helper method to avoid ClassCastException when using Geronimo TransactionManager with regular, non-wrapped XAResource instances

Modified:
geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/ transaction/manager/TransactionImpl.java

Modified: geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/ transaction/manager/TransactionImpl.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/transaction/ src/java/org/apache/geronimo/transaction/manager/ TransactionImpl.java?rev=232975&r1=232974&r2=232975&view=diff ==================================================================== ========== --- geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/ transaction/manager/TransactionImpl.java (original) +++ geronimo/trunk/modules/transaction/src/java/org/apache/geronimo/ transaction/manager/TransactionImpl.java Tue Aug 16 03:28:43 2005
@@ -631,12 +631,26 @@
         return manager;
     }

+    /**
+ * A helper method to convert an [EMAIL PROTECTED] XAResource} into a [EMAIL PROTECTED] NamedXAResource}
+     * either via casting or wrapping.
+     */
+ protected static NamedXAResource asNamedXAResource(XAResource xaRes) {
+        if (xaRes instanceof NamedXAResource) {
+            return (NamedXAResource) xaRes;
+        }
+        else {
+            String name = xaRes.toString();
+            return new WrapperNamedXAResource(xaRes, name);
+        }
+    }
+
private static class TransactionBranch implements TransactionBranchInfo {
         private final NamedXAResource committer;
         private final Xid branchId;

         public TransactionBranch(XAResource xaRes, Xid branchId) {
-            committer = (NamedXAResource)xaRes;
+            committer = asNamedXAResource(xaRes);
             this.branchId = branchId;
         }










James
-------
http://radio.weblogs.com/0112098/


Reply via email to