Comment rendre le moteur de servlets intégré instancier les servlets avec impatience?

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

  •  09-06-2019
  •  | 
  •  

Question

Le problème est simple, mais je lutte déjà un peu.

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

C’est un code assez classique que vous pouvez trouver n’importe où dans le monde de Jetty. J'ai une application qui intègre Jetty en tant que moteur de servlet et comporte quelques servlets.

L'instanciation de certains de ces servlets nécessite un travail important au démarrage. Dites & # 8211; lire des fichiers de configuration supplémentaires, se connecter à la base de données, etc. Comment puis-je forcer le moteur de servlets à instancier tous les servlets avec impatience, de sorte que je puisse faire tout le travail acharné dès le départ et non à la première demande de l'utilisateur?

Était-ce utile?

La solution

Je ne sais pas pourquoi l'utilisation de Guice rend l'option de Justin qui ne fonctionne pas pour vous. En quoi consiste exactement l'injection? Je ne sais pas si cela vous aiderait du tout, car c'est très similaire à ce que Justin a écrit ci-dessus, mais si vous le faites de cette façon, Jetty fera l'instanciation réelle.

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

Autres conseils

Utilisez la surcharge Context.addServlet prenant un ServletHolder . ServletHolder est une classe qui accepte une classe ou une instance de servlet.

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

Cela suppose que Jetty 6. Cela fonctionnera également pour Jetty 7.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top