Changes for BAEL-1657

This commit is contained in:
Nikhil Khatwani 2018-05-09 18:03:35 +05:30
parent ad5389cf6d
commit 8d05a42c30

View File

@ -1,4 +1,4 @@
package com.baeldung.servlets; package com.baeldung.controllers;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
import java.util.concurrent.ForkJoinPool;
@RestController @RestController
public class DeferredResultController { public class DeferredResultController {
@ -18,10 +20,14 @@ public class DeferredResultController {
public DeferredResult<ResponseEntity<?>> handleReqDefResult(Model model) { public DeferredResult<ResponseEntity<?>> handleReqDefResult(Model model) {
LOG.info("Received async-deferredresult request"); LOG.info("Received async-deferredresult request");
DeferredResult<ResponseEntity<?>> output = new DeferredResult<>(); DeferredResult<ResponseEntity<?>> output = new DeferredResult<>();
new Thread(() -> { ForkJoinPool.commonPool().submit(() -> {
LOG.info("Processing in separate thread"); LOG.info("Processing in separate thread");
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
}
output.setResult(ResponseEntity.ok("ok")); output.setResult(ResponseEntity.ok("ok"));
}).start(); });
LOG.info("servlet thread freed"); LOG.info("servlet thread freed");
return output; return output;
} }
@ -36,8 +42,7 @@ public class DeferredResultController {
ResponseEntity.status(HttpStatus.REQUEST_TIMEOUT).body("Request timeout occurred.")); ResponseEntity.status(HttpStatus.REQUEST_TIMEOUT).body("Request timeout occurred."));
} }
}); });
ForkJoinPool.commonPool().submit(() -> {
new Thread(() -> {
LOG.info("Processing in separate thread"); LOG.info("Processing in separate thread");
try { try {
Thread.sleep(600l); Thread.sleep(600l);
@ -48,14 +53,14 @@ public class DeferredResultController {
.body("INTERNAL_SERVER_ERROR occurred.")); .body("INTERNAL_SERVER_ERROR occurred."));
} }
}).start(); });
LOG.info("servlet thread freed"); LOG.info("servlet thread freed");
return deferredResult; return deferredResult;
} }
public DeferredResult<ResponseEntity<?>> handleAsyncFailedRequest(Model model) { public DeferredResult<ResponseEntity<?>> handleAsyncFailedRequest(Model model) {
DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>(); DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>();
new Thread(() -> { ForkJoinPool.commonPool().submit(() -> {
try { try {
// Exception occurred in processing // Exception occurred in processing
throw new Exception(); throw new Exception();
@ -64,7 +69,7 @@ public class DeferredResultController {
deferredResult.setErrorResult(ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) deferredResult.setErrorResult(ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("INTERNAL_SERVER_ERROR occurred.")); .body("INTERNAL_SERVER_ERROR occurred."));
} }
}).start(); });
return deferredResult; return deferredResult;
} }