设为首页 收藏本站
查看: 423|回复: 0

[经验分享] 如何在Tomcat中定义JNDI数据源

[复制链接]

尚未签到

发表于 2017-2-3 07:06:44 | 显示全部楼层 |阅读模式
  如何定义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 
  2007-06-27
jvincent

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-336710-1-1.html 上篇帖子: tomcat下配置jdbc连sqlserver数据源 下篇帖子: Myeclipse中启动Tomcat服务出现Transport dt_socket failed
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表