Adding a dynamic servlet using servlet 3.0 exception

I need to create add servlets at runtime. When I run the following code.

protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            out.println("<html>");
            out.println("<head>");
            out.println("<title> URI out</title>");
            out.println("</head>");
            out.println("<body>");
            Integer generatedKey = Math.abs(randomiser.nextInt());
            out.print(generatedKey);

            createServlet(Integer.toString(generatedKey),request.getServletContext());

        } finally {
            out.println("</body>");
            out.println("</html>");
            out.close();
        }
    }


    private void createServlet(String generatedKey, ServletContext servletContext) {
        String servletMapping = "/"+generatedKey;

 ServletRegistration sr = servletContext.addServlet(generatedKey, "com.path.lbs.servlets.testDynamic");

        sr.setInitParameter("keyname", generatedKey);
        sr.addMapping(servletMapping);

    }

I get the following error.

java.lang.IllegalStateException: PWC1422: cannot configure mapping for the servlet context / 123-LBS servlet 1114600676 because this servlet context has already been initialized

Can't add new servlets at runtime, that is, after initializing the servlet context, or am I doing something wrong?

+5
source share
1 answer

Is it not possible to add new servlets at runtime, that is, after initializing the servlet context?

. ServletContextListener#contextInitialized().

@WebListener
public class Config implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent event) {
        // Do it here.
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // ...
    }
}

, , . () URI . . - Design Patterns .

+7

All Articles