明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

基于 Weblogic 7.0 的應(yīng)用開發(fā)(二)

[摘要]基于 Weblogic 7.0 的應(yīng)用開發(fā)(二)二.Web的應(yīng)用本文將著重講述在WebLogic7中創(chuàng)建和部署一個Web Application 的的過程。使用什么樣的工具?這是一個許多人關(guān)心的問題...
基于 Weblogic 7.0 的應(yīng)用開發(fā)(二)
二.Web的應(yīng)用
本文將著重講述在WebLogic7中創(chuàng)建和部署一個Web Application 的的過程。
使用什么樣的工具?這是一個許多人關(guān)心的問題,特別是對于初學(xué)者,更是希望依靠強大的IDE,加快自己的學(xué)習(xí)進程。然而,結(jié)果卻往往相反。因為,IDE將許多基本的東西封裝在底層自動完成,對于用戶而言是透明的。如果你是一個對J2EE結(jié)構(gòu)非常了解的程序員,IDE可以大幅提高你的效率;如果你是初學(xué)者,IDE對你隱瞞了許多細(xì)節(jié)問題。
因此,我在這里使用標(biāo)準(zhǔn)的JDK/寫字板的文本格式進行講述。并且,這里不會對Servlet/JSP的語法細(xì)節(jié),進行過多描述。

1.環(huán)境設(shè)置
安裝JDK For Windows,安裝包可從Sun的網(wǎng)站上免費下載(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)變量生效,需要重新啟動計算機;

2.Web Application的目錄結(jié)構(gòu)
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打包命令,即將當(dāng)前目下所有文件以及目錄打包成webapp_name.war文件。
如:jar cvf webapp_name.war *(其它jar命令的參數(shù),這里不做過多介紹)
注:不要在目錄外邊執(zhí)行,這樣將導(dǎo)致將外面的目錄也打包進去,發(fā)布會失敗。

4.部署
部署war主要有三種方法,
1)使用Console
 使用方法:在瀏覽器中打開http://[host]:[port]/console,在左邊的樹中找到Web Applications節(jié)點,
 點擊 Configure a new Web Application,通過界面將打包好的webapp_name.war UPLOAD到Weblogic能找到的地方。
點擊[select],然后選擇一個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上。此時如果系統(tǒng)沒有報錯,即為部署成功!
3)使用weblogic.deploy類
具體方法可以使用 java weblogic.deploy -help 參考系統(tǒng)提示。

推薦使用,Console或直接拷貝,非常容易上手,3)方法,由于參數(shù)復(fù)雜,我個人認(rèn)為適用于非Win32系統(tǒng)。

5.調(diào)用
直接在瀏覽器中輸入http://[host]:[port]/webappname即可。


6.補充說明:
上述過程身略了描述文件的編制過程,對于初學(xué)者來說,完全了解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文件。通過圖形界面修改部署描述信息,系統(tǒng)將自動生成相應(yīng)的weblogic.xml,同時修改web.xml。
這里可以完成一個Web Application的所有部署的描述信息,前提是你對這些選項有一定的認(rèn)識。
保存,選擇菜單Tools/Options,設(shè)置需要連接的Host/Server/username/password;選擇菜單Tools/Connect to Server,Tools/Deploy,系統(tǒng)部署輕松完成。

另外,對于jsp的語法校驗問題一直一個困擾著我們,有一個辦法,在不發(fā)布的情況下校驗jsp語法。那就是java weblogic.jspc jsp_name.jsp 。
具體參數(shù)使用java weblogic.jspc 察看。

7.附錄:
前面也許很多人會問,為什么我把我的class拷貝到了classes的目錄里面并且啟動了WebLogic的服務(wù),怎么我的Servlet還是找不到?這里我們簡單得講一下如何在WebLogic中添加一個Servlet;
在WebLogic啟動之后,首先測試在DefaultWebApp目錄是否已經(jīng)準(zhǔn)備好:
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來產(chǎn)生這個新的servlet,然后點擊Apply來應(yīng)用該servlet。
點擊Servlet Mappings ---- Configure a new ServletMapping…,輸入
Servlet: HelloWorld
URL Pattern: /HelloWorld/*
點擊create來產(chǎn)生這個新的servlet,然后點擊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ā)布。其實,對于服務(wù)器來說,一個目錄和.war文件,都是一回事。但是從一個另外一個角度來說,其用途不同。
對于開發(fā)階段,以目錄形式發(fā)布,便于調(diào)試和更新程序,但是不以管理,安全性差。
對于一個成型的產(chǎn)品,最好是打包,因為產(chǎn)品是要交給用戶管理的,對于相對素質(zhì)較差的用戶,開放的目錄太危險,也不易管理。
同時需要指出,啟動方式也是一個問題。對于交給用戶的產(chǎn)品而言,運行在development模式下,支持熱發(fā)布,是不明智的。