Tomcat5.5下配置JNDI JDBC数据源

来源:互联网 发布:椰族部落永久域名新址 编辑:程序博客网 时间:2024/04/30 14:04
wukejia@msn.com

1 安装JDBC驱动

   
    通常,将JDBC驱动安装到$CATALINA_HOME/common/lib下。

2 声明你的资源引用

   
    这里我们为JDBC数据源建立的JNDI资源名为“jdbc/dataSource2005”,需要在web应用部署描述文件web.xml中添加资源声明:

<resource-ref>
  <description>
    Resource reference to a factory for java.sql.Connection
    instances that may be used for talking to a particular
    database that is configured in the server.xml file.
  </description>
  <res-ref-name>
    jdbc/dataSource2005
  </res-ref-name>
  <res-type>
    javax.sql.DataSource
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>
   
    以下是一份简单、完整的web.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app id="StrutsWuApplication">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref id="datasource">
        <description>Database connection</description>
        <res-ref-name>jdbc/dataSource2005</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>


3 配置Tomcat资源工厂

   
    接下来修改应用的$CATALINA_HOME/conf/server.xml或web应用的/META-INF/context.xml文件,在相应的context节添加:

<Context ...>
  ...
    <Resource name="jdbc/dataSource2005" auth="Container" type="javax.sql.DataSource" username="sa" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://localhost:1433;databasename=northwind" maxActive="8" maxIdle="4"/>
  ...
</Context>


    Tomcat标准数据源资源工厂配置项如下:
    * driverClassName - 所使用的JDBC驱动类全称。
    * maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。
    * maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。
    * maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。
    * password - 传给JDBC驱动的数据库密码。
    * url - 传给JDBC驱动的连接URL。
    * user - 传给JDBC驱动的数据库用户名。
    * validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。如果指定了该属性,则必为至少返回一行记录的SQL SELECT语句。


4 使用


Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/dataSource2005");
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();


注意:Tomcat5.5不支持ConnectionPoolDataSource接口。

5 参考

 
   * http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html