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