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


       最近有項目用到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

轉載請保留此信息!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM