2011-04-14 70 views
1

我正在開發一個Web應用程序。 Web應用程序需要訪問患者數據庫,該數據庫目前是簡單的MySQL數據庫,但將來可能會被其他一些數據庫(或數據源)替代。目前,一切都硬編碼,但我想有一些方法來配置數據庫連接(即數據庫的URL,用戶,密碼等)。存儲數據庫配置參數的最佳方法?

什麼是一個簡單而直接的解決方案?如果我可以通過簡單編輯文件來更改配置,那將是一件好事。

我看到有Properties API以及Preferences。或者有沒有關於servlets/web應用程序的一些成語?

回答

4

servlet是一個Web應用程序的一部分,並且此網絡應用程序被部署到一個Java EE容器(Tomcat的時,WebLogic等)。

獲取數據庫連接的標準方法是使用JNDI獲取DataSource實例並詢問與此DataSource的連接。該數據源,大多數時間,將池中的數據庫連接,以避免創建和關閉連接太多,因此要快得多:

Context initCtx = new InitialContext(); 
DataSource dataSource = (DataSource) initCtx.lookup("java:comp/env/jdbc/MyDataSource"); 
Connection c = dataSource.getConnection(); 
try { 
    // ... 
} 
finally { 
    c.close(); // makes the connection available for a new thread 
} 

的數據源將在web.xml文件中聲明:

<resource-ref> 
    <description>Datasource example</description> 
    <res-ref-name>jdbc/MyDataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

必須在您的Java EE容器中定義它(包括其URL,連接數,用戶,密碼,設置等)。這是它取決於你的容器的地方。

閱讀以下說明爲Tomcat:http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

+0

這是配置連接的好方法。不幸的是,內置的GWT Jetty服務器通常用於開發,因此不支持缺省配置的JNDI支持。它可以做到,但看到我的答案[這個問題(在一個有點不同,但相關的主題)](http://stackoverflow.com/questions/5078273/running-gwt-speedtracer-without-jetty)。缺點是,實際配置因服務器而異(例如,jetty-env.xml vs context.xml)。 – 2011-04-14 09:24:06

1

我認爲配置XML和你的web應用程序是一個好主意。每次應用程序由新請求啓動時,都會加載配置,並可以從您創建的任何內部上下文中獲取數據庫連接信息。

在IIS上,這是通過Web.config文件的標準方式。

問候

相關問題