我是JSF/Facelets的新手,我正在創建一個應用程序,該應用程序對(無SQL)數據庫執行通常的CRUD操作。數據庫有一個API,允許創建一個連接池,然後從這個對象我的操作可以獲取和釋放連接。我想這個池必須在部署時爲整個應用程序創建一次,共享(如靜態?)並在應用程序銷燬後關閉。我的方法是否正確?最佳做法是什麼?我不知道應該在哪裏放置我的代碼,以及我應該如何調用它。我應該在JSF應用程序中創建我的ConnectionPool?
用我以前的SQL數據庫,我在context.xml資源中配置了「testOnBorrow」和「validationQuery」,所以我不必通過編程方式創建顯式池。
我發現了兩個很棒的教程(here和here),但我無法從他們那裏找出在哪裏放置創建池的代碼。
注:我知道這可能是只有一個Servlet的問題,但我標記它作爲JSF,因爲我不知道是否有一種方法在JSF做到這一點(如應用程序作用域bean)。謝謝。
編輯
望着事實,我無法找到一個DataSource
數據庫的一個JAR通過context.xml
被加載,也許我的問題應該更具體:我在哪裏可以運行代碼一次,當部署JSF應用程序時,我在哪裏可以在JSF應用程序被銷燬時運行代碼?
只要你的連接池是線程安全的,我會用'@ Singleton'豆去。 –
您是使用標準Java EE堆棧還是基於定製Tomcat的堆棧?答案取決於此。 DAO文章假定基於定製Tomcat的堆棧。但是你給這個問題添加了標籤[java-ee],它增加了一些含糊性。無論如何,假設Tomcat,這有幫助嗎? http://stackoverflow.com/q/2299469 – BalusC
我認爲這有助於,謝謝。我正在使用TomEE。所以我需要做的是創建一個創建ConnectionPool對象的類,使用@Resource(「jdbc/some_name」)對其進行標記,然後從context.xml「
user1156544