I've recently created a bunch of JIRAs for the simpler bits of the
transaction integration work. However, there are some design issues that
need discussion before the work can be codified into JIRAs...
First up, distributed transactions. By that I mean ones involving
business logic in more that one JVM. The simpler case of 'distributed'
in the multiple resource manager sense already more or less works.
The transaction system can run in two modes - jta, which does not
support transactions spanning multiple jvms, or jts, which does.
Right now the AS decides which mode to boot depending on the presence of
an ORB, since that is used as the transport for distributed transaction
coordination. This is itself potentially a problem, since it's possible
that a user wants the ORB for non-transaction use only and does not want
to pay the performance penalty for running jts mode transactions that
never actually leave the local jvm. Even for local use the jts is
substantially slower than jta. So, you may want to consider allowing the
currently automated jta/jts choice to be overridden by the user. Another
interesting possibility is to use the module system to run two isolated
copies of the transaciton engine, one in jta and one in jts mode, then
allow applications to determine which they want and bind the JNDI
lookups accordingly. But I digress.
There is an interdependency between the ORB and the transaction system,
in that the ORB runs a set of iniializers at startup and when the jts is
enabled these must include the jts service inializers. However, the
transaction system depends on the ORB... (AS7-1494)
Assuming the user does require distributed transactions and the server
is running magically running with the jts enabled, we come to the
problem of distributed transaction boundary demarcation and context
propagation.
Whilst the transaction control traffic always runs over CORBA, the
business logic, typically EJB calls, may not. As far as I can tell
there is as yet no spec or documentation on what we intend to support
here or how tx context propagation and inflow is intended to work.
There is also the question of the extent to which we'll support tx use
by external or legacy clients, be they Java or CORBA. i.e. client to
server or server to older server, rather than between two AS7 instances.
The ClientUserTransaction proxy arrangement in the old AS pre-dated
the jts integration and never worked cleanly with it. We need to come up
with something better.
Who is handling the requirements and design for this in AS7?
Thanks
Jonathan.
--
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SI4 1TE, United Kingdom.
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham (USA), Mark Hegarty (Ireland), Matt Parson
(USA), Charlie Peters (USA)