hi,guys:
these days i am reviewing the code of the portlet filter. the portlet
filter in pluto2.0 is so different from the servlet filter.
everytime a filter is called, it initialed, doFilter,and then destroyed. 
take the action filter for example, we may find the code in the
org.apache.pluto.driver.services.container.FilterChainImpl

 public void doFilter(ActionRequest request, ActionResponse response)
throws IOException, PortletException {
...
    ActionFilter filter = (ActionFilter)
loader.loadClass(filterDD.getFilterClass()).newInstance();
    FilterConfigImpl filterConfig = new
FilterConfigImpl(filterDD.getFilterName(),filterDD.getInitParam(),portletContext);
    filter.init(filterConfig);
    filter.doFilter(request, response, this);
    filter.destroy();
...
}


But it isn't like that in servlet filter. so i writer a servlet filter,

public class TestServletFilter implements Filter {
 private int i;
 public void init(FilterConfig arg0) throws ServletException {
  i = 0;
  System.out.println("TestServletFilter init...");
 }
 public void destroy() {
  System.out.println("TestServletFilter destroy...");
 }
 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
  i++;
  System.out.println("TestServletFilter msg\t="+i);
 }
}


then i get the output from the console
---------------------------------------
TestServletFilter msg   =1
TestServletFilter msg   =2
TestServletFilter msg   =3
TestServletFilter msg   =4
TestServletFilter msg   =5
---------------------------------------

 also i write a portlet filter,and the output is
---------------------------------------
TestPortletFilter:      TestPortletFilter init...
TestPortletFilter Render iRender=1
TestPortletFilter:      destroy iRender=1
TestPortletFilter:      TestPortletFilter init...
TestPortletFilter Render iRender=1
TestPortletFilter:      destroy iRender=1
TestPortletFilter:      TestPortletFilter init...
TestPortletFilter Render iRender=1
TestPortletFilter:      destroy iRender=1
---------------------------------------


and i donot think we need a new instance everytime.

Reply via email to