使用容器提供的数据库连接池--JNDI用法

来源:互联网 发布:js二维数组列数不同 编辑:程序博客网 时间:2024/05/16 01:48

现在,数据库的连接没有用到连接池几乎很少很少,每个项目组都可能有自己的数据库连接池组件,各容器提供商也提供了各自的数据库连接池,下面介绍一下tomcat和weblogic使用JNDI的数据库连接管理。

本文中用到的数据库信息如下:

数据库:ms sql server
host: demo
database: test
DriverName: com.microsoft.jdbc.sqlserver.SQLServerDriver
(注:数据库驱动,weblogic放在$BEA$/weblogic81/common/lib下,tomcat放在自己项目/WebRoot/WEB-INF/lib下)
User: sa
password: sa

数据源:JNDI_Test

1、服务器配置:

现在的容器提供商都提供了管理工具,可以通过服务器管理工作来配置数据库连接池和数据源。


下面就目前流行的weblogic和tomcat来说明

1.1 Weblogic配置
weblogic得先配置数据库连接池,再配置数据源,配置完成后,config.xml中的Domain(这里是myserver)内增加如下信息:

<!--数据库连接池配置信息-->
<JDBCConnectionPool
        DriverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
        Name="MyJDBCConnPool" PasswordEncrypted="{3DES}iEg3VohwDmo="
       

Properties="user=sa;url=jdbc:microsoft:sqlserver://demo:1433;selectMethod=cursor;dataSourceName=SQL2000JDBC;userName=sa;datab

aseName=test;serverName=demo"
        Targets="myserver" TestTableName="SQL SELECT 1" URL="jdbc:microsoft:sqlserver://demo:1433"/>
<!--数据源配置信息-->
<JDBCTxDataSource JNDIName="JNDI_Test" Name="MyJDBCDataSource"
        PoolName="MyJDBCConnPool" Targets="myserver"/>

1.2 tomcat配置
Tomcat直接在相应的Context下配置(这里是test,也可以在GlobalNamingResources,该配置方法请查找相关资料)数据源,配置服务器配置

完成后,相应的Context配置文件如下:
<Context docBase="test" path="/test" workDir="work/Catalina/localhost/test">
  <Resource name="hrmis" type="javax.sql.DataSource"/>
  <ResourceParams name="hrmis">
    <parameter>
      <name>url</name>
      <value>jdbc:microsoft:sqlserver://demo:1433;DatabaseName=test</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>sa</value>
    </parameter>
<!--定义数据库连接数最大值-->
    <parameter>
      <name>maxActive</name>
      <value>10</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>5000</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>sa</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>2</value>
    </parameter>
  </ResourceParams>
</Context>

2、用法:

2.1 一般用法

可以创建数据库连接管理器来管理数据库连接,类如下:

/*
 * 创建日期 2005-8-26
 *
 * 数据库连接管理器 V0.1
 *
 */
package com.brewx.db;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
 * @author Jinghui

 *
 */
public final class DBConnectionManager {
 //JNDI名称
 private static String JNDIName = "JNDI_Test";

 //是否是Tomcat服务器
 private static boolean isTomcat = true;

 //同步锁
 private static Object initLock = new Object();

 //数据源,提供数据连接
 private static DataSource dataSource = null;
 
 
 /**
  * 从数据源中取得数据库连接
  * @return connetion 数据库连接
  * @throws SQLException
  * @throws NamingException
  */
 public static Connection getConnection() throws SQLException,
   NamingException {
  if (dataSource == null) {
   synchronized (initLock) {
    if (dataSource == null) {
     Context ctx = new InitialContext();

     if (isTomcat) {
      //如果是tomcat,则查找上下文java:comp/env
      ctx = (Context) ctx.lookup("java:comp/env");
     }
     //查找数据源
     dataSource = (DataSource) ctx.lookup(JNDIName);
    }
   }

  }
  return dataSource.getConnection();
 }

}


2.2 在hibernate中的用法
在hibernate下的tomcat配置请参阅hibernate手册。
weblogic配置如下:
<hibernate-configuration>

 <session-factory>
  <!-- properties -->
  <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>
  <property name="connection.datasource">JNDI_Test</property>

  <!-- mapping files -->
  <!-- The following mapping element was auto-generated in -->
  <!-- order for this file to conform to the Hibernate DTD -->
  <mapping resource="/com/brewx/ht/hibCfg/User.hbm.xml" />
  ......

 </session-factory>

</hibernate-configuration>

3. 总结
这种方法配置与用法都很简单,如果性能能过关的话(我没有对性能进行测试:)),是值得使用。

原创粉丝点击