Назначенные задания

Добрый день!
Помогите, пожалуйста, понять, из-за чего ошибка при выполнении назначенного задания.

Ошибка:

 Error running ScheduledTask{5c65079f-da72-da68-3906-31aab3bafb5d, className=com.elgsys.wld.integration.one2work.Test, cron=0 0/1 8-19 * * *}
java.lang.RuntimeException: An error occurred while running method call() of class com.elgsys.wld.integration.one2work.Test.
	at com.haulmont.cuba.core.app.scheduling.RunnerBean.executeTask(RunnerBean.java:258) ~[cuba-core-7.2.17.jar:7.2.17]
	at com.haulmont.cuba.core.app.scheduling.RunnerBean.lambda$runTask$0(RunnerBean.java:141) ~[cuba-core-7.2.17.jar:7.2.17]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
Caused by: java.lang.NullPointerException: null
	at com.haulmont.cuba.core.app.scheduling.RunnerBean.executeTask(RunnerBean.java:252) ~[cuba-core-7.2.17.jar:7.2.17]
	... 6 common frames omitted

Код

public class Test implements Callable {
    private ServiceOrderIntegrationService serviceOrderIntegrationService;

    public Test() {
        this.serviceOrderIntegrationService = AppBeans.get(ServiceOrderIntegrationService.class);
    }

    @Override
    public Object call() throws Exception {
        return (Object) serviceOrderIntegrationService.getEmployee12WState();
    }
}

и

   @Service(ServiceOrderIntegrationService.NAME)
public class ServiceOrderIntegrationServiceBean implements ServiceOrderIntegrationService {

    private static final Logger log = LoggerFactory.getLogger(ServiceOrderIntegrationServiceBean.class);

    @Override
    public String getEmployee12WState() {
        log.info("start auto receive one2work states");
        String message = "";
        log.info("end auto receive one2work states");
        return message;
    }

}

Заранее спасибо!

NullPointerException говорит само за себя.
Поставьте точку останова и посмотрите что происходит.
Скорее всего, в serviceOrderIntegrationService прилетает null.

Спасибо за ответ.

Если убрать все лишнее, то все-равно ошибка

public class Test implements Callable {

    @Override
    public Object call() throws Exception {
        return new Object();
    }
}

Класс RunnerBean
2022-12-20_212201

Предполагаю, что неправильно описано задание. Можно где-то пример или описание посмотреть, как правильно задание создавать, включая классы?

2022-12-20_212218

Задание с виду вполне корректное.
Там если ткнуть на loadClass Ctrl+Q, то в JavaDoc описано то, как и где ищется класс.
image

У вас класс точно размещен там, где его ищет loadClass?

В приложении тестовый проект.
Класс задания лежит в Core и все работает.

testcallable.zip (82.1 КБ)

1 симпатия

Добрый день!
Спасибо за то, что вникли в проблему. Т.е. класс с клиентского уровня никак не добавить в задание?

В документации есть хорошая картинка, иллюстрирующая структуру модулей и их зависимость.

image

Серверные задания явно живут в Core.
Так что ваш класс стандартно должен располагаться либо в Core, либо в Global. Тогда он будет доступен из Core.

1 симпатия

Андрей, большое спасибо!