Changes for BAEL-1657
This commit is contained in:
parent
ad5389cf6d
commit
8d05a42c30
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user