Jetty を理解しようとしています。
教えてください:
サーブレットとハンドラーを使用する方が良いのはいつですか?
「リクエストごとのスレッド モデル」のサーブレットでコネクタを使用できますか?
Jetty を理解しようとしています。
教えてください:
サーブレットとハンドラーを使用する方が良いのはいつですか?
「リクエストごとのスレッド モデル」のサーブレットでコネクタを使用できますか?
Jetty では、Handler は Connector を介して送信されるリクエストを処理します。ハンドラーの 1 つ、具体的ServletHandler
には、Jetty が (ほとんどの場合) サーブレットをサポートできるようにします。サーブレットは移植可能な Java EE の概念であるため、Jetty でサーブレットを使用すると、より移植可能な方法でアプリケーションを設計できます。一方で、多少のオーバーヘッドが発生する可能性があるため、コネクタ経由で受信するリクエストを処理するハンドラを直接実装することをお勧めします。
Jetty でサーブレットを使用している場合は、サーブレット セキュリティ モデルやセッション サポートなどを利用できます。これがアプリケーションに不要な場合は、非常に単純なハンドラーを実装する方がよい場合があります。
遊んでいるときに見つけた興味深い観察の1つ。私は桟橋ベースのアプリケーション(dropwizard.io)を持っていましたが、ここでは実際の後にハンドラーを追加することを計画していました(特別なユースケースがありました)
server.start()
サーバーがすでに起動している場合、それを使用org.eclipse.jetty.servlet.ServletContextHandler.insertHandler(HandlerWrapper handler)
するとスローされます。illegalStateException: STARTED
なぜなら:
public void setHandler(Handler handler) {
if (isStarted())
throw new IllegalStateException(STARTED);
//..
ただし、既存のサーブレット コレクションにorg.eclipse.jetty.servlet.ServletContextHandler.addServlet(ServletHolder servlet,String pathSpec)
追加すると、すべてが機能します。servlet