基于 Weblogic 7.0 的應(yīng)用開發(fā)(二) 二.Web的應(yīng)用 本文將著重講述在WebLogic7中創(chuàng)建和部署一個(gè)Web Application 的的過程。 使用什么樣的工具?這是一個(gè)許多人關(guān)心的問題,特別是對于初學(xué)者,更是希望依靠強(qiáng)大的IDE,加快自己的學(xué)習(xí)進(jìn)程。然而,結(jié)果卻往往相反。因?yàn),IDE將許多基本的東西封裝在底層自動完成,對于用戶而言是透明的。如果你是一個(gè)對J2EE結(jié)構(gòu)非常了解的程序員,IDE可以大幅提高你的效率;如果你是初學(xué)者,IDE對你隱瞞了許多細(xì)節(jié)問題。 因此,我在這里使用標(biāo)準(zhǔn)的JDK/寫字板的文本格式進(jìn)行講述。并且,這里不會對Servlet/JSP的語法細(xì)節(jié),進(jìn)行過多描述。
1.環(huán)境設(shè)置 安裝JDK For Windows,安裝包可從Sun的網(wǎng)站上免費(fèi)下載(http://java.sun.com/),也可直接使用WebLogic 中的JDK,對系統(tǒng)環(huán)境變量設(shè)置如下: Path= [weblogic_home]\ jdk131_03 \bin Classpath=[weblogic_home]\ jdk131_03 \lib;[weblogic_home]\lib\weblogic.jar 要是系統(tǒng)變量生效,需要重新啟動計(jì)算機(jī);
2.Web Application的目錄結(jié)構(gòu) DefaultWebApp ------+/WEB-INF/(required) | | | |----+/classes/(option) | ||----------*.class | | | |----+/lib/(option) | ||----------*.jar | | | +---web.xml(required) | +---weblogic.xml(option) | |-----*.html |-----*.jsp |-----其他資源,如圖片等。
注:一個(gè) Web Application 至少要包含一個(gè)頁面,包括jsp 或 html 或 servlet 對于注有required的項(xiàng)是一個(gè)Web Application 不可缺少的,必須存在的,如WEB-INF目錄,web.xml。
3.打包 將所有程序中使用到的JavaBeans和Servelets編譯成.class文件,連同編譯生成的目錄一起拷貝到WEB-INF\classes\下。 在Dos下,進(jìn)入Application 根目錄,使用jar打包命令,即將當(dāng)前目下所有文件以及目錄打包成webapp_name.war文件。 如:jar cvf webapp_name.war *(其它jar命令的參數(shù),這里不做過多介紹) 注:不要在目錄外邊執(zhí)行,這樣將導(dǎo)致將外面的目錄也打包進(jìn)去,發(fā)布會失敗。
4.部署 部署war主要有三種方法, 1)使用Console 使用方法:在瀏覽器中打開http://[host]:[port]/console,在左邊的樹中找到Web Applications節(jié)點(diǎn), 點(diǎn)擊 Configure a new Web Application,通過界面將打包好的webapp_name.war UPLOAD到Weblogic能找到的地方。 點(diǎn)擊[select],然后選擇一個(gè)Available Server 添加到Target Servers中,輸入系統(tǒng)的名稱(用于訪問),Configure And Deploy。 等待,直到Status中變成Completed。就OK! 2)直接拷貝 使用方法:將啟動腳本中的STARTMODE 置為 false,使其處于Development Mode。然后,直接將.war文件拷貝到[當(dāng)前Domain]/applications/下,系統(tǒng)會自動部署到當(dāng)前的server上。此時(shí)如果系統(tǒng)沒有報(bào)錯(cuò),即為部署成功! 3)使用weblogic.deploy類 具體方法可以使用 java weblogic.deploy -help 參考系統(tǒng)提示。
推薦使用,Console或直接拷貝,非常容易上手,3)方法,由于參數(shù)復(fù)雜,我個(gè)人認(rèn)為適用于非Win32系統(tǒng)。
5.調(diào)用 直接在瀏覽器中輸入http://[host]:[port]/webappname即可。
6.補(bǔ)充說明: 上述過程身略了描述文件的編制過程,對于初學(xué)者來說,完全了解web.xml和weblogic.xml是有一定困難的。這里將使用Weblogic 7.0的一個(gè)新特性,Weblogic Builder。 這里提供了一個(gè)簡單的步驟: 首先,編寫一個(gè)最為簡單的web.xml文件。
<!--web.xml--> <?xml version="1.0" ?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app>
注意:這是最為省略的了,不能再對它進(jìn)行修改,而且這也是不可缺少的文件,否則Weblogic Builder將無法打開你想要修改的壓縮包。 然后,按照上述步驟生成一個(gè).war文件。 最后,使用Weblogic Builder打開這個(gè).war文件。通過圖形界面修改部署描述信息,系統(tǒng)將自動生成相應(yīng)的weblogic.xml,同時(shí)修改web.xml。 這里可以完成一個(gè)Web Application的所有部署的描述信息,前提是你對這些選項(xiàng)有一定的認(rèn)識。 保存,選擇菜單Tools/Options,設(shè)置需要連接的Host/Server/username/password;選擇菜單Tools/Connect to Server,Tools/Deploy,系統(tǒng)部署輕松完成。
另外,對于jsp的語法校驗(yàn)問題一直一個(gè)困擾著我們,有一個(gè)辦法,在不發(fā)布的情況下校驗(yàn)jsp語法。那就是java weblogic.jspc jsp_name.jsp 。 具體參數(shù)使用java weblogic.jspc 察看。
7.附錄: 前面也許很多人會問,為什么我把我的class拷貝到了classes的目錄里面并且啟動了WebLogic的服務(wù),怎么我的Servlet還是找不到?這里我們簡單得講一下如何在WebLogic中添加一個(gè)Servlet; 在WebLogic啟動之后,首先測試在DefaultWebApp目錄是否已經(jīng)準(zhǔn)備好: http://localhost:7001/index.html 在%weblogic%/\config\examples目錄下面運(yùn)行setExamplesEnv.cmd,編譯HelloWorld.java得到一個(gè)HelloWorld.class文件。 javac -d %OUT_DIR % HelloWorld.java 將HelloWorld.class拷貝到DefaultWebApp的目錄下面,在本機(jī)中的目錄為E:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp。然后打開WebLogic的控制臺: http://127.0.0.1:7001/console
方法一: 點(diǎn)擊Deployments---Web Applications ---- DefaultWebApp,然后點(diǎn)擊Edit Web Application Descriptor...,點(diǎn)擊Servlets 并且Configure a new Servlet…,輸入 Servlet Name: HelloWorld Servlet Class:HelloWorld 點(diǎn)擊create來產(chǎn)生這個(gè)新的servlet,然后點(diǎn)擊Apply來應(yīng)用該servlet。 點(diǎn)擊Servlet Mappings ---- Configure a new ServletMapping…,輸入 Servlet: HelloWorld URL Pattern: /HelloWorld/* 點(diǎn)擊create來產(chǎn)生這個(gè)新的servlet,然后點(diǎn)擊Apply來應(yīng)用該servlet。重新啟動WebLogic服務(wù)器。(為什么我安照這樣的操作,可是WebLogic重新啟動后,Servlet又沒有了?)
方法二: 修改該下面的WEB-INF目錄中的web.xml文件,輸入 <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld/*</url-pattern> </servlet-mapping> 重新啟動WebLogic服務(wù)器。Servlet安裝成功!
備注: 如果你配置了“動態(tài)Applications”,你不用重新啟動WebLogic,只要將class文件拷貝到相應(yīng)的目錄中就能直接得到修改后的結(jié)果。關(guān)于配置的參考網(wǎng)址: http://e-docs.bea.com/wls/docs70/adminguide/appman.html 當(dāng)“auto-deployment”被選中的情況下,WebLogic的“Deploying Applications”會在每三秒的情況下察看/application目錄下面的變化。
8.問題: 如果不這樣做,可以使用以目錄的形式發(fā)布。其實(shí),對于服務(wù)器來說,一個(gè)目錄和.war文件,都是一回事。但是從一個(gè)另外一個(gè)角度來說,其用途不同。 對于開發(fā)階段,以目錄形式發(fā)布,便于調(diào)試和更新程序,但是不以管理,安全性差。 對于一個(gè)成型的產(chǎn)品,最好是打包,因?yàn)楫a(chǎn)品是要交給用戶管理的,對于相對素質(zhì)較差的用戶,開放的目錄太危險(xiǎn),也不易管理。 同時(shí)需要指出,啟動方式也是一個(gè)問題。對于交給用戶的產(chǎn)品而言,運(yùn)行在development模式下,支持熱發(fā)布,是不明智的。
|