2011-12-14 12 views
1

web.xmlにサーブレットがありますが、アプリケーションにロードする必要はありません。そのサーブレットがロードされないようにするには、実際にロードする必要があると思います。アプリケーションの2つのインスタンスをデプロイしているので、web.xmlに持っています。あるインスタンスにはそのサーブレットが必要です。別のインスタンスでは、これを持たずに1つしか使用しません。これはどうすればよいのでしょうか? 。サーブレットがロードされていないことを確認する方法は?

は、ここに私のweb.xmlです:その後、コンテナはランダムにこのサーブレットを呼び出しますので、私は親切に私をここに訂正し、適切な方法のアドバイスはそれを行うには、-ve値を置くことができない

<servlet> 
     <servlet-name>StartServlet</servlet-name> 
     <servlet-class>com.web.startServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

+0

@Tomasz:私の投稿を更新していただきありがとうございます。私は考えながらいくつかのものを食べる傾向があります。 – Rachel

+0

-Ve voter、質問の質を改善できるよう助言してください。 – Rachel

答えて

1

web.xmlのenabled要素を使用して、サーブレットを無効にすることができます(つまり、定義済みのURLパターンマッピングでは到達できません)。 web.xmlファイルは、Web-fragment.xmlと注釈からディスクリプタを組み立てる章8.2.3で

Servlets 3.0 specification言う:

(...) 3.サーブレットを使用して無効になっている場合web.xmlに導入された有効化された要素である場合、サーブレットに指定されたurl-patternでサーブレットを使用できなくなります。 (...)

enabled要素は、XMLスキーマhereで定義されており、<servlet>要素の子要素として求めることができます。

+0

私はこれが 'Servlet 3.0'では、ここで発生する1つの質問は、どのサーブレット・バージョン・アプリケーションがどのようなものを使用しているのかを見つけることです。私は 'jboss version 4'を持っています – Rachel

+0

うん、それを言及して申し訳ありません。あなたはJBossのウェブサイト(*あなたのウェブサイトの*どこか*を知っています)で見つけることができますが、私はそれがpre-servlets 3.0であることを確信しています...あなたの 'web.xml'ファイルで'バージョン属性。この属性の値は、使用しているServletのバージョンを明示的に定義します。 –

1

<load-on-startup>では、遅延読み込みを設定できます。デフォルトでは、サーブレットは(URLパターンによって)アクセスされたときにのみロードされます。代わりに起動時にロードするように設定できます。

+0

私は '/ *'に設定されたURLパターンを持っているので、その制約はありません。 – Rachel

+0

これは制約ではありません。起動時にロードされたサーブレット、または要求が初めて送信されたサーブレットのいずれかです。 – Bozho

+0

同意します。しかし、StartServletが1つのインスタンスでアクセスされておらず、別のインスタンスでアクセスできるようにする方法がありますか? – Rachel

0

<load-on-startup>では、遅延読み込みを設定できます。デフォルトでは、サーブレットは(URLパターンによって)アクセスされたときにのみロードされます。代わりに起動時にロードするように設定できます。

ロードされていないサーブレットをリクエストにのみロードするように設定し、ロードバランサを使用して、そのサーバーが他のサーバーにヒットするURLがあれば、おそらく行くのがよいでしょう。

+1 to Bozho。彼の答えは素晴らしい場所です。