Hello, all.

I've been meaning to drop in for quite a while.  I've been following Struts for
a couple of years and using it with few complaints or questions.  Earlier this
year I hit some roadblocks in an application design, downloaded and read the
entirety of the source code and took some issues with the architecture.
However, since Struts' feature offering is top-notch and since the servlet
framework community is rife with division, I decided not to be an ass and
complain about it unless I was willing to back it up with some CODE.  Instead, I
went shopping.  I checked out webwork, read the entirety of Rickard's code, and
even forked off a small branch for my purposes, but came to similar conclusions
about the design.

But again, I didn't think it would be productive or polite to force the issue to
either of your two communities.  It's been my experience that a lot of people
will gripe and criticize other people's software--especially the most popular
and used software, but they'll never add a lick of positive, constructive
feedback in the form of living code, the ultimate contribution to our little
society.  Code speaks louder than words.

So anyway, while working on clientware for the MX4J and Geronimo projects this
autumn, I designed and wrote a servlet framework from scratch to handle my
needs.  It has an aspect-oriented workflow engine that can add crosscutting
system logic (like form processing, L10N, security, logging, etc) dynamically at
runtime (without having to mess around with the bytecode).  It can trade actions
across classloader boundaries, enabling web applications to span across multiple
.WAR files.  This allows users to drop in a new .WAR with new metadata and new
actions, which updates the application workflow at runtime across all modules in
the application namespace.  It handles workflow versioning and version rollback
(in case you make changes you come to regret).  It does instance pooling of all
components and sequences.  Every aspect of the system can be managed with JMX at
runtime.  To my knowledge, it should work with every type of Presentation
technology.  The concerns of the underlying framework are separated from those
of the feature platform.  Almost every component in the core framework and the
corresponding feature platform ultimately implement one of three interfaces:
DataSource, Workflow or Action; I didn't even try to reconcile with the MVC
antipattern because I don't think it reflects the needs of the technology.

All end-user interaction with the framework is done through a simple client
package.  The configuration file is dirt-simple and is processed into metadata
beans in the framework which are pooled and used to direct workflow.

Basically, it's just really neat and I'm having a lot of fun working on it  : )

The reason I'm telling you all this is because I designed it so you could
implement your entire feature platform (form processing & validation, i18n,
resource bundles, whatever) on top of it, without much difficulty.  Of course, I
don't *expect* you guys to do this, but it's possible and probably wouldn't be
that tough.  Same goes for WW and other frameworks.  So now (surprise) you have
even *more* options.

(I also noticed that you guys are working on a chaining implementation.  Since
my core framework performs this, I thought I should finally get in touch.)

It's licensed under the Academic Free License (the ultimate business-friendly OS
license), and I've got the beginnings of a web page up for it at
http://shocks.sf.net.  There are API docs and sample code available, although
the framework is in alpha and I'm still refactoring the core components.  (Oh
yeah--the core is pluggable, too, in case we decide to hate it later on ; )

If this interests any of you, please drop me a line.  I've got some test
applications running successfully against it, and I'll be using it to build a
management console for Geronimo.  If there is any way I can help you guys out,
please let me know.  If not, good luck and

Kind Regards,
--
N. Alex  Rupp ([EMAIL PROTECTED])


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to