¿Cómo hacer que el motor de servlet integrado cree instancias de servlets con entusiasmo?

StackOverflow https://stackoverflow.com/questions/75379

  •  09-06-2019
  •  | 
  •  

Pregunta

El problema es simple, pero ya estoy luchando un poco.

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

Es un código bastante estándar que puedes encontrar en cualquier lugar del mundo Jetty.Tengo una aplicación que incorpora Jetty como motor de servlets y tiene algunos servlets.

La creación de instancias de algunos de estos servlets requiere un gran trabajo durante el inicio.Digamos: leer archivos de configuración adicionales, conectarse a la base de datos, etc.¿Cómo puedo hacer que el motor de servlets cree instancias de todos los servlets con entusiasmo, de modo que pueda hacer todo el trabajo duro por adelantado y no en la primera solicitud del usuario?

¿Fue útil?

Solución

No estoy seguro de por qué usar la opción Justin de Guice no funciona para usted.¿Qué es exactamente lo que se inyecta?No estoy seguro de si esto te ayudaría en absoluto porque es muy similar a lo que Justin escribió anteriormente, pero si lo haces de esta manera, Jetty creará las instancias.

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, "/");

Otros consejos

Utilizar el Context.addServlet sobrecarga que requiere un ServletHolder. ServletHolder es una clase que acepta una clase o una instancia de servlet.

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

Esto supone el embarcadero 6.Creo que también funcionará para Jetty 7.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top