Eclipse3.2+Tomcat5.5.17+Oracle9配置
Eclipse3.2+Tomcat5.5.17+Oracle9配置
Java的Web開發(fā)環(huán)境布置向來很煩瑣,近來整合下配置Eclipse3.2+Tomcat5.5.17+Oracle9i環(huán)境又累了N小時(shí),這可不得不怪B/S結(jié)構(gòu)的“苦了開發(fā)者,方便千萬用戶”舍己為人精神,以及各種工具版本紛雜帶來的不便與不少不負(fù)責(zé)任網(wǎng)友的胡亂指引。下面小弟把自己的成功經(jīng)驗(yàn)向大家匯報(bào),希望有需要的友人能少走彎路。具體步驟如下:
1.安裝Java開發(fā)環(huán)境Eclipse3.2,安裝Oracle9i數(shù)據(jù)庫
首先安裝SUN的JDK1.4以上版本的Java基礎(chǔ)開發(fā)環(huán)境,配置Java系統(tǒng)變量(這個(gè)太基礎(chǔ),不具體展開了)。接著下載解壓安裝Eclipse3.2開發(fā)環(huán)境,根據(jù)個(gè)人需要安裝語言包、MyEclipse等插件擴(kuò)充功能(也可以先不安裝)。
安裝Oracle9i數(shù)據(jù)庫,創(chuàng)建測(cè)試數(shù)據(jù)庫:NBZJU與DBA:LUHAO/11111,建立表空間:LUHAO和測(cè)試表:USER_INF。其中USER_INF表具有USER_ID、USER_NAME、USER_TEL字段屬性,并添如若干測(cè)試記錄。
2.安裝Tomcat及其插件
下載并解壓Tomcat啟動(dòng)插件tomcatPluginV31.zip,將其下目錄文件拷入eclipseplugins目錄下(這步若成功執(zhí)行,eclipse運(yùn)行后將發(fā)現(xiàn)多了Tomcat菜單項(xiàng)及其啟動(dòng)、停止、重啟等快捷按鈕。若看不到,可能通過刪除eclipseconfiguration目錄下除config.ini外所有文件,再重啟eclipse來解決)。
下載Tomcat標(biāo)準(zhǔn)程序apache-tomcat-5.5.17.zip和admin控制臺(tái)程序apache-tomcat-5.5.17-admin.zip(將后者解壓入前者的解壓目錄下可以獲得登陸admin圖形管理界面的功能,這將方便后面的數(shù)據(jù)源配置,不用直接在server.xml中自己輸入?yún)?shù),即通過圖形界面配置生成相應(yīng)的標(biāo)準(zhǔn)XML參數(shù)。否則手動(dòng)輸入?yún)⒖紒淼呐渲萌菀壮鲥e(cuò),因?yàn)椴煌姹総omcat的XML標(biāo)記語法解析不同,例如5.1版的參數(shù)放入5.5版是無效的。因此,強(qiáng)烈建議用圖形界面配置數(shù)據(jù)源?。?/p>
配置系統(tǒng)變量“TOMCAT_HOME”,其值為關(guān)聯(lián)到apache-tomcat-5.5.17目錄的路徑。打開apache-tomcat-5.5.17conftomcat-users.xml文件,在<tomcat-users></tomcat-users>標(biāo)記元素中加入:<user username="luhao" password="12345" roles="admin,manager"/>,即加入角色身份為admin和manager的管理員luhao,我們之后需要以manager角色上傳Web應(yīng)用程序和以admin角色配置數(shù)據(jù)員。再打開apache-tomcat-5.5.17conf目錄下server.xml文件,將<Connector元素后port="8080"的屬性改為port="8008"(注意:由于oracle已占用了Tomcat默認(rèn)的8080訪問端口,必須更改其它未被占用的空閑端口,此處假設(shè)為8008)。
接下來運(yùn)行eclipse程序,配置Tomcat屬性。打開菜單“窗口/首選項(xiàng)”,打開“Java/已安裝的JRE”選項(xiàng),將運(yùn)行環(huán)境參數(shù)位置定位于JDK目錄下的JRE目錄。打開“Tomcat”選項(xiàng),Tomcat Version選擇5.x,Tomcat Home定位到apache-tomcat-5.5.17目錄,其余默認(rèn)關(guān)聯(lián)即可。打開“Tomcat/JVM Settings”和“Tomcat/Source Path”選項(xiàng),JRE選擇剛配置的已安裝的JRE,Automatcially compute source path打勾。再打開“Tomcat Manager App”選項(xiàng),url輸入http://localhost:8008/manager,username和password填Tomcat中新加入的luhao和12345(這步可以保證將Web應(yīng)用程序發(fā)布到Tomcat,項(xiàng)目Reload也不會(huì)出錯(cuò))。
3.獲取Oracle9i相應(yīng)的JDBC驅(qū)動(dòng)程序,配置Data Sources和Context
拷貝Oracle9i安裝目錄下ora90/jdbc/lib/classes12.jar驅(qū)動(dòng)文件到Tomcat目錄下common/lib公共文件夾下。
然后在eclipse中啟動(dòng)Tomcat(點(diǎn)擊那個(gè)貓的圖標(biāo)即可),以luhao/12345身份登陸http://localhost:8008/admin后新建數(shù)據(jù)源。其中JNDI Name:jdbc/Oracle(此數(shù)據(jù)源JNDI名字可以隨意取,但不可重復(fù)),Data Source URL:jdbc:oracle:thin:@localhost:1521:NBZJU(1521為Oracle訪問端口,NBZJU為要訪問的數(shù)據(jù)庫名稱),JDBC Driver Class:oracle.jdbc.driver.OracleDriver(可打開classes12.jar文件查看到相應(yīng)的路徑,否則驅(qū)動(dòng)有誤),Username:luhao和Password:11111(填NBZJU數(shù)據(jù)庫有訪問權(quán)限的用戶即可),其余選項(xiàng)默認(rèn)即可。數(shù)據(jù)源保存及遞交后,conf目錄下server.xml文件的全局命名資源GlobalNamingResources元素內(nèi)將多一項(xiàng)Resource屬性:
<Resource
name="jdbc/Oracle"
type="javax.sql.DataSource"
password="11111"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="2"
maxWait="5000"
username="luhao"
url="jdbc:oracle:thin:@localhost:1521:NBZJU"
maxActive="4"/>
數(shù)據(jù)源配置完成后,還須配置相關(guān)的上下文信息context,來使程序獲得JDNI初始化引用,從而定位數(shù)據(jù)源。由于之前定義的是全局資源,我們可在apache-tomcat-5.5.17confcontext.xml文件中的Context元素中加入關(guān)聯(lián)屬性:
<ResourceLink global="jdbc/Oracle" name="jdbc/Oracle" type="javax.sql.DataSource"/>
4.創(chuàng)建測(cè)試Web程序
運(yùn)行eclipse,新建一個(gè)Tomcat項(xiàng)目到任意的當(dāng)前工作空間,此處項(xiàng)目取名quickstart。當(dāng)項(xiàng)目一經(jīng)創(chuàng)建,我們就可以發(fā)現(xiàn)apache-tomcat-5.5.17conf目錄下server.xml文件的Host元素內(nèi)自動(dòng)增加了以下屬性內(nèi)容(用來關(guān)聯(lián)發(fā)布Web應(yīng)用程序的工作目錄):
<Host
appBase="webapps"
name="localhost"><Context path="/quickstart" reloadable="true" docBase="E:luhaoworkspacequickstart" workDir="E:luhaoworkspacequickstartwork" />
</Host>
新建JSP測(cè)試頁面index.jsp到quickstart工程目錄下(JSP頁面編輯需要有支持Web開發(fā)功能的eclipse插件支持,如MyEclipse、WTP等插件),代碼如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html><head><title>Oracle JDBC Test</title></head>
<body>
<%
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
ResultSetMetaData md=null;
try{
Context initCtx=new InitialContext();
//獲得JNDI初始化上下文信息,即獲取目錄上下文的引用
DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/Oracle");
//定位數(shù)據(jù)源jdbc/Oracle
if(ds!=null){
out.println("已經(jīng)獲得DataSource");
out.println(ds.toString());
conn=ds.getConnection();
if(conn!=null){
out.println("create connection sucess!");
stmt=conn.createStatement();
out.println("createStatement Success!");
rs=stmt.executeQuery("select * from LUHAO.USER_INF");
md=rs.getMetaData();
out.println("<table border=1>");
out.println("<tr>");
for(int i=0;i<md.getColumnCount();i++){
out.println("<td>"+md.getColumnName(i+1)+"</td>");
}
while(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString(1)+"</td>");
out.println("<td>"+rs.getString(2)+"</td>");
out.println("<td>"+rs.getString(3)+"</td>");
out.println("<td>");
}
out.println("</table>");
conn.close();
}
}
}catch(Exception e){
out.println(e.toString());
System.out.println(e.toString());
}
%>
</body>
</html>
5.啟動(dòng)數(shù)據(jù)庫,運(yùn)行測(cè)試程序
運(yùn)行測(cè)試頁面前必須先啟動(dòng)后臺(tái)數(shù)據(jù)庫。辦法是打開Oracle SQL Plus,用DBA身份連接入NBZJU數(shù)據(jù)庫:conn luhao/11111 as sysdba,再用命令:startup完成啟動(dòng)數(shù)據(jù)庫(shutdown可以關(guān)閉數(shù)據(jù)庫)。
保存工程,啟動(dòng)Tomcat,打開http://localhost:8008/quickstart/頁面。若能看到各種連接成功的消息及完整的USER_INF測(cè)試表內(nèi)容,那么表明整個(gè)Web測(cè)試程序運(yùn)行成功了!
總結(jié):
實(shí)際的整合配置過程,除上述全局化配置方法可行外,還可以采用局部化配置方法(某些版本Tomcat可能行不通)。局部化配置方法較全局化配置方法區(qū)別僅在于將數(shù)據(jù)源jdbc/Oracle的Resource屬性內(nèi)容加入工程所在quickstart目錄下的META-INFcontext.xml文件的Context元素中去,而不用改變Tomcat目錄的conf子目錄下的server.xml和context.xml文件。
?