Como fazer com que o mecanismo de servlet incorporado instancie servlets com entusiasmo?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

O problema é simples, mas já estou lutando um pouco.

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

Esse é um código bastante padrão que você pode encontrar em qualquer lugar do mundo Jetty.Eu tenho um aplicativo que incorpora o Jetty como um mecanismo de servlet e possui alguns servlets.

A instanciação de alguns desses servlets exige muito trabalho na inicialização.Diga – lendo arquivos de configuração adicionais, conectando-se ao banco de dados, etc.Como posso fazer com que o mecanismo de servlet instancie todos os servlets com entusiasmo, para que eu possa fazer todo o trabalho pesado antecipadamente e não na primeira solicitação do usuário?

Foi útil?

Solução

Não sei por que usar a opção Justin do Guice make não funciona para você.O que exatamente está sendo injetado?Não tenho certeza se isso ajudaria você porque é muito semelhante ao que Justin escreveu acima, mas se você fizer dessa maneira, Jetty fará a instanciação real.

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

Outras dicas

Use o Context.addServlet sobrecarga que leva um ServletHolder. ServletHolder é uma classe que aceita uma instância de classe ou servlet.

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

Isso pressupõe o Jetty 6.Acho que funcionará para o Jetty 7 também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top