程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Tomcat 6.0的JNDI使用方法

Tomcat 6.0的JNDI使用方法

編輯:關於JAVA

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

先讓大家看下我的項目圖:

一、我們先找到tomcat6.0conf目錄下的context.xml更改裡面的內容:

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

其他的全刪掉,只要替換成我上面這樣的就可以。

參數解釋:

name 為當前數據源JNDI的名字,可以隨意設定;

auth 為驗證方式;

type 資源類型;

driverClassName 為Oracle驅動引用;

maxActiv 為連接池最大激活的連接數,設為0表示無限制;

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

maxWait 為連接最大的等待時間,單位毫秒,如果超過此時間將接到異常。設為-1表示無限制;

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

password 為username的密碼;

url 為連接oracle的連接地址;

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

三、裡面建個類ConnectionPool.java

package com.shyy.jndi; 
     
import java.sql.Connection; 
     
import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.sql.DataSource; 
     
public class ConnectionPool { 
    private static Connection conn; 
         
    public static Connection getConn(){ 
        try{ 
            Context ctx = new InitialContext(); 
            DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysqldb"); 
            conn = ds.getConnection(); 
        }catch(Exception e){ 
            e.printStackTrace(); 
        } 
        return conn; 
    } 
}

四、網上有的人說要配置下項目的WebRoot/web-inf下的web.xml文件,如下,我自己沒有配置也運行成功了(大家可以省略,如果不行再加上,我不敢保證所有的環境都和我的一樣)

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

<resource-ref>   
<description>DB Connection test</description>   
<res-ref-name>jdbc/mysqldb</res-ref-name>   
<res-type>javax.sql.DataSource</res-type>   
<res-auth>Container</res-auth>   
 </resource-ref>

五、現在我們來寫個JSP頁面測試下,如下代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> 
<%@ page import="com.shyy.jndi.ConnectionPool,java.sql.Connection,java.sql.*" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>測試JNDI連接</title> 
</head> 
<body> 
<% 
ConnectionPool conn = new ConnectionPool(); 
Connection connconns = conn.getConn(); 
if(null!=conns){ 
    out.println("數據庫連接狀態:<b>OK</b><hr />"); 
    PreparedStatement pst = conns.prepareStatement("SELECT * FROM USER_INFO"); 
    ResultSet rs = pst.executeQuery(); 
    while(rs.next()){ 
        int id =rs.getInt("ID"); 
        String name = rs.getString("NAME"); 
        String sex = rs.getString("SEX"); 
        String telPhone = rs.getString("TELPHONE"); 
        out.println("<b>id:</b>"+id+"<br /><b>姓名:</b>"+name+"<br /><b>性別:</b>"+sex+"<br /><b>手機號:</b>"+telPhone+"<hr />"); 
    } 
}else{ 
    out.println("數據庫連接狀態:NO"); 
} 
%> 
</body> 
</html>

六、啟動tomcat,運行結果如下:

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved