最近有項目用到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
轉載請保留此信息!