Как добавить службу таймера в Eclipse MicroProfile - PullRequest
0 голосов
/ 17 ноября 2018

В Java EE я использовал службу таймера EJB для планирования задачи:

@Stateless
public class TestSchedule {

    @Schedule(second = "*/30", minute = "*", hour = "*")
    public void processFiles() {

    }
}

Поскольку этот подход не поддерживается в Eclipse Micro Profile ... как обычно это реализовать?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Использование таймеров EJB

Если вы используете WebSphere Liberty или OpenLiberty, вы можете просто включить функцию ejbLite-3.2 в вашем файле server.xml, чтобы просто извлечьФункциональность EJB Lite (включая непостоянные таймеры EJB):

<featureManager>
  <feature>ejbLite-3.2</feature>
</feature>

Если вы хотите постоянные EJB таймеры, вы можете включить полную функцию ejb-3.2.

Обратите внимание, что код, который вы разместили в исходном вопросе, взят из JavaEE, а не из MicroProfile, но серверы Liberty поддерживают совместное использование технологий JavaEE и MicroProfile на одном сервере.


Использование Java EE Concurrency

Еще одна более современная / легковесная альтернатива непостоянным таймерам EJB - утилиты JavaEE Concurrency.Это можно включить с помощью функции concurrent-1.0 в файле server.xml:

<featureManager>
  <feature>concurrent-1.0</feature>
</featureManager>

Чтобы использовать ее, вы можете отправить объект Callable или Runnable в ManagedScheduledExecutorService вот так:

@Resource
ManagedScheduledExecutorService exec;

// ...

public void startWork() {
  // Use a Java 8 lambda to define the Runnable
  exec.scheduleAtFixedRate(() -> {
    System.out.println("This will run every 30 seconds.");
  }, 30, TimeUnit.SECONDS);
}

Если вы только начинаете писать это приложение, я бы рекомендовал использовать Java EE Concurrency Utilities поверх таймеров EJB, поскольку EE Concurrency более легок, и MicroProfile в настоящее время ищетвключить аналогичную функциональность в проект MicroProfile Concurrency .Однако, если вам нужно использовать постоянные задачи, используйте таймеры EJB.

0 голосов
/ 17 ноября 2018

Хорошо, нашел решение добавить минимум в payara-micro: добавить веб-зависимости Java EE к maven-зависимостям.

...