2010-10-15 20 views
0

我有一個MySQL數據庫與許多數據庫,每個命名爲特定的客戶。任何方式在運行時注入/選擇數據源?

爲每個客戶部署一個web應用程序。 Web應用程序的名稱決定了底層數據庫名稱。當webapp啓動時,我有一個修改的Spring PropertyPlaceholderConfigurer來抓取ServletContext(如果可以)並確定名稱。然後,我在我的數據源設置中對此進行了解引用。精美的作品。完全相同的代碼可以部署給所有客戶,並且他們發現他們的數據庫沒有問題(也是DNS名稱來定位MySQL主機)。

我想切換到GlassFish或JBoss AS 6,仍然使用直接的JEE6 API /註釋執行相同的操作。

有沒有辦法做到這一點?我並不擔心安全性 - 數據集足夠大以證明他們自己的機器和Web應用程序的合理性,並且由於數據庫模型與代碼綁定,因此需要保持同步。由於不是每個客戶都需要手頭的最新代碼,他們的修改速度不同。

我喜歡JEE6的便利性,它鞏固了Spring曾經擁有過的許多東西,但是我討厭不得不處理應用程序服務器和它們的白癡,但是一起玩弄Spring也不好玩。

+0

所以你想讓JPA在運行時選擇一個數據源?但你怎麼使用它?容器管理的實體管理器?我不確定是否有足夠的細節給出答案... – 2010-10-15 07:46:17

+0

是的,我想使用容器管理的JPA。我已經看到了@DataSourceDefinition註解,在我的生活中,我無法使用JBoss AS 6Mlatest。 http://blogs.sun.com/Lance/entry/introducing_the_datasourcedefinition_annotation 我可以在啓動時確定應用程序名稱並註冊JNDI數據源的EJB加載?希望不必使用供應商擴展。 – pickles 2010-10-16 06:41:36

回答

1

我想切換到GlassFish或JBoss AS 6,仍然使用直接的JEE6 API /註釋執行相同的操作。

恐怕這是不可能的。就我所知,使用容器管理的實體管理器,您將無法在運行時配置其基礎數據源。