Saturday, January 19, 2013

Servlet 3.0 ( Dynamic registration of Servlet and Filters )

One can add / register  servlet or filters dynamically at context initialization time . ServletContext has methods to register is dynamically.

 ServletRegistration.Dynamic addServlet(java.lang.String servletName, java.lang.Class  < ? extends Servlet > servletClass )
Adds the servlet with the given name and class type to this servlet context.
 ServletRegistration.Dynamic addServlet(java.lang.String servletName, Servlet servlet)
Registers the given servlet instance with this ServletContext under the given servletName.
 ServletRegistration.Dynamic addServlet(java.lang.String servletName, java.lang.String className)


 Below is an example 

MyCtxInitializer extends ServletcontextInitializer {

void contextInitialized(ServletContextEvent sce )
{

             ServletContext ctx = sce.getServletContext();
             ServletRegistration.Dynamic dyna = 
                           sce.addServlet("newServlet " , NewServlet.class);  
             //NewServlet  must  be  a  servlet class extending Servlet
             dyna.addMapping("/OneServlet");  // map to  URL Pattern

           try{

                  Servlet xyz = ctx.createServlet (SecondServlet.class);
                 dyna.addServlet("secondServlet",xyz);
                 dyna.addMapping("/TwoServlet");

                }catch(Exception ex) {}
 
}

void contextDestroyed(ServletContextEvent sce){ }

}

Similarly for Filter and Listener .

No comments: