> IMHO you should start a branch
> in the SVN so others can look at the code.

So, at

https://svn.neo4j.org/laboratory/users/cgioran/neo4j-kernel-jta/

you can find the kernel component with my changes incorporated. The
classes added are

org.neo4j.kernel.impl.transaction.TransactionManagerImpl
org.neo4j.kernel.impl.transaction.TransactionManagerService

that are the hooks for providing custom transaction managers.
The first is an extension of javax.transaction.TransactionManager
adding support for
startup and shutdown, an operation present in all tx managers but not
part of their API. This
provides the ability to plugin custom implementations in the TxModule.
The second is a convenience class that is extended by tx managers that
are to be provided as a service.

Also, changes are present in

org.neo4j.kernel.impl.transaction.TxModule

for using this new way of doing things,

org.neo4j.kernel.impl.transaction.TxManager
org.neo4j.kernel.impl.transaction.ReadOnlyTxManager

for them to fit in this and

org.neo4j.kernel.EmbeddedGraphDbImpl
org.neo4j.kernel.Config

to bind them.

This fork is (or should be) completely compatible with the official
kernel, so it can be used as a drop in replacement. Any deviation is a
bug and if reported it will be fixed.

The second project is at

https://svn.neo4j.org/laboratory/users/cgioran/JOTMService/

and is a sample implementation of a tx manager service for JOTM. To
use this, build it, add the resulting jar to your classpath and, if
you are using the new jta fork of the kernel, you can pass a
configuration parameter of "tx_manager_impl"="jotm" to your
EmbeddedGraphDatabase and presto!, if all is well you will be using a
JOTM TxManager to do your thing.
Of course, the jotm libraries must be also in your classpath, version 2.1.9

If this way of doing things is met with approval, I will write a
complete guide to using the above, implementation and design details
and as a result a how to for adding more external tx managers.

There is more to come.

CG
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to