0
私は受け取ったすべての要求に対して「受け入れられた」応答を返し、後で実際の応答をサービス外の別のエンドポイントに公開する必要がある状況があります。Jerseyのフィルタからの応答を送信した後で処理を続行するにはどうすればいいですか?
「受け入れられた」応答を実装するために、私はフィルタを実装しました。
public class AcknowledgementFilter implements ContainerRequestFilter{
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
containerRequestContext.abortWith(Response.accepted().build());
// call Resource method in new Thread() . <------ ?
}
}
サービスエンドポイントの実装:
@Path("/vendor")
public class VendorHandler {
@POST
public void addVendor(VendorRequest addVendorRequest)){
vendor = new Vendor();
Client.publish(vendor); // publish request to an endpoint
return null;
}
承認フィルターから、私はVendorHandlerのaddVendor呼び出し(または任意のメソッドは、要求によって異なります)どうすればよいですか?
リクエストごとに受け入れられた応答を実装し、リクエストを別々に処理する他の方法はありますか?あなたはAsyncResponseを使用することができます
レスポンスがすでにフィルタ内のクライアントに送信されているため、リソースメソッドが呼び出されるとは思われません。 –
私はAsyncResponseのポイントは、IMHOがそのようなケースを扱うことは決してなかったフィルタの必要性を取り除くことだと思います:) –