Frage

Das Problem ist einfach, aber ich bin schon ein wenig kämpfen.

Server server = new Server(8080);  
Context context = new Context(server, "/", Context.NO_SESSIONS);
context.addServlet(MainPageView.class, "/");
context.addServlet(UserView.class, "/signup");
server.start();

Das ist ein ziemlich Standard Stück Code, das Sie überall in Jetty Welt finden können. Ich habe eine Anwendung, die Jetty als Servlet-Engine bettet und hat einige Servlets.

Instanziierung von einigen dieser Servlets erfordert schwere Arbeit beim Start. Sprich - zusätzliche Konfigurationsdateien lesen, die Verbindung zur Datenbank usw. Wie kann ich die Servlet-Engine instantiate alle Servlets eifrig machen, damit ich all die harte Arbeit im Vorfeld und nicht auf der ersten Benutzeranforderung tun

War es hilfreich?

Lösung

Ich bin mir nicht sicher, warum Guice machen die Verwendung von Justins Option nicht für Sie arbeiten. Was genau wird in immer injiziert? Ich bin mir nicht sicher, ob dies würde Ihnen überhaupt helfen, denn es ist sehr ähnlich zu dem, was Justin schrieb oben, aber wenn man es auf diese Weise tut, wird Jetty tut das tatsächlich instanziieren.

Context context = new Context(server, "/", Context.NO_SESSIONS);
ServletHolder mainPageViewHolder = new ServletHolder(MainPageView.class);
// Do this to force Jetty to instantiate the servlet
mainPageViewHolder.getServlet();  
context.addServlet(mainPageViewHolder, "/");

Andere Tipps

Mit der Context.addServlet Überlastung, die ein ServletHolder nimmt. ServletHolder ist eine Klasse, die entweder eine Klasse oder eine Servlet-Instanz akzeptiert.

Servlet myServlet = new MyServlet();
ServletHolder holder = new ServletHolder(myServlet);
context.addServlet(holder, "/");

Dies setzt voraus, Jetty 6. Ich denke, es ist für Jetty 7 als auch funktionieren wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top