jersey at serverside nerver stopped processing a request even though client cancelled the connection

49 views Asked by At

Am using restyGwt to send a request to jersey , I have closed the request using request object at client side(request.cancel) , but i found that the server is processing my request even though i closed at client side , it is never notified to server that the connection is stopped.

I want a way to tell the server as soon as the client cancel a request , to stop proccessing that request

this is my client resty gwt code

@POST
@Produces("application/json")
@Consumes("application/json")
@Path("servicepoint/getAllServicepointAndCount")
public Request findAllServicepointandCount(@QueryParam("startIndex") Integer     startIndex,
        @QueryParam("maxSize") Integer maxSize,
        MethodCallback<ServicepointResponse> methodCallback);

this is the gwt class where am making my request to server

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);
}

jersey impl

@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();

    }

eventhough i stopped my request after 2sec, server still prints the date and time it never stoped , i have written this code to check this functionality

0

There are 0 answers