Salve,

ho realizzato un' applicazione che gestisce l'accesso ad una risorsa web tramite una coda, poichè occorrono più code per gestire concorrentemente più risorse, dove il numero delle code non è noto a priori, vi è la necessità di creare dinamicamente più istanze di una stessa classe servlet che ho realizzato per gestire una singola coda. Mi sono avvalso delle classi ServletRegistration.Dynamic e dei relativi gestori listner e context. Una opportuna servlet dispatcher reindirizza la richiesta del client alla coda competente gestita dalla Servlet istanziata dinamicamente. L'oggetto responsabile della istanza dinamicamente creata è la seguente
codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Queue;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRegistration;

/**
 *
 * @author Administrator
 */
public class queueServletListener implements ServletContextListener  {
    String queueName;
    String servletLocation;

    public queueServletListener(String name) {
        this.queueName=name;
    }

    public String getServletUrl() {
        return servletLocation;
    }

    public void contextInitialized(ServletContextEvent sce) {


        System.out.println("NewServletListener.contextInitialized called");
        try {
            ServletContext sc = sce.getServletContext();
            Class<queueHandlerServlet> servletCl =
                    (Class<queueHandlerServlet>) Class.forName("queueHandlerServlet");
            queueHandlerServlet servlet = sc.createServlet(servletCl);
            ServletRegistration.Dynamic sr =
                    (ServletRegistration.Dynamic) sc.addServlet("queueHandlerServlet", "Queue."+servlet);
                    servletLocation="/"+queueName+"_Servlet";
            sr.addMapping(servletLocation);
            sc.addListener("Queue.queueServletListener");

        } catch (Exception e) {
            sce.getServletContext().log("Error during contextInitialized");
            throw new RuntimeException(e);
        }

    }

    public void contextDestroyed(ServletContextEvent sce) {
        throw new UnsupportedOperationException("Not supported yet.");
        //NOP
    }

}
il parametro name serve ad identificare la servlet istanziata. Ciò è necessario perchè nel forwarding la dispatcher servlet ha bisogno di sapere la url-pattern a cui reindirizzare la richiesta del client. La classe Servlet da istanziare si chiama "queueHandlerServlet".
La suddetta classe viene istanziata nel metodo init() del dispatcher,
in esecuzione non ho errori ma la servlet da istanziare non viene creata, ed il file web.xml non subisce alcuna modifica...
Grazie per la collaborazione

Così come implementata