我有一个使用Java的Web应用程序,它在Apache Tomcat 7上运行,并且在某些时候将以下连接到数据库中:
DBConnection database = new DBConnection(
"user", "password", "jdbc:sqlserver://localhost:1433"
);
database.connect();
Connection conn = database.getConn();
DBConnection
是我创建的一个类,它有一些关于数据库的代码,没什么特别的(它有JDBC驱动程序和所有)。我们在这里看到的是从Java到SQLServer DB的工作连接。
我的问题是当我生成.war
时,如果我想快速更改为另一个数据库...我基本上不能! (并非必须将这些行更改为相应的DB并生成一个全新的.war)。
我希望快速更改为不同的数据库,显然我需要使用JNDI
上下文与DataSource
,并创建一个Resource
作为数据库连接。 ..然后,如果我想更改数据库,只需更改Resource
的参数。
问题是我无法找到适合我的问题的工作教程......而且我已经尝试了几个小时。我得到的最大点是NoInitialContextException
,但我在网上搜索了这个错误,我似乎无法找到正确的解释。
如果有人能够解释我的问题,我将不胜感激。
PS:抱歉英文不好或格式化。
答案 0 :(得分:1)
将连接信息放在属性文件中,并使用对属性的引用替换硬编码值。更好的方法是使用所有这些的框架,如Spring Data:
http://spring.io/guides/gs/accessing-data-jpa/
本教程介绍如何在context.xml文件中执行此操作,您可以将Apache Tomcat配置为重新读取:
答案 1 :(得分:1)
在服务器中创建数据源。以下是steps。
您将使用以下JNDI查找来获得连接:
private DataSource getDataSource (String dataSourceLocation) throws NamingException
{
// Get a context for the JNDI look up
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
// Look up a data source
javax.sql.DataSource ds
= (javax.sql.DataSource) envContext.lookup (dataSourceLocation);
return ds;
}
private Connection getConnection (DataSource ds) throws SQLException
{
Connection conn = null;
// Get a connection object
conn = ds.getConnection();
return conn;
}
注意:dataSouceLocation将是“jdbc / UCPPool”。