我有一个 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
时,如果我想快速更改为另一个数据库......我基本上不能! (并非不需要将这些行更改为相应的数据库并生成一个全新的.war)。
我想要一种快速更改为不同数据库的方法,显然我需要使用的是 JNDI
上下文和 DataSource
并创建一个 Resource
这将是数据库连接...然后,如果我想更改数据库,只需更改资源
的参数。
问题是我找不到适合我的问题的工作教程......我已经尝试了几个小时。我得到的最多的一点是出现 NoInitialContextException
,但我在网上搜索了此错误,但似乎找不到正确的解释。
如果有人能阐明我的问题,我将不胜感激。
PS:抱歉英语或格式不好。
最佳答案
在您的服务器中创建数据源。这是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”。
关于java - 如何将我的数据库连接放在 .war 文件之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25918711/