Actually, JoNaS, another open source app server, does distributed
transactions over RMI.  From what I can tell looking at their source code,
each VM has its own TransactionManager that handles XAResources from that VM
only.  Then the Transactions themselves expose RMI interfaces so that they
can coordinate a 2-phase commit.  Overall, it doesn't look too bad.  I've
entertained the idea of trying to integrate the JoNaS transaction manager
into jBoss and see what happens, but their tm has some dependencies on the
rest of their code, so I dunno how easy that would be.  It might be easier to
just use the ideas and roll our own.

I don't want to start hacking around with this until Marc's additions and
your refactoring is done with the tm.  But some time down the road I'd like
to take a crack at it.

-Charles

Ole Husgaard wrote:

> Charles Crain wrote:
> > - Resolve the conflict between the EnterpriseContext-owned transactions
> > and the MethodInvocation-owned transactions
>
> What's the conflict?
> I see some hairy code in NoPassivationEntityInstanceCache, but don't
> know about any conflicts.
>
> > - Provide UserTransactions to clients within the jBoss VM
>
> This should be simple.
>
> > - Support distributed transactions between jBoss instances in different
> > VM's
> > - POSSIBLY provide UserTransactions to out-of-VM clients.
>
> These two are hard, and I am not aware of anybody that have done
> it with the RMI transport. To correctly implement two phase commit
> and revovery we have to a few network-accessible objects:
> - XA resources participating in a distributed transaction need
>   to be accessible across the network.
> - Some kind of transaction coordinator that XA resources can use
>   to register themselves with to participate in the transaction.
> - Transaction synchronization objects need to be accessible across
>   the network for the coordinator to be able to call them.
> And to get reasonable performance we should also support
> interpositioning.
> This is like the CORBA transaction service OTS, and we have to
> reimplement this (except for nested transactions) for RMI.
> JTS is the Java mapping of OTS, and SUN used this in J2EE-RI.
> But the J2EE-RI JTS implementation alone is more lines of code
> than we currently have in the jBoss CVS module...
>
> > Of course, this is a pretty huge project, and means some major
> > refactoring of the transaction manager.  I can't promise any time frame
> > on this, but it all needs done, and I will do what I can in the spare
> > time I have.  I would see it taking 3 weeks at minimum.
>
> I am currently doing some internal refactoring on the org.jboss.tm
> package. Not to support distributed transactions (too big job
> for me right now), but for better performance.
>
> But of course distributed transactions should be supported.
> Before I can start using jBoss for real, I need:
>
> 1) CORBA 2.3 compliant IIOP support.
> 2) Real distributed transactions that interoperate seamlessly
>    with other transaction managers.
>
> Fortunately I don't need jBoss for real until in about ten
> months time.
>
> So the way I was thinking about implementing distributed
> transactions is:
> - Add IIOP support using one or more of the open source
>   CORBA 2.3 implementations for Java.
> - Add distributed transactions using one of the open source
>   CORBA OTS transaction managers.
> - POSSIBLY add RMI support for distributed transactions by
>   writing a RMI interface to the CORBA OTS transaction
>   manager.
>
> Comments anyone ?
>
> Best Regards,
>
> Ole Husgaard.


Reply via email to