2012-10-30 45 views
2

我的代碼:EntityManager可以知道它已經死了嗎?

emf = Persistence.createEntityManagerFactory("cassandra_pu"); 
em = emf.createEntityManager(); 

我改變的persistence.xml動態切換到cassandra_pu單位的IP地址。但是,它可能執行得太快,因此舊的實體管理器將返回而不是新的實體管理器。有什麼方法可以檢查創建的em實體管理器是否足夠好用?

+0

您正在使用哪個服務器? –

+0

爲什麼在運行時更改IP地址?是關於高可用性嗎? – home

+0

我使用播放框架,因此我不知道我正在使用哪個服務器...是的,我想將ip更改爲不同的數據庫服務器 – Xitrum

回答

1

它可能取決於正在使用的EJB容器,但一般在persistence.xml之前對下一次重新部署應用程序的更改纔會反映 - 所以「舊」實體管理器將一遍又一遍地被重複使用,直到重新部署。

+0

嗯,有什麼辦法強制它創建新的:( – Xitrum

+0

不,謝天謝地,這可能是危險的,你知道!修改正在運行的持久性管理器實例的配置不是一個好主意,你可以做什麼,配置幾個不同的持久性管理器,並在它們之間切換 –

+0

在我的程序中我有一個類調用遊戲,它的模式是持久單元的名稱,我可以創建一個更多的持久單元,但這也意味着我必須創建新的Game1類使用該架構:(我試圖避免這一點 – Xitrum

0

一些供應商允許它,但它是本地功能。查看Eclipselink的refreshMetadata()以獲取更改。但是如果只有數據庫連接/模式不同,你應該使用新的PU。只需指定一個ORM.xml以根據需要覆蓋表和方案名稱,並且您可以重複使用類別

相關問題