[英]How to put my DB connection outside the .war file?
我有一个运行在Apache Tomcat 7上的Java Web应用程序,有时在数据库中进行以下连接:
DBConnection database = new DBConnection(
"user", "password", "jdbc:sqlserver://localhost:1433"
);
database.connect();
Connection conn = database.getConn();
DBConnection
是我制作的一个类,其中包含有关DB的一些代码,没什么特别的(它具有JDBC驱动程序和所有驱动程序)。 我们在这里看到的是从Java到SQLServer DB的有效连接。
我的问题是,当我生成.war
,如果我想快速更改为另一个数据库...我基本上不能! (并非不必将这些行更改为相应的DB并生成一个全新的.war)。
我想有一种快速的方法来切换到不同的数据库,显然我需要使用带有DataSource
JNDI
上下文并创建一个将成为数据库连接的Resource
...然后,如果我想更改数据库,只需更改参数Resource
。
问题是我找不到适合我的问题的工作教程……而且我已经尝试了好几个小时。 我最大的NoInitialContextException
是遇到了NoInitialContextException
,但是我在网络上搜索了此错误,但似乎找不到正确的解释。
如果有人能阐明我的问题,我将不胜感激。
PS:对不起,英语不好或格式化。
将连接信息放在属性文件中,并用对属性的引用替换您的硬编码值。 更好的方法是对所有这些使用框架,例如Spring Data:
http://spring.io/guides/gs/accessing-data-jpa/
本教程向您展示如何在context.xml文件中执行此操作,您可以将其配置为重新读取Apache Tomcat:
在服务器中创建一个数据源。 步骤如下 。
您将使用下面的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”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.