2011-04-14 68 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文件的标准方式。

问候

相关问题