您的位置:首页 > 运维架构 > Tomcat

tomcat6.0中配置JNDI的DBCP连接及JNDI在程序中调用

2010-01-25 13:08 441 查看
以往Tomcat5.0的连接池配置是在http://localhost:8080/admin/

进行的非常方便,可是5.0以后的版本里面Tomcat就没有把admin集成到程序中了。Tomcat5.5的admin可以在apache官方网站上
下到,也可以通过admin里面的提示信息进行配置,可是Tomcat6.0他的admin是下不到的,好像是没有,这个时候配置连接池就必须手动配置
了。网上有很多配置方法,可是说的都不是很详细,而且一般都是在server.xml里面配置,在这里我就系统的说一下在context.xml里面配置
Tomcat6.0连接池的方法。

首先打开Tomcat6.0目录下的conf文件夹然后打开context.xml文件,在里面添加

<Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/bbs"

username="root" password="root" maxActive="100" maxIdle="30"

maxWait="1000" />

下面对里面几个比较重要的参数进行一下说明:

name:表示你的连接池的名称也就是你要访问连接池的地址

auth:是连接池管理权属性,Container表示容器管理

type:是对象的类型

driverClassName:是数据库驱动的名称

url:是数据库的地址

username:是登陆数据库的用户名

password:是登陆数据库的密码

maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连

接将被标记为不可用,然后被释放。设为0表示无限制。

MaxActive,连接池的最大数据库连接数。设为0表示无限制。

maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示

无限制。

*maxActive:最大连接数据库连接数,设 0 为没有限制

*maxIdle:最大等待连接中的数量,设 0 为没有限制

*maxWait:最大等待毫秒数, 单位为 ms, 超过时间会出错误信息

一般把maxActive设置成可能的并发量就行了

maxActive、maxIdle和maxWait参数:

maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连 

 接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的

连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到

超时为止,也可取值9000,表示9秒后超时。

maxWait=5000

maxActive=50

maxIdle=5

到这里Tomcat6.0的连接池就配置成功了!

Tomcat下JNDI的配置与调用(以oracle为例)


开发J2EE系统是,很多情况下都需要采用数据库来支持数据的存储,在java里JNDI提供很好的目录服务,尤其是tomcat里自带的伪JNDI,我
们可以利用这个,配合系统的设计,能够很好地做到一个系统支持多种数据库的架构,本文主要介绍tomcat下的JNDI的配置和使用例子,以Oracle
数据库为例。

1、 配置Tomcat的Server.xml文件

寻找</Host>字样,在</Host>字样前加入下列配置信息。将ojdbc14.jar文件拷入%TOMCAT_HOME%/common/lib目录中,重新启动Tomcat。

<DefaultContext>

<!-- below is the JNDI data resource -->

<Resource name="jdbc/数据名" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/数据名">

<parameter>

<name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

</parameter>

<parameter>

<name>driverClassName</name>

<value>oracle.jdbc.OracleDriver</value>

</parameter>

<parameter>

<name>url</name>

<value>jdbc:oracle:thin:@192.168.1.64:1521:Oracle的SID</value>

</parameter>

<parameter>

<name>username</name>

<value>用户名</value>

</parameter>

<parameter>

<name>password</name>

<value>密码</value>

</parameter>

<parameter>

<name>maxActive</name>

<value>50</value>

</parameter>

<parameter>

<name>maxIdle</name>

<value>30</value>

</parameter>

<parameter>

<name>maxWait</name>

<value>-1</value>

</parameter>

</ResourceParams>

<!-- end of JNDI resource -->

</DefaultContext>

2、 配置web程序的web.xml文件

在web.xml文件的web-app节点下添加如下节点元素

<resource-ref>

<res-ref-name>jdbc/数据名</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

3、 调用实例

public class DataManage {

private static DataSource ds = null;

static {

try {

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env");

ds = (DataSource) envCtx.lookup("jdbc/eCampus");

} catch (NamingException e) {

System.out.println("无法获得JNDI数据源");

}

}

/**

* 用于获得一个默认的数据库链接

* @return Connection

*/

public static Connection getConnection() {

Connection conn = null;

try {

conn = ds.getConnection();

} catch (SQLException e) {

System.out.println("无法获得数据库链接");

}

return conn;

}

}

若直接采用JNDI则可以采用如下代码

Connection conn = null;

try {

Class.forName("oracle.jdbc.OracleDriver");

conn = DriverManager.getConnection(

"jdbc:oracle:thin:@192.168.1.64:1521:radius", "edu",

"edu");

} catch (ClassNotFoundException e) {

System.out.println("我没有找到数据库驱动器");

} catch (SQLException e) {

System.out.println("无法和数据库建立链接");

}

return conn;

4、 需要注意的地方

在部署时,需要把数据库相应的驱动放在tomcat的common目录的lib下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: