List of usage examples for org.springframework.web.context.request.async DeferredResult onTimeout
public void onTimeout(Runnable callback)
From source file:com.sishuok.chapter3.web.listener.ListenerController.java
@RequestMapping("/listener1") @ResponseBody// w w w . j a va2 s.com 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. c om 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.DeferredResultController.java
@RequestMapping("/message") @ResponseBody/* w ww.ja va2s . co 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: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 ww . ja va 2 s .c o m*/ 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; }