原文http://www.cnblogs.com/shyy/archive/2013/03/12/2956046.html

最近有项目用到JNDI,为了方便的更改数据库和环境,好吧,那我就来学习下,顺便分享下方法,网上的方法乱七八糟,看的我眼都晕了。以下我提供的方法绝对是我本人试过可用的,要不发上来被你看到了,估计会被你骂。囧……

先让大家看下我的项目图:

一、我们先找到tomcat6.0conf目录下的context.xml更改里面的内容:

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <Context>
 3 <WatchedResource>WEB-INF/web.xml</WatchedResource>
 4     <Resource name="jdbc/mysqldb"
 5        auth="Container"
 6        type="javax.sql.DataSource"
 7        driverClassName="com.mysql.jdbc.Driver"
 8        url="jdbc:mysql://localhost:3306/test"
 9        username="root"
10        password="123456"
11        maxActive="4"
12        maxIdle="2"
13        maxWait="-1"  />
14 <ResourceLink global="mysqldb" name="mysqldb" type="javax.sql.DataSource"/>
15 </Context>  

其他的全删掉,只要替换成我上面这样的就可以。

参数解释:

name 为当前数据源JNDI的名字,可以随意设定;

auth 为验证方式;

type 资源类型;

driverClassName 为Oracle驱动引用;

maxActiv 为连接池最大激活的连接数,设为0表示无限制;

maxIdle 为连接池最大空闲的连接数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制;

maxWait 为连接最大的等待时间,单位毫秒,如果超过此时间将接到异常。设为-1表示无限制;

username 为oracle数据库的一个用户名;

password 为username的密码;

url 为连接oracle的连接地址;

二、新建个项目JNDIPro,名字就叫这个啦。

三、里面建个类ConnectionPool.java

 1 package com.shyy.jndi;
 2
 3 import java.sql.Connection;
 4
 5 import javax.naming.Context;
 6 import javax.naming.InitialContext;
 7 import javax.sql.DataSource;
 8
 9 public class ConnectionPool {
10     private static Connection conn;
11
12     public static Connection getConn(){
13         try{
14             Context ctx = new InitialContext();
15             DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysqldb");
16             conn = ds.getConnection();
17         }catch(Exception e){
18             e.printStackTrace();
19         }
20         return conn;
21     }
22 }  

四、网上有的人说要配置下项目的WebRoot/web-inf下的web.xml文件,如下,我自己没有配置也运行成功了(大家可以省略,如果不行再加上,我不敢保证所有的环境都和我的一样)

在<web-app></web-app>中间配置,

1 <resource-ref>
2 <description>DB Connection test</description>
3 <res-ref-name>jdbc/mysqldb</res-ref-name>
4 <res-type>javax.sql.DataSource</res-type>
5 <res-auth>Container</res-auth>
6  </resource-ref>   

五、现在我们来写个JSP页面测试下,如下代码:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ page import="com.shyy.jndi.ConnectionPool,java.sql.Connection,java.sql.*" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>测试JNDI连接</title>
 9 </head>
10 <body>
11 <%
12 ConnectionPool conn = new ConnectionPool();
13 Connection connconns = conn.getConn();
14 if(null!=conns){
15     out.println("数据库连接状态:<b>OK</b><hr />");
16     PreparedStatement pst = conns.prepareStatement("SELECT * FROM USER_INFO");
17     ResultSet rs = pst.executeQuery();
18     while(rs.next()){
19         int id =rs.getInt("ID");
20         String name = rs.getString("NAME");
21         String sex = rs.getString("SEX");
22         String telPhone = rs.getString("TELPHONE");
23         out.println("<b>id:</b>"+id+"<br /><b>姓名:</b>"+name+"<br /><b>性别:</b>"+sex+"<br /><b>手机号:</b>"+telPhone+"<hr />");
24     }
25 }else{
26     out.println("数据库连接状态:NO");
27 }
28 %>
29 </body>
30 </html>

六、启动tomcat,运行结果如下:

OK,大功告成。不行的同学仔细对照上面的步骤看下,反正我是成功啦。

本文出自:http://www.shuyangyang.com.cn/jishuliangongfang/Javabiancheng/2013-03-10/64.html

转载请保留此信息!

Tomcat6.0的JNDI使用方法(连接池)相关推荐

  1. 数据连接池——JNDI

    数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP).数据库连接池到底是什么?它比jd ...

  2. 中间件 BES 连接池的配置和问题诊断方法

    彭文元 云和恩墨技术专家 服务于某省移动公司BES中间件和数据库运维,在IT行业拥有10年以上的工作经历,包含产品开发.需求调研.数据库以及中间件的实施维护等.擅长 BES 中间件和 ORACLE 数 ...

  3. 数据库驱动和JDBC、DBCP-C3P0连接池

    目录 数据库驱动 第一个JDBC程序 statement对象详解 SQL注入问题 PreparedStatement对象 JDBC操作事务 DBCP-C3P0连接池 DBCP C3P0 C3P0与DB ...

  4. mysql多个字符串连接池_使用Coroutine\Channel实现一个简单的MySQL连接池

    Channel通道,类似于go语言的chan,支持多生产者协程和多消费者协程,Swoole底层自动实现了协程的切换和调度 Channel实现原理 通道与PHP的Array类似,仅占用内存,没有其他额外 ...

  5. c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate

    目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...

  6. Sql Server 连接池

    在看缓存的一篇文章中,看到连接池的三个字,来充充电. 原文连接 这篇讲了关键字 其实我们一直在使用SqlServer的连接池.在连接字符串中,Pooling为是否启用连接池,默认值为true,表示启用 ...

  7. java 连接池实例_功能完善的Java连接池调用实例

    /** * Title: ConnectPool.java * Description: 连接池管理器 * Copyright: Copyright © 2002/12/25 * Company: * ...

  8. C3P0连接池、DRUID连接池和JdbcTemplate

    目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...

  9. 几个主流的Java连接池整理

    池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...

最新文章

  1. 同步/异步移动文件列表框选中的文件
  2. jQuery 常用的方法
  3. 安卓学习第10课——listview
  4. 去授权美化版LM在线表白网页制作PHP源码
  5. windows下使用cmake+mingw配置makefile(1)
  6. 大兴新年大集 推10条文化旅游线
  7. php添加语句,有什么办法能把一条php语句插入到方法里呢?
  8. 3月27日外电头条:Windows的开源野心
  9. python三位数数字求和_Python定义函数实现累计求和操作
  10. 字节跳动java面试题,附详细答案解析
  11. matlab气体流速,气体流速的测定方法.pdf
  12. html - <thead>标签
  13. iPad能装Android系统,我错了,原来iPad真的能装Windows和MacOS系统
  14. 网联最终落地,如何影响第三方支付机构、银联等?
  15. FPD-LINK网上搜集的相关资料链接(持续更新)
  16. B站千万粉丝——老师好我叫何同学
  17. wordpress如何给文章添加浏览量,使用插件WP-PostViews
  18. 学编程用什么系统好?
  19. 题目26: 孪生素数问题
  20. 基于QTC++的线激光标定+测距模型

热门文章

  1. django时间与系统时间差8小时
  2. 动态使用webservice,以及含有ref类型的参数的问题
  3. mssql,mysql,oracle中查询数据库表的比较
  4. ECMALL SEO 问题的解决方法
  5. VS2010与.NET4系列 20.VS2010的JavaScript智能感知增强
  6. 一个关于解决序列化问题的编程技巧
  7. 股骨截骨php钢板,股骨远端截骨(DFO)术前设计及手术步骤【附视频】
  8. vue 本地xlsx文件下载_前端vue下载导出excel和cvs文件
  9. lvds接口屏线安装图解_液晶屏LVDS线类型图文讲解
  10. Docker 容器技术 — docker run