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 をサーブレット エンジンとして組み込み、いくつかのサーブレットを持つアプリケーションがあります。

これらのサーブレットの一部のインスタンス化には、起動時に多大な作業が必要です。たとえば、追加の構成ファイルの読み取り、データベースへの接続などです。サーブレット エンジンがすべてのサーブレットを熱心にインスタンス化するようにするにはどうすればよいでしょうか。これにより、最初のユーザー要求ではなく、すべてのハードワークを前もって行うことができます。

4

2 に答える 2

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, "/");
于 2008-09-16T19:02:25.343 に答える
0

Context.addServletを取るオーバーロードを使用しますServletHolderServletHolderClass または Servlet インスタンスのいずれかを受け入れるクラスです。

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

これは Jetty 6 を想定しています。Jetty 7 でも機能すると思います。

于 2008-09-16T18:25:54.887 に答える