2012年2月4日 星期六

心得 Tomcat 設定 JNDI connection pool to OracleDB

要在Tomcat 下利用JNDI 來連結資料庫,可以參考[1]的步驟。

安裝測試環境以Tomcat 5.5為例。

簡單摘要幾個重點

1) 先下載 Oracle JDBC Driver,要先登入Oracle的會員才能下載。
2) 下載完得jar檔(如 classes12.jar)要放在 Apache 環境下 common\lib\ 下
3) 在/conf 下設定 context.xml, 加入如下面的code

<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:mysid" username="scott" password="tiger" maxActive="20" maxIdle="10" maxWait="-1"/>


4)在 web.xml 下新增以下的敘述
<resource-ref> <description>Oracle Datasource example</description> <res-ref-name>jdbc/myoracle</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

5) 可以建一個jsp 插入下面的程式碼 ... 
 <%@page import="java.util.*, javax.naming.*, java.sql.*, javax.sql.*"%>
... 
 Context initContext = new InitialContext(); 
Context envContext = (Context)initContext.lookup("java:/comp/env"); 
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle"); 
Connection conn = ds.getConnection(); 
 String sql = ""; ResultSet rs = null;  
Use db sql = "SELECT * FROM TABLE"; 
 rs = smt.executeQuery(sql); 
 while(rs.next()) { 
 out.println(rs.getString("ID"));
 out.println(rs.getString()); 
 out.println(""); 
 }
 con.close();



補充 在eclipse 下 產生 Name jdbc is not bound in this Context 解決方式:

主要參考[2] 的作法 把 context.xml 複製到 META-INF下,在 WEB-INF下的web.xml 也加入4)的程式碼。



參考:
[1]: Apache Tomcat 6.0, JNDI Datasource HOW-TO
[2]: exception - name jdbc is not bound in this context, http://www.coderanch.com

沒有留言: