[
https://issues.jboss.org/browse/AS7-5802?page=com.atlassian.jira.plugin.s...
]
Cheng Fang commented on AS7-5802:
---------------------------------
ServletContext javadoc
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#add...
says
Registers the given filter instance with this ServletContext under the given filterName.
---------------
Currently AS 7 always uses the container-managed instance (instantiated with default
no-arg constructor), instead of the application-created filter instance, to perform
doFilter. In most cases, this is ok, but if the filter has instance-specific state,
things can go wrong.
The application-created filter instance is not used and GC'ed once it's out of
scope, even before undeployment.
New instance of the filter in always created
--------------------------------------------
Key: AS7-5802
URL:
https://issues.jboss.org/browse/AS7-5802
Project: Application Server 7
Issue Type: Bug
Components: Web
Affects Versions: 7.1.1.Final
Reporter: Martin Vanek
Assignee: Remy Maucherat
Labels: filter
Attachments: filtertest-0.0.1-SNAPSHOT.war, filtertest.zip
I have created Servlet 3.0 filter in WebApplicationInitializer.onStartup() for example
the following way:
public void onStartup(ServletContext servletContext) throws ServletException {
String servletName = "someServlet";
String[] mappings = new String[] {"*.html"};
Servlet servlet = FooServlet();
ServletRegistration.Dynamic s = servletContext.addServlet(servletName, servlet);
s.setLoadOnStartup(1);
s.addMapping(mappings);
Filter filter = new FooFilter("argument");
String[] servletNames = new String[] {servletName};
FilterRegistration.Dynamic f = servletContext.addFilter("fooFilter",
filter);
f.addMappingForServletNames(null, false, servletNames);
}
My problem is that jboss-web implemntation 7.0.13+ in StartdardContext.filterStart()
along with ApplicationFilterConfig.getFilter() always tries to create new instance of the
Filter via default constructor.
My FooFilter does not have default constructor and therefore my application cannot be
deployed.
Please, check current implementation in Tomcat 7.0.32, which does not contain this
problem.
Also I have found that ApplicationFilterConfig has two similar atributes named filter and
filterInstance. I guess it is quite wrong implementation and it is related to my problem.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira