最近有項目用到JNDI,爲了方便的更改數據庫和環境,好吧,那我就來學習下,順便分享下方法,網上的方法亂七八糟,看的我眼都暈了。如下我提供的方法絕對是我本人試過可用的,要不發上來被你看到了,估計會被你罵。囧……html
先讓你們看下個人項目圖:java
1、咱們先找到tomcat6.0conf目錄下的context.xml更改裏面的內容:mysql
- <?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>
其餘的全刪掉,只要替換成我上面這樣的就能夠。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
- 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;
- }
- }
4、網上有的人說要配置下項目的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>
5、如今咱們來寫個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>
6、啓動tomcat,運行結果以下:
OK,大功告成。不行的同窗仔細對照上面的步驟看下,反正我是成功啦。
本文原文在個人我的博客思考者日記上發佈,同時在51CTO發佈,轉載請保留此信息。 |