0

質問は少し誤解を招くかもしれませんが、必要なものを説明します。

  1. ajax / POSTを介して呼び出されるサーブレットがある場合。サーブレットは COM ポート リーダーのインスタンスを取得し、COM ポートを開き、ポートに文字を送信します。ここまでは順調ですね。
  2. 「ポート リーダー」にはイベント リスナーがあり、データがポートから着信するのを待ち、データが利用可能な場合はこのデータを返します。

私がやりたいことは、データが到着し、このデータをクライアントへの応答として送信するまで、サーブレットの doPost で応答を待機することです。

何かアイデアはありますか?前もって感謝します。

4

2 に答える 2

1

Servlet 3.0 では、サーブレットで非同期サポートが提供されています。このようにして、サーブレット内で長時間実行されるタスクを実行できます。

ただし、サーバーに対するブラウザのリクエストは、レスポンスがクライアントに送信されるまで開いたままにしておいてください。

于 2013-10-04T09:15:06.800 に答える
0

サーブレットでデータが利用可能になるまで待ってから送り返すことはしません。

サーブレットは、サーバーが管理するスレッド プールからサーバーが提供する独自のスレッドで実行されることを思い出してください。したがって、多くのクライアントPOSTがほぼ同時にこのリクエストを送信し、サーブレットが待機を開始した場合、アプリケーションのスレッドが不足する可能性があると想像してください。

POSTリクエストをすぐに返してGET、サーブレットをポーリングしてデータを取得する別の ajax リクエストを用意します。ポーリングを実装するには、javascript のsetInterval()を使用できます。

于 2013-10-04T08:48:59.117 に答える