Создал статический объект ExecutorService и использовал его для выполнения асинхронной задачи с вводом в контроллер начальной загрузки пружины.не удалось обработать любой запрос после вызова асинхронной задачи 3 раза.
TaskManager.java
public class TaskManager {
static ExecutorService e = Executors.newFixedThreadPool(4);
private TaskManager(){
}
public static void addAsyncTask(AsyncTaskWrapper task){
e.submit(task);
}
}
public class AsyncTaskWrapper implements Callable {
Object input,output;
Callable callback;
AsyncTask task;
public Object getInput() {
return input;
}
public void setInput(Object input) {
this.input = input;
}
public Object getOutput() {
return output;
}
public AsyncTask getTask() {
return task;
}
public void setTask(AsyncTask task) {
this.task = task;
}
public Callable getCallback() {
return callback;
}
public void setCallback(Callable callback) {
this.callback = callback;
}
public AsyncTaskWrapper(AsyncTask task, Callable callback){
this.callback = callback;
this.task = task;
}
@Override
public Object call() throws Exception {
System.out.println("Started");
output = task.execute(input);
callback.call();
System.out.println("call completed");
return output;
}
}
RESTControllers.java - необходимо выполнить задачу в асинхронном режиме с вводом для RESTEndpoint.
AsyncTaskWrapper task = new AsyncTaskWrapper(
(list) -> {
List l = (List) list;
try {
MailingUtils.sendRegistrationMail((String) l.get(0), (String) l.get(1));
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
},
() -> {
System.out.println("Done");
return null;
});
task.setInput(objects);
TaskManager.addAsyncTask(task);
Заранее спасибо