我將EclipseLink作爲JPA和我的實現想知道是否有可能來檢查,如果我的EntityManagerFactory的是「活着」檢查的EntityManagerFactory
例如,如果連接參數無效,當我創建了EMF我沒有任何異常,直到我開始一個事務
感謝
我將EclipseLink作爲JPA和我的實現想知道是否有可能來檢查,如果我的EntityManagerFactory的是「活着」檢查的EntityManagerFactory
例如,如果連接參數無效,當我創建了EMF我沒有任何異常,直到我開始一個事務
感謝
通過的entityManagerFactory你只能得到一個EntityManager的,並寄一張支票查詢到DB,但在這種情況下,我認爲最好的辦法是與驗證程序配置連接池。
以這種方式創建或從池中檢索的每個連接通過JDBC API或者與一個簡單的查詢驗證。 例如,在JBoss的數據源配置在裏面可以添加下列行:
<!-- sql to call when connection is created -->
<new-connection-sql>some arbitrary sql</new-connection-sql>
<!-- sql to call on an existing pooled connection when it is obtained from pool -->
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
或(對於Postgres的,但也有例如用於每個DBMS)
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
</validation>
的EclipseLink懶惰展開時通過默認爲提高服務器的啓動時間。
您可以配置使用部署在服務器上開始出現時,
「eclipselink.deploy上,啓動」 =「真」
在你的persistence.xml。
對我使用這段代碼的時刻:
try {
emf = Persistence.createEntityManagerFactory(pu, properties);
} catch (Exception e) {
throw new DaoException("cannot open entity manager factory", e);
}
EntityManager em = null;
try {
em = emf.createEntityManager();
} catch (Exception e) {
throw new DaoException("cannot open entity manager", e);
} finally {
if (null!=em && em.isOpen()) {
em.close();
}
}
我會嘗試你的建議 感謝
你能在交易後開始異常 – 2012-04-11 08:32:46