前言: WebLogic是一個性能卓越的J2EE服務(wù)器,在我國的使用者在快速增長.但現(xiàn)在有關(guān)它的中文資料基本沒有,更沒有介紹使用經(jīng)驗方面的。下面是本人在學(xué)習(xí)使用WebLogic6.0中得到的一些經(jīng)驗,寫出來與大家分享。 一、WebLogic6.0的安裝: WebLogic6.0自帶了JDK1.3,所以不用預(yù)先安裝JDK就可以直接安裝它,在WIN2000平臺是一個EXE文件,直接運(yùn)行它即可;在UNIX平臺上的安裝包是一個*.bin文件,用sh運(yùn)行它就可以了,最好是加 -i console的控制臺選項(如果不加,可能會報CLASSNOFOUND等錯誤)如下所示: sh weblogic60_sol.bin -i console的控制臺 注意: UNIX系統(tǒng)的TMP目錄(環(huán)境變量TMPDIR或TMP_DIR所指的路徑)應(yīng)有足夠的空間,因為WebLogic6.0安裝時先解壓文件到系統(tǒng)的TMP目錄下,然后再進(jìn)行安裝。如果TMP目錄空間不夠安裝會出錯,這時你可以把TMPDIR設(shè)到要足夠空間的目錄下。 如果用普通用戶安裝出錯,可試著用ROOT用戶安裝.一般是環(huán)境變量及權(quán)限的問題。 安裝軟件可到http://commerce.bea.com/downloads/products.jsp下載,聯(lián)機(jī)文檔可到http://edocs.bea.com/wls/docs61/index.html下載。 二、與ORACLE數(shù)據(jù)庫的連接: WebLogic6.0通過ORACLE客戶端訪問ORACLE,所以在WebLogic6.0所在的機(jī)器上要正確安裝ORACLE客戶端才行。WebLogic6.0對ORACLE提供TYPE2的JDBC DRIVER支持,是一些動態(tài)連接庫(NT 是.DLL,UNIX是.SO)文件,在$WL_HOME\bin下,以O(shè)CI開頭的幾個目錄中。具體采用哪個目錄下庫文件,與ORACLE SERVER端及CLIENT端的版本及ORACLE API的版本有關(guān),可參考WebLogic6.0的聯(lián)機(jī)文檔.要把這些庫所在的路徑加到系統(tǒng)的環(huán)境變量中,否則訪問數(shù)據(jù)庫時,WebLogic6.0會報以下錯誤: Java.sql.SQLException: System.loadLibrary threw java.lang.UnsatisfiedLinkError with the message ‘no WebLogicoci37 in java.library.path‘..... 在WIN2000中要加到PATH環(huán)境變量中,如: set PATH= D:\WebLogic6.0\wlserver6.0\bin\oci816_7;c:\ORANT816\bin;%PATH% 在NIX平臺,要到系統(tǒng)的LIBRARY PATH中,如在SUN上,要加到LD_LIBRARY_PATH環(huán)境變量中,方法如下: export LD_LIBRARY_PATH=/bea/weblogic6.0/oci816_8:$ORACLE_HOME/lib 在HP平臺上,要加到SHLIB_PATH環(huán)境變量中,如: export SHLIB_PATH=/bea/ weblogic6.0/lib/hpux11/oci816_8:$ORACLE_HOME/lib 三、在WebLogic6.0中設(shè)置資源的訪問權(quán)限 WebLogic6.0幾乎可以對它所管理的所有資源設(shè)置訪問控制表,包括EJB、JSP、SERVLET、POOL、JMS、RMI、JNDI、JDBC等等。當(dāng)用戶第一次訪問設(shè)置了訪問控制表的資源時,WebLogic6.0會彈出一個對話框要求輸入口令及密碼,如果連輸3次都不對,會返回以下錯誤: Error 401--Unauthorized xxx From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 10.4.2 401 Unauthorized 對訪問權(quán)限的設(shè)置有兩種方式: 在WebLogic6.O的控制臺中設(shè)置,把結(jié)果保存到fileRealm.properties中,即采用WebLogic6.0的file realm.感覺對DATABASE POOL,EJB等比較好用,對JSP,SERVER及某個目錄設(shè)置訪問控制表比較難。我試了很多次都沒成功。它可對WEB用戶(通過瀏覽器訪問)和普通用戶(通過JAVA客戶端等訪問)起作用。 在WEB.XML,WebLogic.XML中設(shè)置,只能對WEB用戶起作用。下面舉個例子說明這種方式。 如:在一個名為OrderWebApp的WEB APPLICATION中,客戶的定單文件都放到/orders目錄下,只有manager能瀏覽該目錄下的文件。其WEB.XML及WebLogic.XML可設(shè)置如下: *************************WEB.XML*************************
SecureOrdersEast Security constraint for resources in the orders directory /orders/* POST GET constraint for orders manager SSL not required NONE managers manager 說明:
中定義資源的訪問控制表。在中定義資源及其存取方式;在中定義可訪問該資源的角色;在 中定義WebLogic SERVER與CLIENT之間的開始通訊時,是否采用SSL建立連接。在中定義角色名。 *************************WebLogic.XML************************* manager peter bill 說明:在定義與WEB.XML中定義的角色所對應(yīng)的用戶。這些用戶必須已在WebLogic6.0的控制臺中定義才行。 當(dāng)在瀏覽器中輸入http://localhost:7001/OrderWebApp/orders/order100.html時,WebLogic6.0要求輸入用戶名及口令.只有peter,bill能夠訪問該文件. 我發(fā)現(xiàn):如果沒有在WebLogic.XML中設(shè)置,并在WebLogic6.O的控制臺中定義的用戶名與WEB.XML中中角色的名字一樣.則該用戶可以訪問受保護(hù)的資源.如果在在WebLogic.XML中設(shè)置了,則與中的角色名字一樣的用戶也不能訪問受保護(hù)的資源,只有在中定義的用戶才可以訪問受保護(hù)的資源. 四、JSP的設(shè)置及調(diào)試: 在WebLogic6.0中,JSP要放到一個WEB APPLICATION 中才能對它進(jìn)行訪問,對JSP的配置在WebLogic.XML中,如下所示: pageCheckSeconds 1 verbose true 比較重要的有pageCheckSeconds,設(shè)置WebLogic6.0每隔多長時間檢測一次JSP文件的內(nèi)容是否改變,并需要重新編譯,等于0,每次調(diào)用都重新編譯(一般用于調(diào)試環(huán)境中),等于-1從不重新編譯(一般用于運(yùn)行環(huán)境中).當(dāng)?shù)谝淮卧L問某個WEB APPLICATION下的一個JSP文件時,WebLogic6.0把它編譯成一個CLASS文件并放到相應(yīng)的目錄下: 如果是以目錄結(jié)構(gòu)形式發(fā)布的WEB APPLICATION,放到該WEB APPLICATION的 WEB-INF\_tmp_war_examplesServer_examplesServer_*目錄下。 如果該WEB APPLICATON是以一個WAR文件布置的,則放到: …\applications\.wl_temp_do_not_delete\WEB-INF\_tmp_war_examplesServer_examplesServer_*目錄下。 在調(diào)試JSP時,為了使每次總是訪問最新的頁面,除了設(shè)置pageCheckSeconds=0外,應(yīng)該讓IE不緩存該頁面.設(shè)置如下: 把/工具/INTERNET選項/常規(guī)/設(shè)置/的檢察所存頁面的較新版本,設(shè)為每次訪問該頁時都檢查。如果還是不能看到最新的頁面,可以到以上介紹的目錄下把與該JSP對應(yīng)的CLASS文件刪除,強(qiáng)制WebLogic6.0重編譯。 五、PASSWORD的管理: WebLogic6.0每次啟動時都會提示請輸入密碼,如果不想每次啟動時都輸入密碼,可創(chuàng)建一個PADDWORD.INI文件,并把密碼保存在該文件中即可。也可以用-Dpassword=PASSWORD 把密碼加到啟動腳本中。密碼可在WebLogic6.0的控制臺中的SECURITY中修改。 六、WebLogic 6.0控制臺的使用 WebLogic6.0的控制臺要在IE5.0以上的版本中才能啟動,如果IE設(shè)置了代理服務(wù)器,WebLogic6.0的控制臺有可能無法啟動,應(yīng)把代理服務(wù)器的設(shè)置去掉在/工具/INTERNET選項/連接/局域網(wǎng)設(shè)置中。在WebLogic6.0的控制臺能完成幾乎所有的配置,不象WebLogic5.1有時候要直接修改配置文件。 七、config.xml文件: 每次WebLogic6.0啟動成功,會自動把CONFIG.XML文件備份成CONFIG.XML.BOOTED(在相同的目錄下).如果CONFIG.XML中的內(nèi)容被改動,導(dǎo)致WebLogic6.0無法啟動成功,可用它覆蓋被破壞的CONFIG.XML.如果在CONFIG.XML中登記的資源(如某個EJB,WAR文件)被刪除,WebLogic6.0每次啟動都會給出錯誤提示,可手工把該EJB或WAR在CONFIG.XML中的登記項刪除,以后就不會提示。要注意經(jīng)常對該文件備份。 八、對默認(rèn)WEB APPLICATION的訪問: WEBLOGIG有一個默認(rèn)的WEB APPLICATION,如果某一個HTTP(HTTPS)請求,所指定的WEB APPLICATION都無法處理時,會自動讓DEFAULT APPLICATION 來處理,如果DEFAULT APPLICATION也處理不了,則報錯。如要訪問 HTTP://LOCALHOST:7001/MYWEB/MY.JSP。當(dāng)MYWEB中沒有MY.JSP.如果DEFAULT APPLICATION中有MY.JSP,則由它把結(jié)果返回給瀏覽器.默認(rèn)WEB APPLICATION就是APPLICATIONS下的DefaultWebApp_examplesServer,它只能是以目錄結(jié)構(gòu)形式布置,不能是一個WAR文件,如果把該目錄刪除,WebLogic6.0啟動時也會自動生成該目錄.訪問它時,不用加上該WEB APPLICATION的名字,加在反而會訪問不到.如在DefaultWebApp目錄下有一個TEST.JSP: HTTP://LOCALHOST:7001/TEST.JSP能訪問到該JSP,但HTTP://LOCALHOST:7001/DefaultWebApp_examplesServer/TEST.JSP訪問不到。 注意:訪問其他的WEB APPLICATION中的文件.要加上該WEB APPLICATION的名字才行。 九、配置CLUSTER應(yīng)注意的問題: 要設(shè)置網(wǎng)關(guān)配置CLUSTER時,每臺服務(wù)器都要配置默認(rèn)網(wǎng)關(guān),如果沒有配置,MANAGER SERVER會無法連接到ADMINISTRATOR SERVER上.在WIN2000中,可在控制面板中直接加,在UNIX下,用router add IP address設(shè)置,IP ADDRESS 可用該服務(wù)器的IP地址,并把最后一節(jié)改為1,如192.168.1.111可用192.168.1.1做默認(rèn)網(wǎng)關(guān)。UNIX下可用netstat -rn 查看系統(tǒng)的默認(rèn)網(wǎng)關(guān)。 WebLogic6.0以CLUSTER方式運(yùn)行,所采用包含CLUSTER許可的LICENSE才行. MulticastAddress不合法有效的MulticastAddress是從224.0.0.0 到 239.255.255.255. 可用WebLogic6.0帶的utils.MulticastTest 測試所用的MulticastAddress是不是正常.如: java utils.MulticastTest -N test -A 237.0.0.1 -N 指定一個名字標(biāo)識該進(jìn)程,可隨便起. -A 要測的IP地址 在一個CLUSTER中的WebLogic6.0 SERVER的版本要一致,監(jiān)聽的端口也要一樣. 最好不要在ADMINISTRATOR SEVER中布置任何的應(yīng)用,把應(yīng)用放大MANAGED SERVER上。 十、在WebLogic6.0在布置應(yīng)用: (1)WebLogic6.0中應(yīng)用可分三種,分別對應(yīng)不同的描述文件及擴(kuò)展名或目錄結(jié)構(gòu): *.JAR: 是EJB的壓縮包(有3個描述文件ejb-jar.xml,WebLogic6.0-ejb-jar.xml,WebLogic6.0-cmp-rdbms-jar.xml) *.WAR: 是只包含JSP和SERVLET的WEB APPLICATION壓縮包(有2個描述文件web.xml,webloigc.xml) *.EAR: 是包含EJB和WEB APPLICATION 的J2EE Enterprise Application壓縮包(有1 個描述文件,application.xml) 注意:它們不能混用,如WEB APPLICATOIN不能打包成.EAR文件。 (2)WebLogic6.0的應(yīng)用用兩種發(fā)布方式: 以目錄形式存放在WebLogic6.0的APPLICATIONS目錄下,適用于開發(fā)階段 以一個壓縮包形式存放在WebLogic6.0的APPLICATIONS目錄下,適用于運(yùn)行階段,可用JAR 打包,如D:\test>jar cf testwar.war * 把TEST目錄下的所有文件打包成一個testwar.war文件. (3)WebLogic6.0應(yīng)用的布置方式有2種 靜態(tài)布置:即把應(yīng)用在CONFIG.XML中登記,可通過WebLogic6.O的控制臺進(jìn)行添加,WebLogic6.0會自動把該應(yīng)用對應(yīng)的壓縮包拷到APPLICAITONS目錄下,如果對該應(yīng)用修改,需要重新布置才行。 動態(tài)布置:沒有在CONFIG.XML中登記,可直接把壓縮包或目錄拷到APPLICATIONS目錄下,WebLogic6.0會自動檢測到.WebLogic6.0每次啟動時會自動對APPLICATIONS目錄下沒有進(jìn)行靜態(tài)布置的應(yīng)用,進(jìn)行動態(tài)布置。 (4)一個例子: 如果一個應(yīng)用中有EJB,JSP,SERVLET,其布置步驟如下: 生成EJB的JAR文件,最好一個JAR文件對應(yīng)一個EJB 生成WEB APPLICATION的WAR文件,在WEB.XML,WebLogic.XML中登記,配置SERVLET,JSP等。 創(chuàng)建一個APPLICATION.XML文件,設(shè)置該應(yīng)用的屬性.把APPLICATION.XML,*.JAR, *.WAR,打包成一個*.EAR WebLogic6.O的控制臺中登記該應(yīng)用或把該EAR文件拷到APPLICAITON目錄下。到處就完成。 十一、WebLogic6.0 6.0中的CLASSPATH問題: WebLogic6.0 6.0中的CLASSPATH比5.1要簡單的多,下面對其做一個小結(jié): WebLogic6.0 6.0啟動所需的CLASSPATH只要如下設(shè)置就可以了 SET %WL_HOME%\lib\WebLogic6.0_sp.jar; %WL_HOME%\lib\WebLogic6.0.jar 如果要用到它帶的CLOUDSCAPE數(shù)據(jù)庫,則加上: %WL_HOME%\samples\eval\cloudscape\lib\cloudscape.jar EJB中引用的CLASS要在系統(tǒng)的CLASSPATH中,才能訪問到. 如果是一個WEB APPLICATOIN中的某個SERVLET,JSP引用了其他的CLASS,把他們放到該WEB APPLICATOIN的\WEB-INF\classes目錄下 WebLogic6.0可以訪問到。當(dāng)然,如果在系統(tǒng)的CLASSPATH中設(shè)置這些類的路徑,WebLogic6.0也可以訪問到.在調(diào)用時,WebLogic6.0會把WEB-INF/CLASSES/下的類都COPY到../applications/.wl_temp_do_not_delete/...../WEB-INF下,不管是打包的EAR,WAR文件還是沒打包的目錄方式。 如果一個WEB APPLICATION中的JSP中調(diào)用到EJB,即JSP是EJB的CLIENT,只要在該JSP中IMPORT一下就可以,如某個JSP調(diào)用到EJB: bbs.jar(他在包c(diǎn)om.test.bbs中),其IMPORT 格式如下: <%@ page import=" javax.naming.*, javax.ejb.*, java.rmi.RemoteException, java.rmi.Remote, java.util.*, java.sql.*, com.test.bbs.* "% > 當(dāng)然,該bbs.jar必須已正確布置. 當(dāng)該WEB APPLICATION是以WAR文件布置時,com.test.bbs.jar不用在系統(tǒng)的CLASSPATH或該WEB APPLICATION的WEB-INF/CLASSES中,該JSP能調(diào)用到。但如果一個WEB APPLICATION是以一個目錄的方式放在APPLICATIONS下時,該EJB中的類要在系統(tǒng)的CLASSPATH中才能訪問到.放到該WEB APPLICATION的WEB-INF/CLASSES/下,該JSP是訪問訪問不到這個EJB的。可以把bbs.jar加到系統(tǒng)的CLASSPATH中,如WebLogic6.0啟動時的CLASSPATH可如下設(shè)置: set CLASSPATH=.;.\lib\WebLogic6.0_sp.jar;.\lib\WebLogic6.0.jar;D:\WebLogic6.0\ wlserver6.0\config\examples\applications\ bbs.jar 也可以把bbsHome.class.bbsBean.class,bbs.class拷貝到系統(tǒng)的CLASSPATH指定的某一路徑下,如WebLogic6.0啟動的CLASSPATH如下: CLASSPATH=.;.\lib\WebLogic6.0_sp.jar;.\lib\WebLogic6.0.jar;D:\WebLogic6.0\wlserver6.0\config\examples\serverclasses 可以以上3個文件拷到D:\WebLogic6.0\wlserver6.0\config\examples\serverclasses,該JSP也能訪問到。如果把bbs.jar放到系統(tǒng)得CLASSPATH下,改EJB是無法動態(tài)更新的。動態(tài)更新時會拋異常。 如果一個 APPLICATION中的JSP中調(diào)用到EJB,CLASSPATH,設(shè)置同上.如果該 APPLICATION中的EJB中引用的其他的CLASS,則這些CLASS要在系統(tǒng)的 CLASSPATH中,才能訪問到.
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。