Контекст приложения теряется при использовании метода Callable в WorkManager
Я реализовал WorkManager в WLS, и я вызываю асинхронную задачу, используя расписание. Когда я получил запрос в асинхронной задаче, я потерял все ссылки @Autowired в контексте моего приложения.
Есть ли способ использовать переменные моего контекста приложения внутри метода "startTask" асинхронной задачи (класс ExecuteProcessServiceImpl)?
Класс, вызывающий асинхронную задачу
InitialContext ctx = new InitialContext();
String wmName = "java:comp/env/wm/wm0";
WorkManager workManager = (WorkManager) ctx.lookup(wmName);
Work work = new WorkInstance();
workManager.schedule(work, new MyWorkListener());
Класс, который получает запрос и запускает задачу
public class WorkInstance implements Work {
private ExecuteProcessServiceImpl task = new ExecuteProcessServiceImpl();
@Override
public void run() {
try {
new Callable<ExecuteProcessServiceImpl>() {
@Override
public ExecuteProcessServiceImpl call() {
task.startTask();
return task;
}
}.call();
} catch (Exception e) {
log.error(e.getMessage());
}
}
Асинхронная задача
public class ExecuteProcessServiceImpl implements ExecuteProcessService {
@Autowired
private MyAutowiredObj obj;
public void startTask() {
// The application context is lost here
// The value of "obj" is null
}