Контекст приложения теряется при использовании метода 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
}

0 ответов

Другие вопросы по тегам