On 8/16/06, Craig McClanahan <[EMAIL PROTECTED]> wrote:


On 8/16/06, Joe Shevland
<[EMAIL PROTECTED]> wrote:
> Hi,
>
> Sorry if this has been discussed but I haven't found a huge amount of
> discussion on it, just a few comments describing that it was an
> important and necessary change. Some time around Shale 1.0.3 changes
> were introduced which meant you needed to deploy to a Servlet API 2.4
> compliant container. This has left us in the difficult position of
> either ripping out Shale or sticking with an increasingly dated version,
> as unfortunately we're stuck with a 2.3 servlet container.
>
> Since 1.0.2 there's already been a few patches we've needed, and I
> suspect that'll increase as its given more of a workout (certainly the
> validation area has needed a few backported patches, the JSF
> filter/controller aspect is working fine). Where I'm heading with this
> is has anyone tried any workarounds to get the latest release to deploy
> under a Servlet 2.3 environment? Or are the changes fundamental in
> nature... I was hoping someone had just packaged up a few of the
> required javax.servlet classes into a minijar and voila. I'm guessing
> not given the classes in question and the need for container support,
> but thought I'd ask the question. Or I was going to ask whether its
> feasible to implement the functionality provided by the 2.4 spec in a
> different fashion, if the changes are fairly localized, we would happily
> take the time to do that too if theres an indication its possible.
>
> Cheers
> Joe
>
>
>

The dependency that would be the hardest to try to work around is the use of
a ServletRequestListener to fire init/destroy events for view controllers
and related beans.  This API did not exist in Servlet 2.3, although it
*might* theoretically be possible ot use a Filter to do some of this stuff.


This change to servlet 2.4 might be the reason why I could not get
shale 1.0.3 to work inside WebSphere Portal 5.1.  My application would
not even start anymore.

Is there any way that I can get my application to start up in the
container that supports only 2.3?  I realize that I may need to
sacrifice some capabilities of shale.

Two other questions... Does the use of shale-clay require the use of
shale-core?  Also could the ViewController functionality be relocated
as a Phase Listener - the reason that I am asking is that portals do
not have the ServletRequest or Filter entry points?


The other dependency, which I can't see any way around, is if you are using
the application controller filter, and you want that to apply to
RequestDispatcher.forward calls as well -- there's no way to emulate this
technique in 2.3.  But it's not necessarily something that would affect all
users of Shale, the way the first issue is.

One of the hard parts about designing frameworks is deciding how to balance
between supporting old APIs (to deal with users like you who are stuck and
can't change) versus focus on enabling the use of new things.  J2EE 1.4
(which includes Servlet 2.4) has been around for a couple of years now, and
it would make building Shale a *lot* more complicated (plus limit what we
can do) to support older revs, when the opportunities to improve ease of use
through leveraging new APIs are there, and have been there for quite a
while.

I really sympathize with your position, but I think Shale needs to maintain
it's base platform dependencies including Servlet 2.4 in order to address
the current and future needs.

Craig


Reply via email to