Loom viability
Terry Laurenzo <[email protected]> Mon, 15 Dec 2003 10:45:28 -0700
| Newsgroups | gmane.comp.java.jcontainer.interest |
|---|---|
| Message-ID | <[email protected]> |
Forgive me if parts of this message are redundant or have been answered
before... I am new to this list. If any part has been answered, please
point me in the right direction.
When is a Loom release planned? My shop and I are what could be called
"Phoenix refugees". We have a large investment in the Phoenix
platform. One of the primary problems that I have observed with Avalon
over the years is that it tends to drift towards "ivory tower" thinking
quite often. It seems that radical changes of direction happen
regularly without a huge eye towards maintaining compatibility (this is
just an observation... please don't flame me). Just from browsing the
JContainer site and the DNA library (which looks a lot like Avalon
framework but without all of the silly package distinctions), it seems
that this project is focused more on real-world problems than Avalon
is/was.
With development on Phoenix ended, I need to come up with a migration
path towards whatever the best solution is. I have been tracking Merlin
for a bit, but I am uncomfortable with it for a number of reasons.
So, I am leaning towards adoption of Loom to preserve our existing
investments and as a platform for the future. However, I have been
burned once by adopting pre-release Phoenix capabilities and I would
like a clear statement of direction.
In addition to a direction, comments on the following points would be
appreciated.
1. In my environment, it is infeasible to introduce an entirely new
"top level" container. For a number of reasons (many of which are
political instead of technical), it is easier to embed a system like
Phoenix into an existing container (ie. servlet container) instead of
hosting it standalone. I know that Phoenix (even into the 4.1 branch)
was not very good at this. We accomplished it by creating a
"SimpleAppEmbeddor" which managed all of the steps of assembling the
minimum pieces of the kernel required to get a functional Phoenix
system. This implementation did not support JMX, the classloading
semantics, security constaints or deployment of SAR files. It simply
ran off of the existing classpath and was parameterized with an
assembly and a config file (no environment file). We then provided
bindings which allowed this SimpleAppEmbeddor to be easily brought up
in a Servlet. This light-weight implementation was so successful that
we created a CLI version which allowed us to launch daemon processes by
just providing the assembly and config file (again bypassing the SAR
process).
The problem with this approach is that the APIs that SimpleAppEmbeddor
relied on were Phoenix internal and changed constantly. In addition,
the dependencies of each of the kernel components was not documented,
and they too changed frequently.
I think there is value to having a light-weight version of the
container which is easily useable like this. It lowers the bar for
adoption and makes doing simple things simple. If the application
outgrows the confines of this limited environment, it could always be
converted to a SAR and hosted in the larger Phoenix/Loom container with
little re-engineering effort.
Are there any plans for supporting such a paradigm? If not, are there
plans for at least shoring up the internal Loom kernel structures so
that a third party implementation such as this would be relatively
stable from version to version? Assuming you are not opposed to such
an idea, would you care for code contributions that allowed Loom to be
run in this embedded mode?
2. One of the features which I believe made Phoenix attractive arrived
in the 4.1 developer branch. This was the notations around specifying
maps or arrays of dependencies (appending [] or {} to the role). It
seems that the rest of the Avalon community is stuck in some kind of
religious war revolving around whether ServiceSelector is evil and what
to do about it. I thought that the multi-dependency notation was a
good solution to this problem that no one seems to like but clearly
needs a solution. Is this functionality sanctioned in Loom? Are you
planning any extensions to it?
3. It is clear that Loom and the JContainer project are intended to be
complete forks of Avalon. My observation is that DNA is analogous to
Avalon framework (with much simplified names). This is all well and
good, but is there a commitment to keep Loom capable of hosting
components/blocks written to the Avalon framework interfaces as opposed
to the DNA interfaces?
BTW - I like how Loom only has a couple of dependencies. It was
getting night-marish keeping the Avalon/Phoenix/Excalibur dependencies
straight.
Thanks for your time.
Terry Laurenzo