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