[
http://www.stripesframework.org/jira/browse/STS-678?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ben Gunter resolved STS-678.
----------------------------
Resolution: Fixed
> DynamicMappingFilter fails with "Could not get a reference to StripesFilter"
> on WAS 6.1
> ---------------------------------------------------------------------------------------
>
> Key: STS-678
> URL: http://www.stripesframework.org/jira/browse/STS-678
> Project: Stripes
> Issue Type: Bug
> Components: ActionBean Dispatching
> Affects Versions: Release 1.5.1
> Environment: WebSphere Application Server 6.1.0.0, JDK 1.5, Servlet
> 2.4
> Reporter: Jan Novotný
> Assignee: Ben Gunter
> Fix For: Release 1.5.4, Release 1.6
>
>
> DynamicMappingFilter fails with message:
> Could not get a reference to StripesFilter from the servlet context. The
> dynamic mapping filter works in conjunction with StripesFilter and requires
> that it be defined in web.xml
> even though StripesFilter is defined in web.xml.
> Problem lies in following statement in JavaDoc documentation of the filter:
> * {...@link StripesFilter} and {...@link DispatcherServlet} need not be
> mapped to any URL patterns in
> * {...@code web.xml} since this filter will determine at runtime whether or
> not they need to be
> * invoked.
> This is like I have had it:
> <filter>
> <display-name>Stripes Filter</display-name>
> <filter-name>StripesFilter</filter-name>
>
> <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
> ... proper init params
> </filter>
> <filter>
> <filter-name>DynamicMappingFilter</filter-name>
>
> <filter-class>net.sourceforge.stripes.controller.DynamicMappingFilter</filter-class>
> </filter>
> <filter-mapping>
> <filter-name>DynamicMappingFilter</filter-name>
> <url-pattern>/*</url-pattern>
> <dispatcher>REQUEST</dispatcher>
> <dispatcher>FORWARD</dispatcher>
> <dispatcher>INCLUDE</dispatcher>
> </filter-mapping>
> Which is correct according to documentation and works for example on Tomcat.
> Problem is that StripesFilter init method needs to be called - it writes a
> specific attribute into the ServletContext that is expected by
> DynamicMappingFilter (naturaly - because it means StripesFilter has been
> initialized). But this method is not called on WAS while having this
> configuration.
> I found out that WAS applies different lifecycle on the filters (I wonder
> whether it doesn't violate the Servlet specification?). It doesn't call init
> methods of filters and servlets on web application start, but delays it up to
> the time when Filters are really needed (means if there is request to the url
> the filter participates in). And when no filter-mapping for the StripesFilter
> is defined - it is never called although its definition is present in web.xml.
> Solution that works for me is simple - just adding filter mapping for Stripes
> filter:
> <filter-mapping>
> <filter-name>DynamicMappingFilter</filter-name>
> <url-pattern>/*</url-pattern>
> <dispatcher>REQUEST</dispatcher>
> <dispatcher>FORWARD</dispatcher>
> <dispatcher>INCLUDE</dispatcher>
> </filter-mapping>
> <filter-mapping>
> <filter-name>StripesFilter</filter-name>
> <url-pattern>/*</url-pattern>
> <dispatcher>REQUEST</dispatcher>
> </filter-mapping>
> And StripesFilter is initialized at last.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://www.stripesframework.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development