FWIW, JAX-RS/Jersey provides both a Filter and a Servlet option as a 
controller, however the Servlet came first.

        http://java.net/jira/browse/JERSEY-122

Note the bug mentions Wicket also uses a Filter. The bug also provides an 
interesting reason for the use of a filter

        to intercept "all HTTP calls against a path but only consumes those 
calls it can handles. All other calls are
        allowed to continue and get handled by another Servlet or Filter."

  --joe


Joseph Mocker   |   Velti   |   Senior Software Architect
t +1.650.566.7033   m +1.408.676.6625
e jmoc...@velti.com   @Mobclix

The leading global technology provider of
mobile marketing and advertising solutions

On Aug 14, 2012, at 12:41 PM, Rene Gielen wrote:

> No worries, always good to question - review - rethink
>
> If there is serious interest in an alternative servlet dispatcher besides 
> FilterDispatcher, contributions are welcome. From the top of my head, the old 
> dispatcher is still around as deprecated, and most of the dispatcher 
> functionality resides in a delegate.
>
> - René
>
> Sent from my iPad
>
> On 14.08.2012, at 20:21, Struts Two <struts...@yahoo.ca> wrote:
>
>>>> I remember more than one case where I found WAS / Websphere Portal to 
>>>> implement a very ... say ... at least ... imaginative interpretation of 
>>>> the specs
>>
>> That is exactly the point,the compromise of "clear-cut" sections of spec in 
>> favor of "unclear, murky, interpretive" sections of spec in struts 2 much 
>> like IBM. There is no "interpretation" on whether a Servlet can/should be 
>> used to server resource but when it comes to filters there is. And quite 
>> rightfully so,  as there may be darn compelling reasons to do so, since 
>> things quite few often do not follow patterns put in black and white. I am 
>> not trying to stir an endless discussion on what interpretation is correct 
>> as there will be no consensus. And I do not know what has been the darn 
>> compelling reason that could have not gotten away with using a Servlet as 
>> front controller in struts 2, but I would have loved to have the option of 
>> using a Servlet as my front controller in struts 2.
>>
>> With all said, I did not mean to belittle struts 2 or take a jab at any 
>> struts 2 contributor in my previous comment. And I believe it is very 
>> honorable of you to try make the tool available to the development community 
>> for free by putting a lot of work in your free and personal time. I just 
>> wanted to reflect the opinion for some spectrum of struts user community 
>> though may be small in numbers.
>>
>>
>> ----- Original Message -----
>> From: Rene Gielen <rgie...@apache.org>
>> To: Struts Users Mailing List <user@struts.apache.org>
>> Cc:
>> Sent: Tuesday, August 14, 2012 12:10:56 PM
>> Subject: Re: Benefits of using Filter as front controller
>>
>> So far I fail to see where Struts 2 deviates from or violates the spec.
>> The fact that _usually_ a front controller - a concept not to be found
>> at all in the servlet spec - is implemented as servlet does not mean
>> that it _has_ to be implemented that way, unless the spec says or
>> clearly implies otherwise. For what I found in the and cited earlier,
>> this is not the case.
>>
>> That WAS *interprets* the spec in a different way - especially when it
>> comes to a tooling level that has nothing to do with the spec whatsoever
>> (parsing web.xml to generate loadbalancing / proxy webserver
>> configuration) - is a totally different story. To some extent I
>> understand the rationale behind this, implying a servlet mapping should
>> exist for a given URL - but besides IBM claiming this has to be the
>> case, I haven't found any evidence so far. Interestingly, when it comes
>> to IBM support saying Struts 2 deviates from the spec, I remember more
>> than one case where I found WAS / Websphere Portal to implement a very
>> ... say ... at least ... imaginative interpretation of the specs. I'm
>> not quite sure if them saying that Struts 2 deviates makes a case for
>> this being a fact to count on. But again, I'm happy to hear I'm wrong if
>> someone could clearly point out what I might have missed when reading
>> the spec.
>>
>> Side note - sorry to say, but in my very personal and for sure not
>> representative experience, every time a "some application servers might
>> have issues" case arises, there is a good chance that _some_ of them
>> share a common product line name, starting with "W" :) And well, going
>> through hell when deploying apps to WAS* is something I suffered from
>> myself many times, with various different frameworks and technology
>> stacks in use.
>>
>> I'll try to wrap up my points:
>> - the filter-based dispatching addressed real and serious technical
>> integration issues, and was able to solve them
>> - if it would violate the spec, we would *have to* remove it again, or
>> at least deliver a then spec conform dispatcher servlet as alternative -
>> so far there seems to be no evidence this is the case
>> - the Struts team *can for sure do much better* in documenting the
>> possible glitches, especially after what we learned from this thread and
>> your experiences; we should point out that using a filter dispatcher
>> might impose the need to add a default dummy servlet mapping to help
>> some application servers
>>
>> BTW: I agree, Spring MVC became a great framework once they dropped the
>> inheritance-based controller madness, replacing it with annotation based
>> POJO configuration and heavy AOP magic. Nevertheless, Struts 2 has a lot
>> of sweet spots even over Spring MVC, as to my opinion as a user of both :)
>>
>> Cheers,
>> - René
>>
>> Am 14.08.12 15:46, schrieb Struts Two:
>>> What people are missing here is that using filters and deviating from the 
>>> spec as front controller would cause quite a few issues when some 
>>> applications servers are used. I quite clearly remember that I went through 
>>> hell to deploy my applications on WebSphere applications with an Http 
>>> server as front Web server. WebSphere goes through web.xml files and uses 
>>> Servlet URL mappings to generate the plugin file for resource mapping and 
>>> filters are ignored. Even when I opened a pmr, I was told by support that 
>>> struts 2 deviates from the Spec. when you pick a framework, you got to be 
>>> aware that these things may cost you dearly down the road depending on what 
>>> application servers you use or you plan to migrate.
>>>
>>> As much as I have been an avid struts user [specially struts 1], I 
>>> personally think that you should seriously consider Spring MVC / MVC 
>>> Portlet against any other framework. I ,per se, have had a great experience 
>>> with Spring MVC which somehow brings up the good memories of struts 1 [once 
>>> everything is put in the context of its time]
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: "umeshawas...@gmail.com" <umeshawas...@gmail.com>
>>> To: Struts Users Mailing List <user@struts.apache.org>
>>> Cc:
>>> Sent: Monday, August 13, 2012 2:05:45 PM
>>> Subject: Re: Benefits of using Filter as front controller
>>>
>>> Rene
>>> Thanks for such a detailed explanation and descrbing each and every aspects
>>> Now even I can say and explains things in much more and good way
>>> Sent from BlackBerry® on Airtel
>>>
>>> -----Original Message-----
>>> From: Rene Gielen <rgie...@apache.org>
>>> Date: Mon, 13 Aug 2012 20:00:04
>>> To: Struts Users Mailing List<user@struts.apache.org>
>>> Reply-To: "Struts Users Mailing List" <user@struts.apache.org>
>>> Subject: Re: Benefits of using Filter as front controller
>>>
>>> Grabbed me a copy of Servlet Spec 2.4:
>>>
>>> <quote>
>>> SRV.6.1 What is a filter?
>>> A filter is a reusable piece of code that can transform the content of
>>> HTTP requests, responses, and header information. Filters do not
>>> generally create a response or respond to a request as servlets do,
>>> rather they modify or adapt the requests for a resource, and modify or
>>> adapt responses from a resource.
>>> </quote>
>>>
>>> "do not generally" is way different from "may not", right?
>>>
>>> Reading both the relevant parts of the spec and the API docs again, I
>>> cannot see any violation of the servlet specification by using a Filter
>>> for doing the dispatching, rather than a Servlet.
>>>
>>> The other part is how requests are mapped, which imposes the question if
>>> a servlet mapping matching the request URL must exist:
>>>
>>> <quote>
>>> SRV.11.1 Use of URL Paths
>>> [...]
>>> 1. The container will try to find an exact match of the path of the
>>> request to the path of the servlet. A successful match selects the servlet.
>>> 2. The container will recursively try to match the longest path-prefix.
>>> This is done by stepping down the path tree a directory at a time, using
>>> the ’/’ character as a path separator. The longest match determines the
>>> servlet selected.
>>> (ad 2.: Previous versions of this specification made use of these
>>> mapping tech- niques as a suggestion rather than a requirement, allowing
>>> servlet con- tainers to each have their different schemes for mapping
>>> client requests to servlets.)
>>> 3. If the last segment in the URL path contains an extension (e.g.
>>> .jsp), the servlet container will try to match a servlet that handles
>>> requests for the extension. An extension is defined as the part of the
>>> last segment after the last ’.’ character.
>>> 4. If neither of the previous three rules result in a servlet match, the
>>> container will attempt to serve content appropriate for the resource
>>> requested. If a "default" servlet is defined for the application, it
>>> will be used.
>>> </quote>
>>>
>>> Point 4 is crucial. As to my opinion, it doesn't state clearly if a
>>> default mapping must exist or not, which leaves it IMO up to the container.
>>>
>>> That said, most frameworks use dispatcher servlets, and WebWork / Struts
>>> 2 once did as well.
>>>
>>> The rationale behind switching to the Filter architecture was to deal
>>> better with integrating technologies such a Sitemesh or Portlet, which
>>> both profit from splitting the dispatching in more than one phase. This
>>> could only be accomplished by using filters rather than servlets. Since
>>> then, e.g. all major problems with sitemes integration magically
>>> disappeared.
>>>
>>> So my point of view is that there is nothing wrong with using filters
>>> for dispatching. If the container interprets the servlet spec in an
>>> opposite way, a dummy default servlet mapping should do the trick.
>>>
>>> Nevertheless I'm happy to hear about points I might have missed or
>>> misinterpreted.
>>>
>>> - René
>>>
>> <snip/>
>>
>> --
>> René Gielen
>> http://twitter.com/rgielen
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to