У меня есть некоторый код компонента, который следит за ручку подключения:Добавление состояния к @Stateless боба
@Stateless
public class MyClass {
private CloseableHttpAsyncClient deviceHandle = null;
@Schedule(second="*/30", minute="*", hour="*", persistent=false)
void checkConnection()
{
if (deviceHandle != null) {
if (deviceHandle.isRunning()) {
// Ping connection
}
else {
deviceHandle = reconnectToDevice();
}
}
}
public void initialise() {
deviceHandle = connectToDevice();
}
}
В соответствии с EJB 3.1 спецификации @Schedule
могут быть использованы только на @Stateless
бобов, поэтому, конечно, мой код не получается, потому что я получаю другой компонент по таймеру с нулевым deviceHandle
.
Таким образом, мой вопрос в том, что является лучшей практикой для этого требования - где я должен хранить мой дескриптор? @Inject
a @Singleton
? @Inject
a @ApplicationScoped
bean? @Inject
фасоль из моего ServletContextListener
и сохраните состояние там (я делаю это с другим действительно @Stateless
таймером)?
Ах! Такой простой ответ. Я пробовал почти любую комбинацию аннотаций, за исключением этого. '@ javax.ejb.Singleton' не так ли, а не' @ javax.inject.Singleton'? –
Я только делал это с '@ javax.ejb.singleton'. –