restyGwt を使用して jersey にリクエストを送信しています。クライアント側(request.cancel)でリクエスト オブジェクトを使用してリクエストを閉じましたが、クライアント側で閉じてもサーバーがリクエストを処理していることがわかりました。接続が停止しているサーバー。
クライアントがリクエストをキャンセルしたらすぐにサーバーに伝え、そのリクエストの処理を停止する方法が欲しい
これは私のクライアントの resty gwt コードです
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("servicepoint/getAllServicepointAndCount")
public Request findAllServicepointandCount(@QueryParam("startIndex") Integer startIndex,
@QueryParam("maxSize") Integer maxSize,
MethodCallback<ServicepointResponse> methodCallback);
これは、サーバーへのリクエストを行っている gwt クラスです
ServicepointRestyService service = GWT
.create(ServicepointRestyService.class);
((RestServiceProxy) service).setResource(resource);
final Request method=service.findAllServicepointandCount( index, length,
new MethodCallback<ServicepointResponse>() {
@Override
public void onFailure(Method method, Throwable exception) {
Window.alert(exception.getMessage());
}
@Override
public void onSuccess(Method method,
ServicepointResponse response) {
Window.alert("response.getMassege");
}
});
Timer t=new Timer() {
@Override
public void run() {
Window.alert("cancelled");
method.cancel();// cancel connection
}
};
t.schedule(2000);
}
ジャージ実装
@POST
@Produces("application/json")
@Consumes("application/json")
@Path("/getAllServicepointAndCount")
public ServicepointResponse findAllServicepointandCount(
@QueryParam("startIndex") Integer startIndex,
@QueryParam("maxSize") Integer maxSize) {
logger.finer("Entering startIndex" + startIndex + "" + maxSize);
ServicepointResponse data = new ServicepointResponse();
List<ServicepointPojo> spPojos = new ArrayList<>();
try {
while(true){
System.out.println(new Date().getTime());
Thread.sleep(1000);
}catch (Exception e) {
e.printStackTrace();
}
2秒後にリクエストを停止しましたが、サーバーは停止しなかった日付と時刻を出力します。この機能を確認するためにこのコードを書きました