2

JAX-RS を使用して一連の Restful API (1 つの POST と 1 つの GET) を開発しています。post メソッドはテーブルにいくつかの行を挿入し、GET メソッドは挿入されたデータを DB から追加のデータに加えてフェッチします。

私が直面している問題は、POST メソッドの直後に GET メソッドを実行する必要があることです。これはビジネス要件であり、GET メソッドは DB にいくつかのデータを照会します。しかし、POST メソッドはまだ完了しておらず、GET メソッドが呼び出されています。

クライアントから GET メソッドが呼び出されても、POST メソッドが完了する瞬間まで GET メソッドを一時停止する方法はありますか。

このタスクを達成するためにコード スニペットを共有してください。ありがとう

4

1 に答える 1

2

HTTP GET 要求処理を一時停止する必要がある条件を知っていれば、ここでは非同期 HTTP 要求処理が役立ちます。

POST 要求と GET 要求は 2 つの異なるスレッドによって処理されるため、GET 要求を処理するスレッドに POST 要求の処理の完了が通知されるようにする必要があります。これは、いくつかのセンパフォアを介して達成できます。

非同期 HTTP 要求処理は、Servlet 3.0 では使用できますが、JAX-RS 1.1 では標準化された方法では使用できません。ただし、これは JAX-RS 2.0 (Java EE 7) の一部であり、@Suspendedアノテーションを介して利用できます。JAX-RS 1.1 (別名 Java EE 6) を使用する場合は、プロバイダーの機能に依存する必要がある場合があります。たとえば、 RESTEasy はJava EE 6 アプリのアノテーションを介して非同期 HTTP リクエスト処理をサポートします。@Suspend

于 2013-10-08T06:00:57.467 に答える