[OFBiz] Dev - More on Infrastructure (JOTM/Minerva vs Geronimo, etc)
David E. Jones
jonesde at ofbiz.org
Mon Mar 6 02:52:40 CST 2006
I spent a few hours today researching Geronimo, mainly because it
seems to be the best candidate as an alternative to the current tools
we are using, which have some licensing issues (JOTM and Minerva).
With Minerva there is also a disadvantage that we are stuck
maintaining it. After a few bug fixes early on everything seems to be
okay with it, but the license clearance for use in the Apache-ized
OFBiz will be trickier.
Anyway, I could sum up research into Geronimo as a fresh bad taste in
my mouth. It's been over 2 years since we moved to our own container/
component infrastructure so that J2EE implementation modules would
run inside OFBiz instead of OFBiz running inside an app server. I was
really hoping that in that time the standards would improve. They
haven't. I was also hoping that at least in Geronimo we would find
that the always necessary proprietary extensions (because the core
standards are woefully inadequate) to be more convenient.
All we really want is to have an application that includes a set of
lower level tools, web applications, etc in a single package that is
easy to deploy, even for someone that is not technical nor familiar
with how the lower level tools are organized or built. That was the
main goal with the OFBiz component stuff, and it has been great to
work with for the last couple of years.
Back to Geronimo: using an EAR file (which can be deployed "exploded"
or in a directory instead of an EAR zip file) gets us pretty close,
and with the Geronimo proprietary extensions we can refer to general
jar files (don't seem to be able to do exploded directories of
classpath resources... would have to try that), but the problem is
they can't be inside the EAR... It's really frustrating that they
have gone with one of the things that I so didn't like about Tomcat
that it was one of the big reasons we used Jetty for a long time:
that you must copy the jar files into their directories instead of
referring to them where they live "naturally".
So, we could ship with Geronimo instead of the container stuff, but
we have various classpath issues to resolve. We could take all of the
third party libraries we use and put them under the geronimo/
repository directory using their directory organization conventions,
and then in the OFBiz build have it drop all jars it makes under the
geronimo/repository directory, and then refer to those in probably 2
EARs (one for framework, one for application that would depend on the
framework EAR).
There is some more unpleasantness... If we can't find a way to refer
to certain directories in their current locations but instead are
forced to put them in a jar file, we are going to lose some
convenient change and retry stuff we can do now, mainly with the
scripts on the classpath (all files in each component/script
directory, mostly simple-method XML files). This whole classpath
thing in an app server is messy enough that it would be nice to get
everything _off_ the classpath that we can. In other words, we'd move
to directories relative to a component home directory instead of on
the classpath. This would require a fair number of changes, like the
location of every single simple-method location in their service
definitions.
It would be really nice to have an easy way to deploy in other app
servers, but the standards bodies are not being overly helpful...
Short of that, it would at least be nice to deploy easily deploy in a
certain app server that we can deliver with OFBiz for easier out of
the box usage, since probably the majority (head count wise) of OFBiz
users just use it out of the box rather than deploying it in a
separate app server, and most of us would probably prefer to not have
to deal with the app server configuration and deployment...
Anyway, that's my rant for today. I've been trying to think of
creative ways around this... For example:
1. Use the lower-level Geronimo jars embedded in OFBiz, kind of like
the JOTM, etc jars are. This has the unfortunate disadvantage that
these don't appear to be designed for this, so it could be rather
tricky...
2. Create Geronimo-specific GBeans to do classloader changes in Java
code rather than configuration. This would be pretty non-standard and
experimental, and even if it did work initially it would be possible
for changes to be made in Geronimo that would break our stuff, or
perhaps require changes to our code (if we're lucky). I'm not sure if
this would even work... Right now we play with the classloader a LOT
on startup and my hope is that we could move this code over...
One way or another it would be nice to use the current config files
as-is to avoid redundancy, though that may not be possible. We may
have to have 2 lists of classpath resources and webapps and what not.
Actually that means we have to have one set for each app server, and
for each variation over time/versions of that app server. We tried
doing that once and it is a REAL MESS! I'd rather not go there again.
Andy has been working on this and communicating with some of the
Geronimo people. Hopefully we'll find a good resolution to this. If
anyone has any ideas or wants to help out with this, that would be
great.
I know Andy has some stuff to take care of some things, like I guess
some GBeans and such, and perhaps we can create a branch in SVN or a
set of resources that aren't being used by default (this would be my
preference to make it easier for people to play with it).
-David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2466 bytes
Desc: not available
Url : http://lists.ofbiz.org/pipermail/dev/attachments/20060306/60eaecc1/smime.bin
More information about the Dev
mailing list