开发者社区> 杰克.陈> 正文

Tomcat6.0的JNDI使用方法(连接池)

简介: 原文http://www.cnblogs.com/shyy/archive/2013/03/12/2956046.html    最近有项目用到JNDI,为了方便的更改数据库和环境,好吧,那我就来学习下,顺便分享下方法,网上的方法乱七八糟,看的我眼都晕了。
+关注继续查看

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

 

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

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

QQ截图20130310234141.jpg

一、我们先找到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,运行结果如下:

QQ截图20130310233352.jpg

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

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

转载请保留此信息!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot中使用MongoDB的连接池配置
Spring Boot中使用MongoDB的连接池配置
263 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29572 0
tomcat连接池的配置与使用
tomcat连接池的配置与使用(原创)数据库mysql 【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号: 日期:2004-11-11 人气: 19442 出处:http://www.chinajavaworld.com 作者: liyong33 憋了好久,终于出炉了。
624 0
Spring JDBCTemplate使用JNDI数据源
xml配置: 1 3 4 5 6 7 在weblogic/jboss中配置好JNDI数据源后,上述节点改为: 1 2 3 j...
938 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20910 0
浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制
libs/android_runtime/android_net_wifi_Wifi.cpp部分jni接口static JNINativeMethod gWifiMethods[] = {{ "loadDriver", "()Z", (void *)android_net_wifi_loadDriv...
1185 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23610 0
Tomcat使用线程池配置高并发连接
Tomcat使用线程池配置高并发连接1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: namePrefix="tomcatThreadPool-" maxThreads="1000" maxIdleTime="300000" minSpareThreads="200"/> 重要参数说明:name:共享线程池的名字。
1163 0
+关注
杰克.陈
一个安静的程序猿~
10425
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载