geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <>
Subject Re: New here...
Date Sun, 29 Apr 2012 22:27:56 GMT

As you have probably worked out by now, our transaction manager is developed under components/txmanager/trunk.
 There's also a more osgi-friendly version in my sandbox.  (the runtime functionality is pretty
much the same, it's just configuration differences).

The tm is entirely xa based (no corba tm features) and fully supports recovery.   It supports
lots of branches but does not currently include any tm-to-tm communication to support distributed
transactions (where one of the branches is a transaction in another tm).  (It does support
j2ca transaction inflow, so from that point of view the hard half of the problem is solved).

Our recovery protocol is AFAIK unique in providing incremental recovery as resource managers
come online.  The way this works is that we name all the resource managers and record the
name with the branch xid in the tx log.  That way when a resource manager reappears after
a shutdown we can definitively dispose of all the branch xids that relate to that resource
manager.  Without this feature, if the tm fails in between commit and recording commit in
the tx log, there is no way to tell if the xids from the committed tx came from a resource
manager that has restarted or one yet to restart.

We haven't provided last-resource 1-phase commit optimization because, well, it doesn't provide
xa guarantees.  We do have an untested feature where you can use a db as the tx log and do
a 1-phase commit on it as the last participant, but this is likely to be a lot slower than
normal xa with a log.

The only way I know of to get better throughput and retain reliability is to find a way to
generate idempotent operations.  I'm certainly interested in any other ideas you may have.

david jencks

On Apr 28, 2012, at 10:20 AM, Julian Klappenbach wrote:

> Hey all!
> I'm just joining on the group, and thought I'd introduce myself.  I've worked in software
development for over 20 years, a good portion of that developing Java enterprise solutions
and applications.  I've previously worked at BEA, before Oracle bought them, and really enjoyed
the work.
> I have a new project for a client that needs a good J2EE stack, and I've been evaluating
the code and documentation for most of the candidates in the market.  Geronimo has really
stood out.
> My primary focus on the stack, at least initially, will mirror the requirements for the
application I'm developing.  The system is to be a transaction processing engine, dealing
with money.  The system also needs to scale, and scale efficiently and effectively.  At first
glance, that's a likely recipe for distributed transactions and XA protocols over all resources
involved in transactions.  There are other ways of solving the issues of DT that sacrifice
consistency for simplicity and speed, but these are often simple hacks or procedural in nature.
 I'm interested in the types of features that could be worked into a transaction engine /
persistence layer to give more options to developers, perhaps coming up with protocols that
offer heuristic recovery functionality without the overhead of DPC.
> I'm also interested in transaction processing married to web services -- be they SOAP,
REST, or JSON via JAX-WS.  WS-AT, WS-Coordination, and WS-BA are all areas that I'd like to
> If any of you are involved in these areas, please get in touch.  I'd like to learn more
about what you're doing and how I may eventually contribute in kind.
> I'm looking at the code base right now, and I've read the documentation on building Geronimo.
 Is there a tag other than the beta release that will give me something stable?  The trunk
has been giving me dependency issues.  I've run bootstrap successfully, but am still hitting
(among other dependency complaints):
> [ERROR] Failed to execute goal on project j2ee-system: Could not resolve dependencies
for project org.apache.geronimo.framework:j2ee-system:car:3.0-SNAPSHOT: Failure to find org.apache.geronimo.framework.features:framework:kar:3.0-SNAPSHOT
> not even halfway through the build.  Are there other targets I need to first execute
in order to ensure that these dependencies are built and installed?  If there's other documentation
online that explain this, just point the way.  Otherwise, a known valid tag would be great.
 I'm considering getting a maven proxy set up so I can grab trunk and mediate packages independently.
> Anyway, as I learn the stack, I'll do what I can to add documentation, etc.
> Cheers!
> Julian  

View raw message