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