Ok, I promised a more detailed proposal, so here it is:

http://cwiki.apache.org/confluence/display/S2WIKI/Struts+2.5+Based+on+OSGi

I converted Jeromy's goals into a more proper tech spec (with the
pretty diagrams to follow...)

I highly recommend those not familiar with OSGi to take a look at the
references section, specifically the tutorials.  OSGi brings some
significant, game-changing elements to the table, so to fully
understand the proposal and its possibilities, give them a look.

I'll be updating the proposal to incorporate more feedback as I
receive it.  I'll be at JavaOne next week, so swing by the Atlassian
booth and let's talk shop.

Don

On Sat, Apr 26, 2008 at 2:21 PM, Jeromy Evans
<[EMAIL PROTECTED]> wrote:
> Putting aside the technology for a moment:
>  - ability to deploy new actions/replace actions and pages without a
> container restart: highly desirable
>  - ability to deploy new/replace business-layer services without a container
> restart: highly desirable
>  - ability to evolve Struts2 without fear of breaking an API; highly
> desirable
>
>  If, through appropriate packaging, OSGi facilities those requirements that
> them I'm all for it. At this point I don't have a good appreciation of what
> *actually exists* in this area.
>
>  I'd take care to ensure Struts2 continues to target entry-level containers
> though (ie. Tomcat rather than Glassfish).
>
>  Don Brown wrote:
>
> >
> >
> >
> > As I learn more and more about OSGi, I wonder if it might be the
> > solution to several big problems we seem to have at the moment: poor
> > reloadability and the lack of a solid API.  With OSGi, you can drop
> > bundles in and out of the system at runtime, even running multiple
> > versions of the same bundle side-by-side, but the feature I'm most
> > interested in right now is how it would allow us to put in a proper
> > API while maintaining full backwards-compatibility.
> >
> > Evolving a web framework is hard because apps tend to be written on a
> > specific version, and to migrate them to new versions has two
> > problems: development may not be continuously funded and the upgrade
> > may require too many changes to the application.  On the other hand,
> > if you don't evolve your web framework, you quickly go out-of-date and
> > lose interest from new developers.  In our case, despite being a
> > relatively new framework, we have legacy code around from 2004 that we
> > can't just remove, yet we want to provide an attractive, modern, clean
> > framework for new development.
> >
> > The specific issue it hand that I've been thinking about is how to get
> > a proper API into Struts 2 yet keep backwards compatibility, and I
> > think OSGi might provide a solution.  What about this:
> >  1. Struts 2 and its plugins remain the way they are now - 100%
> > backwards-compatibility
> >  2. An OSGi plugin provides the platform for the next generation of Struts
> 2
> >  3. A new API bundle is created, implemented by the underlying Struts
> > 2 framework
> >  4. Old apps can continue to write and deploy code against Struts 2,
> > yet new development can start to use the new API
> >  5. Later, when we want to write API version 2, we create a new bundle
> > that runs side-by-side the old bundle, both implemented by Struts 2
> >
> > Basically, OSGi would allow us to write a clean layer on top of a
> > framework, much like how Grails builds on Spring, but we get, as a
> > side benefit, all the architectural advantages of OSGi for free.
> > Furthermore, if we do it right, users don't have to know or care that
> > OSGi is under the hood - all they know is they write a jar, drop it in
> > a directory or upload it via a form and they just installed part of
> > their application at runtime.
> >
> > Don
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
> >
> >
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>

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

Reply via email to