2012-03-29 3 views
30
<servlet> 
     <description>xxx</description> 
     <servlet-name>xxx</servlet-name> 
     <servlet-class>com.xxx.yyy</servlet-class> 
     <async-supported>true</async-supported> 
</servlet> 

サーブレットのweb.xml設定ファイルのasync-supportedの目的は何ですか?どのような場合に使用できますか?asyncの目的はweb.xmlでサポートされていますか?

+2

サーブレット3.0用に追加された機能です。https://blogs.oracle.com/enterprisetechtips/entry/asynchronous_support_in_servlet_3 –

答えて

41

皮肉なことに、私はtomcatのweb.xmlにこのプロパティを書き込む構文を探していました。これはgoogleから開いた最初の検索項目です。正しく書かれていますので、感謝します。

あなたの質問に答えるために、これにより、サーブレットは後で応答するために着信要求を格納することができます。要求を処理するために使用されるスレッドが解放されるので、サーバーが応答を送信する準備ができるまで別の場所で使用できます。

実際には、この構成では、(クライアントがサーバーに最初の要求を送信した後に)pushデータをクライアントに(実質的に)提供するサーブレットを設定できます。

この手法は、不確実な間隔で変更される可能性のあるデータを取得するために、クライアントからの不必要なタイミング要求の必要性を置き換えます。スレッドにぶら下がることなくスケーラブルに実行します。


いくつかの例を使用-例は次のとおりです。

チャットアプリケーション、1つのクライアントタイプあなたはそれが他のクライアントに瞬時に表示するメッセージを。

電子メールアプリケーションは、クライアントが電子メールサーバーによって受信されるとすぐに電子メールを表示できるようにします。

私はまた、自動化タスクのためにプログラミングロジックコントローラから入力変更の更新をブラウザに送るのにも使用しました。

Here's良いチュートリアルです。 Thisはまた、Javaのいくつかのナットとボルトをカバーしています。

+0

これはGlassFish 4.1でも当てはまります –

+4

注:非同期リクエストにマッピングされたフィルタがある場合、それらのそれぞれは、その ' 'セクションに' true TMG

0

あなたはGlassFishの4.1を使用してすることが起こる場合は、SRC /メイン/ Webアプリケーション/ web.xmlにこれを試してみてください。

<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <load-on-startup>1</load-on-startup> 
    <async-supported>true</async-supported> 
</servlet> 
<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
2

主な目的は、WebSocketをへのフォールバックメカニズムとしてXHRストリーミングを有効にすることです。もし明示的にtrueに設定されていなければ、あなたのアプリケーションはjava.lang.IllegalArgumentExceptionにつながるXHRストリーミングにフォールバックすることができません:サーブレットで非同期サポートが有効になっている必要があります....

詳細については、非同期リクエスト):
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

設定が正しく適用されていることを確認するには、ブラウザのwesocket接続数を1に制限し、アプリケーションを1つ以上のタブで開きます。設定が適用されると、タブ1にwebsocket接続が確立され、タブ2にhxrストリーミングが設定されます。

関連する問題