Hi All,
Just to let you know where I am with OpenEJB in a real world application.
My environment is 32 and 64bit Vista/7 with JDK 32/64 1.6.19 in all
combination's (ie. 32bit JDK on 64bit OS etc.)
I am working off the trunk with a few changes - all JIRA'd, but
specifically ActiveMQ RA on AMQ 5.4, Quartz 1.8.0 as a Service (using
the service.xml) and the TempClassLoader.
I carefully analyze changes to the trunk before pushing to my local
build, but currently have no issues except for the aforementioned
changes / additions.
My client project consists of an embedded OpenEJB and Hibernate using
the Derby 10.3 branch - This acts through an API as a local cache for an
AOI machine system, which also gives the system a critical offline
capability during operation. The client uses a combination of lazy and
real time replication of data to a remote server through a daisy chain
API - all controlled by AMQ. I use Quartz jobs for periodical monitoring
and maintenance of data, and gain access to the Scheduler over JNDI - so
not really using the container. A client may operate on several AOI
machines - Each machine is represented by a specific application.jar
context in OpenEJB that uses a separate database instance. This gives me
the ability to provide a version-ed application on a per machine basis
that can be dynamically loaded and unloaded as required - but still uses
the same code base.
The only hurdle I really had to overcome in OpenEJB was to write my own
deployer due to the necessity of having to dynamically deploy and
undeploy data sources for the application persistence units - something
that I felt was missing from the first day I started using OpenEJB.
The server is a remote OpenEJB instance which hosts an identical
application.jar per machine, but uses a replicated PostgreSQL for
backend storage. The daisy chain API acts as the replication bridge
between the client and server applications. The real benefit of using
OpenEJB has been the ability to create a client and server application
that are virtually identical. The server has an additional application
that monitors, maintains and provides information on all currently
loaded machine applications.
The storage solution development has just over a thousand unit tests
(constantly growing) that test online and offline storage and
replication. The local cache application is providing a good response
with over a terabyte of cached data in Derby. The server has been stress
tested up to 20TB running 20 application instances, but in the real
world we are unlikely to have more than 4 machines.
It was my initial plan to just use OpenEJB for testing, and then JBoss
for the real world application. Everything is running so well on OpenEJB
that that plan has changed and I am going into production with OpenEJB -
at least where transactional clustering is not a requirement.
Thanks for a great product - and branch or not, I will be using OpenEJB
for many years to come!
Best regards,
Andy.
PS. I am always looking for and eager to use the latest iteration of
many projects around OpenEJB, so ActiveMQ , Quartz and Derby trunks have
been heavily tested by myself during development - and I have found and
contributed to the resolution of several bugs in all of them. I know
what I currently have has proven itself stable in our relatively
demanding environment.