繁体   English   中英

如何将我的数据库连接放在.war文件之外?

[英]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:

http://www.codejava.net/frameworks/spring/configuring-spring-mvc-jdbctemplate-with-jndi-data-source-in-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM