如何使嵌入式servlet引擎急切地实例化servlet?

时间:2008-09-16 18:21:08

标签: java servlets jetty

问题很简单,但我已经有点挣扎了。

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

这是一个非常标准的代码片段,你可以在Jetty世界的任何地方找到它。我有一个应用程序将Jetty作为servlet引擎嵌入并有一些servlet。

其中一些servlet的实例化需要在启动时进行繁重的工作。说 - 阅读其他配置文件,连接到数据库等。如何让servlet引擎急切地实例化所有servlet,以便我可以提前完成所有的艰苦工作而不是第一个用户请求?

2 个答案:

答案 0 :(得分:2)

我不确定为什么使用Guice make Justin的选项不适合你。注入的究竟是什么?我不确定这对你是否会有所帮助,因为它与Justin上面写的很相似,但如果你这样做,Jetty会做实际的实例化。

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

答案 1 :(得分:0)

使用Context.addServlet的{​​{1}}重载。 ServletHolder是一个接受Class或Servlet实例的类。

ServletHolder

这假设Jetty 6.我认为它也适用于Jetty 7.