2012-03-24 6 views
1

サーブレットが2回マップされている場合、2つの異なる名前を使用して(下の図を参照)、コンテナによってサーブレットのインスタンスがいくつ作成されますか?複数のマッピングにわたるサーブレットインスタンス

1つまたは複数のインスタンスまたはコンテナに依存していますか?

<servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>com.me.servlet.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>servlet1</servlet-name> 
    <url-pattern>/page1.html</url-pattern> 
</servlet-mapping> 


<servlet> 
    <servlet-name>servlet2</servlet-name> 
    <servlet-class>com.me.servlet.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>servlet2</servlet-name> 
    <url-pattern>/page2.html</url-pattern> 
</servlet-mapping> 

答えて

2
<servlet> 
    <servlet-name>FooServlet</servlet-name> 
    <servlet-class>foo.FooServlet</servlet-class> 
    <init-param> 
     <param-name>foo</param-name> 
     <param-value>bar</param-value> 
    </init-param> 
</servlet> 

各サーブレットはconfiguration独自を有するので、サーブレット定義あたり少なくとも1つのサーブレット・インスタンスが存在しなければなりません。

Servlet 3.0 specification

は言う:分散環境(デフォルト)でホストされていないサーブレットの

は、 サーブレットコンテナがサーブレット 宣言につきだけつのインスタンスを使用する必要があります。しかし、 SingleThreadModelインタフェースを実装するサーブレットの場合、サーブレットコンテナは、 複数インスタンスをインスタンス化して、負荷の大きい要求を処理し、特定のインスタンスへの 要求をシリアル化することがあります。サーブレットが配布可能として配備記述子でマークされたアプリケーション の一部としてデプロイされた場合には

、コンテナは Java仮想 マシン(JVM™)あたりのサーブレット宣言ごとに1つのインスタンスのみを有することができます。ただし、配布可能なアプリケーションのサーブレット がSingleThreadModelインタフェースを実装している場合、コンテナは コンテナの各JVMで のサーブレットのインスタンスを複数インスタンス化することがあります。

SingleThreadModelは避けるべきです。

非分散環境であると仮定すると、投稿されたディスクリプタフラグメントは2つのサーブレットインスタンスになります。

0

サーブレットコンテナの実装によって異なります。何をしようとしていても、サーブレットマッピングの設定にかかわらず、サーブレットの単一のインスタンスに複数のスレッドが一度にアクセスすることを前提とする必要があります。

1

(これは廃止予定)を実装しない限り、デフォルトではservlets are not thread safeです。

多くのコンテナは、サーブレットのインスタンスを1つ作成します。 ServletMappingは、作成されるインスタンスの数とは何の関係もありません。 ServletMapping just map to the servlet defined using <servlet> tag

異なるサーブレットクラスに異なる名前の<servlet>タグが複数ある場合。はい、そのサーブレットのインスタンスが複数作成されます。しかし今、あなたは複数のマッピングを持っています。

+0

web.xmlで指定された各サーブレット名に対して別々のインスタンスを作成するこの動作は、サーブレット仕様に基づいていますか?別々のマッピングのために別個のインスタンスを作成することのメリットは何ですか? – siva636

関連する問題