使用容器提供的数据库连接池--JNDI用法
2005-08-26 17:05
375 查看
现在,数据库的连接没有用到连接池几乎很少很少,每个项目组都可能有自己的数据库连接池组件,各容器提供商也提供了各自的数据库连接池,下面介绍一下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. 总结
这种方法配置与用法都很简单,如果性能能过关的话(我没有对性能进行测试:)),是值得使用。
本文中用到的数据库信息如下:
数据库: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. 总结
这种方法配置与用法都很简单,如果性能能过关的话(我没有对性能进行测试:)),是值得使用。
相关文章推荐
- tomcat容器中使用JNDI访问外部openLDAP提供的目录服务
- PropertyPlaceholderConfigurer的用法(使用spring提供的类读取数据库配置信息.properties)
- asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析
- 使用Docker的macvlan为容器提供桥接网络及跨主机通讯
- java 数据库连接池 c3p0 使用及参数详解,支持重连
- Java 使用 DBCP mysql 连接池 做数据库操作
- Nodejs连接数据库为何使用连接池
- Tomcat Oracle数据库连接池设置与使用
- JavaWeb之DButils(三)使用C3P0实现数据库的连接池
- 如何直接使用ODBC提供的API来操作数据库呢?
- 使用JNDI配置Tomcat数据源[提高访问数据库效率]
- java使用JNDI 获取weblogic配置的数据源 连接数据库
- 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结
- 数据库开发-数据库使用连接池
- jndi使用,创建连接池
- SqlConnection,使用连接池提高数据库性能
- 数据库连接学习(二)——Tomcat下使用C3P0配置JNDI数据源
- Tomcat jndi 数据库配置 连接池配置
- 【Spring】使用数据源连接池访问数据库
- Hibernate提供的操作数据库的方法使用和比较