返回列表 發帖

TOMCAT 6 上設定 JNDI 連接池 使用mySQL

在tomcat 6 下設定跟以往不同
其中最重要的一個點 就是 context.xml
這個設定在以往, 它是放在 server.xml 這個檔裡的 <HOST> </HOST> 裡面
但在tomcat6, 這個設定被獨立出來, context.xml
它的內容就跟以前一樣

紅色字的部分就是設定JNDI , 如果你是使用mySQL
<?xml version='1.0' encoding='utf-8'?>
<Context path="" reloadable="true" docBase="D:\Tomcat\webapps\myWeb" workDir="D:\Tomcat\webapps\myWeb\WEB-INF\work >


     <WatchedResource>WEB-INF/web.xml</WatchedResource>
    
     <Resource name="jdbc/db" auth="Container" type="javax.sql.DataSource"
               maxActive="5" maxIdle="1" maxWait="10000"
               username="帳號" password="密碼" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/db?autoReconnect=true" />
    
</Context>
接下來,設定web.xml
你可以直接去設定在Tomcat\conf\web.xml
<web-app>
    ...........

  <resource-ref>
    <description>JNDI JDBC DataSource of DBWatch</description>
    <res-ref-name>jdbc/db</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref> 
...........

</web-app>
如此,JNDI就設定完成了.

接下來就測試看看~寫一隻jsp
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page language="java" contentType="text/html;charset=Big5" %>
<%
Connection con=null;
try
    {     
        Context initContext = new InitialContext();
        Context envContext  = (Context)initContext.lookup("java:/comp/env");
        DataSource ds = (DataSource)envContext.lookup("jdbc/db");
        con = ds.getConnection();
        
    
        if(!con.isClosed()){
            out.println("與db有連線!!\n");
        }
        
    
    }  
    catch(SQLException sqle)
    {
        out.println("sqle="+sqle);  
    }
    finally
    {
        con.close();
        con=null;
    }
%>

返回列表 回復 發帖