javax.ws.rs.container.AsyncResponse.cancel()方法的使用及代码示例

x33g5p2x  于2022-01-15 转载在 其他  
字(3.7k)|赞(0)|评价(0)|浏览(100)

本文整理了Java中javax.ws.rs.container.AsyncResponse.cancel()方法的一些代码示例,展示了AsyncResponse.cancel()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。AsyncResponse.cancel()方法的具体详情如下:
包路径:javax.ws.rs.container.AsyncResponse
类名称:AsyncResponse
方法名:cancel

AsyncResponse.cancel介绍

[英]Cancel the suspended request processing.

When a request processing is cancelled using this method, the JAX-RS implementation MUST indicate to the client that the request processing has been cancelled by sending back a javax.ws.rs.core.Response.Status#SERVICE_UNAVAILABLEerror response.

Invoking a cancel(...) method multiple times to cancel request processing has the same effect as canceling the request processing only once. Invoking a cancel(...) method on an asynchronous response instance that has already been cancelled or resumed has no effect and the method call is ignored while returning true, in case the request has been cancelled previously. Otherwise, in case the request has been resumed regularly (using a resume(...) method) or resumed due to a time-out, method returns false.
[中]取消挂起的请求处理。
当使用此方法取消请求处理时,JAX-RS实现必须通过发送回javax来向客户机指示请求处理已被取消。ws。rs.core。回答状态#服务_不可用错误响应。
调用取消(…)多次取消请求处理的方法与仅取消一次请求处理的效果相同。调用取消(…)已取消或恢复的异步响应实例上的方法无效,如果请求先前已取消,则在返回true时将忽略该方法调用。否则,如果请求已定期恢复(使用恢复(…)方法)或由于超时而恢复,方法返回false。

代码示例

代码示例来源:origin: jersey/jersey

@Override
  public void run() {
    try {
      suspended.put(ar);
      LOGGER.log(DEBUG, "GET <{0}> context {1} scheduled for resume.",
          new Object[] {messageId, ar.toString()});
    } catch (InterruptedException ex) {
      LOGGER.log(Level.SEVERE,
          "Waiting for a message pick-up interrupted. Cancelling context" + ar.toString(), ex);
      ar.cancel(); // close the open connection
    }
  }
});

代码示例来源:origin: jersey/jersey

@Override
  public void run() {
    try {
      final String message = messages.take();
      LOGGER.log(DEBUG, "Resuming GET <{0}> context {1} with a message {2} on thread {3}.",
          new Object[]{messageId, ar.toString(), message, Thread.currentThread().getName()});
      ar.resume(message);
    } catch (InterruptedException ex) {
      LOGGER.log(Level.SEVERE,
          "Waiting for a message pick-up interrupted. Cancelling context" + ar.toString(), ex);
      ar.cancel(); // close the open connection
    }
  }
});

代码示例来源:origin: camunda/camunda-bpm-platform

protected void removeDuplicates() {
 for (FetchAndLockRequest newRequest : newRequests) {
  // remove any request from pendingRequests with the same worker id
  Iterator<FetchAndLockRequest> iterator = pendingRequests.iterator();
  while (iterator.hasNext()) {
   FetchAndLockRequest pendingRequest = iterator.next();
   if (pendingRequest.getDto().getWorkerId().equals(newRequest.getDto().getWorkerId())) {
    AsyncResponse asyncResponse = pendingRequest.getAsyncResponse();
    asyncResponse.cancel();
    iterator.remove();
   }
  }
 }
}

代码示例来源:origin: SmartDataAnalytics/jena-sparql-api

@Override
  public void run() {
    try {
      delegate.run();
    } catch(Exception e) {
      asyncResponse.cancel();
      throw new RuntimeException(e);
    }
  }
}

代码示例来源:origin: apache/cxf

@Override
public void onError(Throwable t) {
  if (t instanceof CancellationException) {
    ar.cancel();
  } else {
    ar.resume(t);
  }
}

代码示例来源:origin: apache/cxf

@Override
public void handleTimeout(AsyncResponse asyncResponse) {
  asyncResponse.cancel(10);
}

代码示例来源:origin: org.apache.cxf/cxf-rt-rs-extension-reactivestreams

@Override
public void onError(Throwable t) {
  if (t instanceof CancellationException) {
    ar.cancel();
  } else {
    ar.resume(t);
  }
}

代码示例来源:origin: com.xorlev.grpc-jersey/jersey-rpc-support

@Override
public void onError(Throwable t) {
  closed = true;
  Optional<Response> response = ErrorHandler
      .handleUnaryError(t, httpHeaderClientInterceptor.getHttpResponseHeaders());
  if (response.isPresent()) {
    asyncResponse.resume(response.get());
  } else {
    asyncResponse.cancel();
  }
}

代码示例来源:origin: apache/cxf

@GET
@Path("cancelvoid")
public String cancel(@QueryParam("stage") String stage) {
  AsyncResponse response = takeAsyncResponse(stage);
  boolean ret = response.cancel();
  ret &= response.cancel();
  addResponse(response, stage);
  return ret ? TRUE : FALSE;
}

相关文章