栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA异步Web服务实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA异步Web服务实现

public void submitFuture(final HttpServletRequest req,final Callable task) throwsException{
  final String uri = req.getRequestURI();
  final Map params = req.getParameterMap();
  final AsyncContext asyncContext = req.startAsync();
  asyncContext.getRequest().setAttribute("uri",uri);
asyncContext.getRequest().setAttribute("params",params);
asyncContext.setTimeout(asyncTimeoutInSeconds*1000);

if(asyncListener != null){
  asyncContext.addListener(asyncListener);
}
CompletableFuture future = task.call();
future.thenAccept(result->{
  HttpServletResponse resp = (HttpServletResponse)asyncContext.getResponse();
 try{
   if(result instanceof String){
     byte[] butes = result.getBytes("GBK");
     resp.setContentType("text/html;charset=gbk");
     resp.setContentLength(bytes.length);
     resp.getOutputStream().write(bytes);
   }else{
     write(resp,JSONUtils.toJSON(result));
   }
 }catch(Throwable e){
 resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 
 try{
   LOG.error("get infoerror,uri:{},params:{}",uri,JSONUtils.toJSON(params),e);
 }catch(Exception ex){}
 }
}).exceptionally(e->{
  asyncContext.complete();
  return null;
});

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771245.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号