| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 959 人关注过本帖
标题:如何定义JNDI数据源
取消只看楼主 加入收藏
野蛮女人
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:827
专家分:0
注 册:2007-4-7
结帖率:100%
收藏
 问题点数:0 回复次数:0 
如何定义JNDI数据源

如何定义JNDI数据源 (抽取翻译了一下Tomcat文档的JNDI数据源的部分,不对的地方请指正..)

内容提要:
1、介绍
2、数据连接池的配置
3、不使用连接池的解决方案
4、Oracle数据源配置举例

1、总体介绍 Introdution

配置JNDI数据源是配置JNDI资源的一个特例,过程和方法都差不多..
请注意:在Tomcat 5.0.x 和 Tomcat 5.5.x版本之间,JNDI资源的配置已经发生了变化,所以,如果你使用的是以上版本需要修改一下配置语法..
本文假定你已经理解了Context和Host的配置,如果没有,请自行学习..

2、数据连接池的配置 Database Connection Pool(DBCP) Configurations

DBCP提供了对JDBC2.0的支持,如果你使用的1.4版本JVM,DBCP将支持JDBC3.0..
2.1 安装 Installation
DBCP使用Jakarta-Commons Database Connection Pool,它依赖以下三个包:
Jakarta-Commons DBCP
Jakarta-Commons Collections
Jakarta-Commons Pool
在Tomcat的安装目录提供了一个集成的jar包 $CATALINA_HOME/lib/tomcat-dbcp.jar..
3 避免数据连接池泄露 Preventing DB connection pool leaks
顾名思义,数据连接池负责创建和管理数据库连接.重用一个已经存在的数据连接要比每次都打开新建(new)一个连接效率高的多..
但连接池通常个问题:一个Web应用程序需要关闭ResultSet's,Statement's,Connections's等资源.如果应用程序关闭资源失败,就是导致这些资源无法在被重用,即数据连接池泄露.最终如果没有足够的有效的连接,将导致应用程序连接失败.
对于这个问题有个解决方法;Jakarta-Commons的DBCP可以通过配置来跟踪、恢复那些关闭失败的连接.不但可以恢复,而且还可以生成堆栈轨迹..
为了关闭和重用那个被遗弃的资源,可以在DBCP数据源的资源配置中加入一下属性:


xml 代码
removeAbandoned="true"


当有效的数据连接低于DBCP设置的时候,就会重用被遗弃的资源..默认是false;


xml 代码
removeAbandonedTimeout="60"


设置被抛弃的数据连接在多少秒之后可以被删除...默认是300秒.


xml 代码
logAbandoned="true"


如果想要记录下被抛弃数据连接的堆栈轨迹可以设为true..默认false;

4、Oracle配置举例
Tomcat只能识别*.jar文件,如果数据库驱动为*.zip,则需要修改扩展名为jar..对于Oracle9i应该使用 oracle.jdbc.OracleDriver,因为 oracle.jdbc.driver.OracleDriver 已经不建议使用..将来也不一定支持了..
4.1 配置server.xml


xml 代码
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
username="scott" password="tiger" maxActive="20" maxIdle="10"
maxWait="-1"/>

4.2 配置web.xml


xml 代码
<resource-ref>
<description>Oracle Datasource exampledescription>
<res-ref-name>jdbc/myoracleres-ref-name>
<res-type>javax.sql.DataSourceres-type>
<res-auth>Containerres-auth>
resource-ref>

4.3 代码示例


java 代码
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
//etc.

英文原文地址:tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

搜索更多相关主题的帖子: 数据源 定义JNDI Tomcat 资源 解决方案 
2007-06-27 17:06
快速回复:如何定义JNDI数据源
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024860 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved