2016-04-23 7 views
1

JBoss 4.2.3にデプロイされているエンタープライズアプリケーションを作成しています。 Servlet 2.5仕様を使用しています。私は、JBoss 4.2.3はSingleThreadModelを(STM)を実装する方法を知りたい<%@ page isThreadSafe="false" %>JBoss 4.2.3でSingleThreadModel(STM)を実装する方法:1つのサーブレットインスタンスまたは複数のサーブレットインスタンス?

アプリケーションは、このディレクティブでSingleThreadModelを(STM)を使用しているいくつかのJSPがあり

  1. それが唯一持ってい1インスタンスのサーブレットを作成し、すべてのリクエストをシリアル化してください ?
  2. サーブレットのインスタンスが複数あり、各リクエストを同時に処理します ?

どうすればこの情報を見つけることができますか?

おかげJBOSS Documentsあたりとして

答えて

0

が、これは両方のモデルで行うことができます

サーブレット・コンテナは、サーブレットの単一のインスタンスへのアクセスを同期させることにより、またはプールを維持することによって、この保証を行うことができますサーブレットインスタンスのと、自由なサーブレットに

をそれぞれの新しい要求をディスパッチそして、これは完全にスレッドセーフではないことに注意してください。

SingleThreadModelをすべてのスレッドの安全性を解決しない10

と課題:

セッション属性をと静的変数は、まだ同時に

で複数のスレッド上 複数の要求によってアクセスすることができます

私はこの指針(そしてSingleThreadModelサーブレットを拡張している)は、広告同時に単一インスタンスのservice方法サーブレットのを呼び出すとは、サーブレットの複数のインスタンスとの同時要求を処理するからWebサーバーを防ぐことはできません。

つまり、1つの単一インスタンスは複数のスレッドで同時に要求を処理しませんが、Webサーバーはサーブレットの複数のインスタンスを作成して各要求を1つのインスタンスに同時に割り当てることができます。

UPDATE

空きインスタンスが存在しない場合、私はそう持って待って、サーブレットに受け取った要求を同時に提供するために20のサーブレットインスタンスまでインスタンス化しますカタリナコアで20 MAXINSTANCESの定数を見つけましたフリーサーブレットインスタンス。

+0

あなたが与えたJBossドキュメントリンクは、本当にhttps://docs.oracleで読むことができるSTMのオリジナルドキュメントです。com/javaee/7/api/javax/servlet/SingleThreadModel.htmlを参照してください。これはSTMを実装する2つの方法、つまり単一インスタンスまたは複数のインスタンスについてのみ述べています。彼らが好きな戦略を使うためには、ベンダーに任せます。 JBoss 4.2.3がSTMを実装するために使用する戦略を知りたい。それはこのスレッドの目的です。 – srh

+0

誤解をおかけして申し訳ありませんが見つかりましたら、私の答えを更新します –

+0

jbossはカタリナをコアエンジンとして使用していますか?これが真である場合、サーブレットに複数のリクエストが受信された場合、それがビジーであれば20インスタンスに達するために新しいインスタンスを作成し、次に空いているインスタンスを待つことを示す、20 ** maxInstances **の定数がcatalinaコアにあります。 https://searchcode.com/codesearch/view/23011575/ –

関連する問題