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