List of usage examples for org.springframework.web.context.request.async DeferredResult onCompletion
public void onCompletion(Runnable callback)
From source file:com.sishuok.chapter3.web.controller.DeferredResultController.java
@RequestMapping("/message") @ResponseBody//w w w .j a va 2 s .c o m public DeferredResult<String> newMessage() throws IOException { //1?DeferredResult long timeout = 30L * 1000; final DeferredResult<String> result = new DeferredResult<String>(timeout); result.onCompletion(new Runnable() { @Override public void run() { queue.remove(result); } }); result.onTimeout(new Runnable() { @Override public void run() { queue.remove(result); } }); //2???? queue.add(result); return result; }
From source file:org.hydroponics.web.controller.CalibreAsyncController.java
@RequestMapping("/update") @ResponseBody//ww w . j a va 2 s.c o m public DeferredResult<Map<String, Object>> update() { final DeferredResult<Map<String, Object>> result = new DeferredResult<Map<String, Object>>(); this.calibreRequests.add(result); logger.fine("add deferred result"); result.onCompletion(new Runnable() { public void run() { logger.fine("remove deferred result:" + calibreRequests.size()); calibreRequests.remove(result); } }); return result; }
From source file:com.sishuok.chapter3.web.listener.ListenerController.java
@RequestMapping("/listener1") @ResponseBody/*from w ww .j a v a 2s . c om*/ public DeferredResult<String> listener1() { final DeferredResult<String> result = new DeferredResult<String>(); result.onTimeout(new Runnable() { @Override public void run() { System.out.println("==="); } }); result.onCompletion(new Runnable() { @Override public void run() { System.out.println("===?"); } }); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2 * 1000L); } catch (InterruptedException e) { } System.out.println("DeferredResult?"); result.setResult("success"); } }).start(); return result; }
From source file:com.sishuok.chapter3.web.listener.ListenerController.java
@RequestMapping("/listener2") @ResponseBody// w w w. j av a 2 s .co m public DeferredResult<String> listener2() { final DeferredResult<String> result = new DeferredResult<String>(); result.onTimeout(new Runnable() { @Override public void run() { System.out.println("==="); result.setErrorResult("error"); } }); result.onCompletion(new Runnable() { @Override public void run() { System.out.println("===?"); } }); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(31 * 1000L); } catch (InterruptedException e) { } System.out.println( "DeferredResult????"); result.setResult("success"); } }).start(); return result; }
From source file:com.sishuok.chapter3.web.controller.chat.MsgPublisher.java
public DeferredResult<String> startAsync(final String username) { final DeferredResult<String> result = new DeferredResult<String>(30L * 1000, null); final Runnable removeDeferredResultRunnable = new Runnable() { @Override// w w w .j a va2 s . c om public void run() { Queue<DeferredResult<String>> queue = usernameToDeferredResultMap.get(username); if (queue != null) { queue.remove(result); } } }; result.onCompletion(removeDeferredResultRunnable); result.onTimeout(removeDeferredResultRunnable); //???? Queue<DeferredResult<String>> queue = usernameToDeferredResultMap.get(username); if (queue == null) { queue = new ConcurrentLinkedDeque(); usernameToDeferredResultMap.put(username, queue); } queue.add(result); return result; }
From source file:siddur.solidtrust.image.ImageController.java
@RequestMapping(value = "/api/images") public @ResponseBody DeferredResult<Object> findCarImages(final @RequestParam("id") String id, HttpServletRequest request) {//from ww w .jav a2s .c o m final String ip = request.getRemoteHost(); final String username = request.getAttribute(SolidtrustConstants.CLIENT_ID) + ""; final int port = request.getLocalPort(); final String address = request.getLocalAddr(); final DeferredResult<Object> result = new DeferredResult<>(2000L, "no data"); log4j.info("Id=" + id + " ,Remaining: " + suspendedImageRequests.remainingCapacity()); try { suspendedImageRequests.add(result); } catch (Exception e1) { result.setResult("Image service is overload"); return result; } result.onCompletion(new Runnable() { @Override public void run() { suspendedImageRequests.remove(result); } }); new Thread(new Runnable() { @Override public void run() { AccessItem ai = new AccessItem(); ai.setIp(ip); ai.setUsername(username); ai.setService(Product.IMAGES.getId()); ai.setRequest(id); ImageProduct ip = null; try { ip = findImagesByLicensePlate(id); } catch (Exception e) { ai.setStatus(-1); log4j.error(e.getMessage(), e); ai.setResponse(e.getMessage()); free.save(ai); return; } if (ip == null) { ai.setStatus(-1); ai.setResponse("Not found:" + id); free.save(ai); return; } ai.setResponse(ip.getId() + ""); free.save(ai); ImageProduct resp = addPrefix(port, address, ip); result.setResult(resp); } }).start(); return result; }