1
我在监视连接柄豆一些代码:添加状态到@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
豆使用,所以当然我的代码因为我在计时器上得到了一个不同的bean,所以会出现空值deviceHandle
。
因此,我的问题是什么是这个要求的最佳做法 - 我应该在哪里藏起我的手柄? @Inject
a @Singleton
? @Inject
an @ApplicationScoped
bean? @Inject
从我的ServletContextListener
豆,并存储在那里的状态(我这样做与另一个真正的@Stateless
计时器滴答)?
啊!这样一个简单的答案。除了那个之外,我尝试了几乎所有的注释组合。 '@ javax.ejb.Singleton'不是,不是'@ javax.inject.Singleton'? – 2014-09-19 02:07:32
到目前为止,我只使用'@ javax.ejb.singleton'完成了这项工作。 – 2014-09-19 02:08:35