> BTW: Is the org.jboss.tm.TxCapcule class supposed
> to be thread-safe?

It assumes one thread of control, (the way it is used now in the container)
but synchronizing it might be a good idea,

marc

>
>
> Best Regards,
>
> Ole Husgaard.
> -----------------------------------------------------------
> diff -ur jboss-cvs20000831/src/main/org/jboss/tm/TxCapsule.java
> jboss/src/main/org/jboss/tm/TxCapsule.java
> --- jboss-cvs20000831/src/main/org/jboss/tm/TxCapsule.java
> Fri Aug 18 05:21:12 2000
> +++ jboss/src/main/org/jboss/tm/TxCapsule.java  Thu Aug 31 17:30:13 2000
> @@ -164,22 +164,7 @@
>        if (status == Status.STATUS_MARKED_ROLLBACK)
>        {
>           // Rollback XAResources
> -         status = Status.STATUS_ROLLING_BACK;
> -         for (int i = 0; i < resources.size(); i++)
> -         {
> -
> -            try
> -            {
> -               ((XAResource)resources.elementAt(i)).rollback(xid);
> -            } catch (XAException e)
> -            {
> -               try {
> -                  ((XAResource)resources.elementAt(i)).forget(xid);
> -               } catch(XAException another) {}
> -               // TODO: what to do here?
> -            }
> -         }
> -         status = Status.STATUS_ROLLEDBACK;
> +         rollbackResources();
>        }
>
>        // Call Synchronization
> @@ -240,8 +225,8 @@
>     {
>        if (status == Status.STATUS_NO_TRANSACTION)
>           throw new IllegalStateException("No transaction started");
> -
> -                //MF FIXME I don't get it what is the use of
> this call if the "rollback is done in the commit
> +
> +      rollbackResources();
>     }
>
>     public void setRollbackOnly()
> @@ -283,6 +268,25 @@
>      }
>
>     // Private -------------------------------------------------------
> +   private void rollbackResources()
> +   {
> +      status = Status.STATUS_ROLLING_BACK;
> +      for (int i = 0; i < resources.size(); i++)
> +      {
> +         try
> +         {
> +            ((XAResource)resources.elementAt(i)).rollback(xid);
> +         } catch (XAException e)
> +         {
> +            try {
> +               ((XAResource)resources.elementAt(i)).forget(xid);
> +            } catch(XAException another) {}
> +            // TODO: what to do here?
> +         }
> +      }
> +      status = Status.STATUS_ROLLEDBACK;
> +   }
> +
>  /*   private Object writeReplace(java.io.ObjectOutputStream out)
>        throws IOException
>     {
>
>


Reply via email to