1

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

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,这样我就可以预先完成所有艰苦的工作,而不是在第一个用户请求时完成?

4

2 回答 2

2

我不确定为什么使用 Guice make 的 Justin's 选项不适合你。到底注入了什么?我不确定这是否会对您有所帮助,因为它与 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, "/");
于 2008-09-16T19:02:25.343 回答
0

使用Context.addServlet需要 a 的重载ServletHolderServletHolder是一个接受 Class 或 Servlet 实例的类。

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

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

于 2008-09-16T18:25:54.887 回答