2011年11月7日 星期一

【Java Web】JNDI 配置

本篇介紹如何運用 JNDI 的方式來存取資料庫資源

以下以 Tomcat 5.5 為環境 資料庫為 MySQL

首先需要在你的 Tomcat 5.5 的目錄下,例如以下

C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml

將 server.xml 開啟並加入以下的 Resource 資源訊息
 ((記得放在 GlobalNamingResources 的標籤當中


<Resource name="jdbc/mxsql/datasource"
      factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
      type="javax.sql.DataSource"
      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://{Your ip}:1400;DatabaseName={Your db name}"
      username="test"         
      password="test"
      maxIdle="2"
      maxWait="1000"              
      maxActive="4"
              />



接下來在你的 Java Web 專案裡的 WebRoot 資料夾下的 META-INF 裡


建立一個 context.xml 的檔案


<?xml version="1.0" encoding="UTF-8"?>
<!-- DEMO_JNDI is your dynamic web project’s Context  -->
<Context antiJARLocking="true" path="/DEMO_JNDI">
<Resource name="jdbc/test"
          auth="Container"
          type="javax.sql.DataSource"      driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"    url="jdbc:sqlserver://{Your ip};DatabaseName={Your db name}"
         username="test"           
         password="test"
          maxIdle="10"
         maxWait="1000"             
         maxActive="100"
              />
</Context>


接著記得在你的 web 專案加入 Mysql 的 JDBC library
((EX: mysql-connector-java-5.1.18-bin.jar

並且你的 Tomcat 下的 common\lib 以及 server\lib 也要

接著就可以用以下程式來試試看 JNDI 是否有配置成功了

Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:comp/env");
DataSource datasource = (DataSource)envContext.lookup("jdbc/test");
Connection conn = datasource.getConnection();

注意這裡的 jdbc/test 必須是你再 tomcat 的 server.xml 和 web 專案裡的context.xml
中的 Resource 標籤中的 name 屬性一致

沒有留言:

張貼留言