11

特定のサーブレットまたは Web サービスにスレッドを予約するように tomcat を構成する方法はありますか? これはおそらく、サーブレット フィルターでプログラムによって実行できることを理解しています。

では、250 のサービス スレッドのデフォルト設定を使用し、そのうちの 20 を特定のサーブレット/Web サービス用に予約するとします。

たぶんこれは明らかに不可能です-もしそうなら、誰かが理由を説明してもらえますか?

Tomcat 6を使用しています。

4

2 に答える 2

11

サーブレット仕様では不可能です。ただし、Tomcat では、異なるポートで実行される複数のコネクタを定義できます。各コネクタには個別のスレッド プールがあります。

<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="10443" />

server.xmlTomcat のディレクトリの下のファイルにスレッド プールを構成する方法の例があります/conf

これで、8080 (デフォルト) と 8081 (上記で構成) の両方を使用して Web アプリケーションにアクセスできるようになりました。8081 までの要求は、別のスレッド プールを使用します。あとは、すべてのサーブレットを 8080 経由でルーティングし、特定のスレッドを 8081 経由でルーティングするだけです (完全に独立したスレッド プールを使用)。

誰かにこれを悪用されたくない場合は、サーブレット フィルターを追加して、要求された URI に基づいて正しいポートが使用されているかどうかを確認します。


ただし、あなたの理論的根拠を読んでください:

多くのサービス スレッドをロックする特定の同期サービスがあります。

スレッドの独自のプールを開始して管理し ( をExecutorService参照)、非同期サーブレットを使用することをお勧めします。はるかにシンプルでポータブル。

于 2012-09-25T13:16:24.600 に答える
-6

なぜこれをしたいのですか?

Tomcat はスレッディングを適切に処理します。最大値に達した場合は、とにかく最大値を増やす必要があります。では、いくつかを予約するメリットは何でしょうか? 一部を予約するということは、より早く最大値に到達し、必要のないときに効率的に使用しないことを意味します。

要するに、これをしないでください。

于 2012-09-25T13:12:43.030 に答える