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

    最近有項目用到JNDI,爲了方便的更改數據庫和環境,好吧,那我就來學習下,順便分享下方法,網上的方法亂七八糟,看的我眼都暈了。如下我提供的方法絕對是我本人試過可用的,要不發上來被你看到了,估計會被你罵。囧……html

先讓你們看下個人項目圖:java

QQ截圖20130310234141.jpg

1、咱們先找到tomcat6.0conf目錄下的context.xml更改裏面的內容:mysql

 

  
  
  
  
  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> 

其餘的全刪掉,只要替換成我上面這樣的就能夠。web

參數解釋:sql

name 爲當前數據源JNDI的名字,能夠隨意設定;數據庫

auth 爲驗證方式;tomcat

type 資源類型;oracle

driverClassName 爲Oracle驅動引用;app

maxActiv 爲鏈接池最大激活的鏈接數,設爲0表示無限制;ide

maxIdle 爲鏈接池最大空閒的鏈接數,數據庫鏈接的最大空閒時間。超過空閒時間,數據庫鏈接將被標記爲不可用,而後被釋放。設爲0表示無限制;

maxWait 爲鏈接最大的等待時間,單位毫秒,若是超過此時間將接到異常。設爲-1表示無限制;

username 爲oracle數據庫的一個用戶名;

password 爲username的密碼;

url 爲鏈接oracle的鏈接地址;

 

2、新建個項目JNDIPro,名字就叫這個啦。

 

3、裏面建個類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.     } 

4、網上有的人說要配置下項目的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>  
 

5、如今咱們來寫個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. </body> 
  29. </html> 

6、啓動tomcat,運行結果以下:

QQ截圖20130310233352.jpg

 

OK,大功告成。不行的同窗仔細對照上面的步驟看下,反正我是成功啦。

 本文原文在個人我的博客思考者日記上發佈,同時在51CTO發佈,轉載請保留此信息。
相關文章
相關標籤/搜索