我對我的一個會話bean有問題,這可能是因爲我對EntityManagers缺乏瞭解。我正在使用JBoss EAP 6.2和Oracle。JBossEAP 6.2 EntityManager和連接恢復
我有一個對象(稱爲Maintainer)註釋爲@Singleton和@Startup。在實例化時,會注入一個@Stateless會話bean(Repository),它本身是通過一個EntityManager注入的。
@Singleton
@Startup @Stateless @PersistenceContext()
Maintainer ----> Repository ----> EntityManager
在維護者的@PostConstruct方法,它會創建一個定期運行,從使用存儲庫數據庫中獲取對象的線程。此線程適用於應用程序的生命。檢索對象的代碼使用看起來像這樣本機查詢:
Query query = entityManager.createNativeQuery(SQL_QUERY_ALL);
query.setParameter(DATE_PARAM_NAME, sinceLastUpdateDate);
List<Object[]> resultList = query.getResultList();
我遇到的問題是,當應用程序失去連接到數據庫,線程開始投擲「java.sql.SQLRecoverableException:封閉連接「異常。即使在數據庫恢復後,它也不會重新連接,我必須關閉並重新啓動我的應用程序。
我確定連接恢復內置到底層庫中,所以我猜測問題出在我的代碼以及我對EntityManager如何管理其與數據庫的連接的理解(或缺乏)。
任何事情都可以讓我明白這一點。我在做什麼?
謝謝。
看看http://stackoverflow.com/questions/128527/is-還有,任何單向的到了最JBoss的連接池重新連接到Oracle的時候,康恩 –