| 元件 | 版本 | 備註 |
|---|---|---|
| JDK | 1.4+ | 建議 1.5.0_22 |
| Eclipse | 3.2 | 含 WTP/MyEclipse 插件支援 JSP 編輯 |
| Tomcat | 5.5.17 | 含 admin 管理控制台 |
| Oracle | 9i (9.2.0.x) | 建立測試用戶/表空間/測試表 |
JAVA_HOME、PATH、CLASSPATH 系統變數NBZJULUHAO/11111 (SYSDBA)LUHAOUSER_INF (USER_ID, USER_NAME, USER_TEL),插入測試資料apache-tomcat-5.5.17.zip 解壓至 D:\Tomcat5.5apache-tomcat-5.5.17-admin.zip 解壓合併至上述目錄(獲得圖形化管理介面)tomcatPluginV31.zip,將 plugins 目錄下檔案複製至 eclipse\pluginsTOMCAT_HOME=D:\Tomcat5.5tomcat-users.xml 新增管理員:
<user username="luhao" password="12345" roles="admin,manager"/>
server.xml 修改連接埠避開 Oracle 衝突:
<Connector port="8008" ... /> <!-- 原 8080 被 Oracle 佔用 -->
Window > Preferences > Tomcat
D:\Tomcat5.5https://localhost:8008/manager,帳號 luhao/12345%ORACLE_HOME%\ora90\jdbc\lib\classes12.jar → %TOMCAT_HOME%\common\lib\https://localhost:8008/admin,以 luhao/12345 登入jdbc/Oraclejdbc:oracle:thin:@localhost:1521:NBZJUoracle.jdbc.driver.OracleDriverluhao / Password: 11111server.xml 會自動生成 <Resource> 定義context.xml 加入資源連結:
<ResourceLink global="jdbc/Oracle" name="jdbc/Oracle" type="javax.sql.DataSource"/>
quickstartserver.xml 自動新增 <Context path="/quickstart" docBase="..."/>index.jsp 測試頁(需 WTP/MyEclipse 支援):<%@ page contentType="text/html; charset=gb2312" import="javax.naming.*,javax.sql.*,java.sql.*" %>
<html><head><title>Oracle JDBC Test</title></head><body>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/Oracle");
if (ds != null) {
out.println("已獲得 DataSource: " + ds + "<br>");
conn = ds.getConnection();
if (conn != null) {
out.println("建立連線成功!<br>");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM LUHAO.USER_INF");
out.println("<table border=1><tr><th>ID</th><th>Name</th><th>Tel</th></tr>");
while (rs.next()) {
out.println("<tr><td>" + rs.getString(1) + "</td><td>" + rs.getString(2) + "</td><td>" + rs.getString(3) + "</td></tr>");
}
out.println("</table>");
}
}
} catch (Exception e) {
out.println("錯誤: " + e.toString());
e.printStackTrace();
} finally {
try { if (rs != null) rs.close(); } catch (Exception ignored) {}
try { if (stmt != null) stmt.close(); } catch (Exception ignored) {}
try { if (conn != null) conn.close(); } catch (Exception ignored) {}
}
%>
</body></html>
SQLPLUS /NOLOG → CONN LUHAO/11111 AS SYSDBA → STARTUPhttps://localhost:8008/quickstart/USER_INF 表格資料若不想修改 Tomcat 全域設定,可在專案 META-INF/context.xml 定義:
<Context>
<Resource name="jdbc/Oracle" auth="Container" type="javax.sql.DataSource"
maxActive="4" maxIdle="2" maxWait="5000"
username="luhao" password="11111"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:NBZJU"/>
</Context>
此法隔離性更好,適合多專案共用 Tomcat 但資料源不同的場景。
ClassNotFoundException 或 Invalid column typejava:comp/env/ 前綴漏寫:JNDI 查找名稱必須完整LSNRCTL STATUS 及 STARTUP