大家可能都有體會(huì),在weblogic上部署了應(yīng)用以后。訪問的時(shí)候都要敲上一堆url。最典型的就是如下:http;//localhost:7001/webapp/……等等,這個(gè)在我們的自己的開發(fā)環(huán)境上倒是可以勉強(qiáng)接受,可是在真正的網(wǎng)站發(fā)布的時(shí)候,到了用戶那里,人家可不愿意在域名后面敲上難記的端口再加上一堆路徑。而且,當(dāng)weblogic上面部署了幾個(gè)不同的應(yīng)用的時(shí)候,人家該怎么通過不同的域名來(lái)訪問我的站點(diǎn)呢?這些就是我們接下來(lái)要解決的問題。
讓我們以XX政府電子政務(wù)項(xiàng)目中的一個(gè)解決辦法作為例子吧。首先交代一下環(huán)境:數(shù)據(jù)庫(kù)用的是是oracle。Web應(yīng)用是部署在weblogic上面的,其中有兩個(gè)web應(yīng)用是要通過域名讓外界訪問的,一個(gè)是外網(wǎng)門戶網(wǎng)站,web應(yīng)用中名字簡(jiǎn)稱為WWMH。一個(gè)是內(nèi)網(wǎng)門戶網(wǎng)站,web應(yīng)用中的名字簡(jiǎn)稱為NWMH。假設(shè)這兩個(gè)應(yīng)用是處于同一個(gè)目錄中的,他們的文件夾就是他們web應(yīng)用的名稱,兩個(gè)域名分別是www.xxxx.gov.cn和inner.xxxx.gov.cn。
我們先看看域名訪問的大體過程:
比如外部某個(gè)機(jī)器輸入域名訪問www.xxxx.gov.cn,這個(gè)域名會(huì)被解析成為ip地址以及一些請(qǐng)求的主機(jī)信息,這樣找到DNS服務(wù)器。再通過DNS所設(shè)的ip指向weblogic所在主機(jī),這樣就可以訪問到外網(wǎng)的應(yīng)用,具體詳細(xì)的DNS原理請(qǐng)參見其他資料。
外網(wǎng)幾個(gè)關(guān)鍵配置如下:在這里的前提條件是你的web應(yīng)用已經(jīng)部署上了。首先要把mydomain->Servers->myservers中的list port端口改為80,默認(rèn)的是7001。這樣你通過域名訪問的時(shí)候就不需要敲入端口,因?yàn)槟J(rèn)的就是80。然而僅僅這樣還是不夠的,此時(shí)如果你通過域名訪問的時(shí)候,在域名后面還得跟上WWMH的文件夾路徑,否則訪問不到。我們現(xiàn)在所要設(shè)置的是context root的路徑。把WWMH的文件夾去掉,取而代之的是 ”/”,這樣你默認(rèn)的路徑就是根目錄了,做法是找到weblogic.xml文件,加上/,重起服務(wù),這樣通過域名就可以訪問了。
如果僅僅是部署了一個(gè)應(yīng)用,通過這樣的配置訪問當(dāng)然沒有問題。可是,一個(gè)weblogic上會(huì)部署多個(gè)應(yīng)用。需要通過不同的域名來(lái)訪問,此時(shí),該怎么辦?比如說這里的內(nèi)網(wǎng),在外網(wǎng)已經(jīng)配置好的情況下,又不忍心去改動(dòng)以前配置好的成果。特別是前面的開發(fā)人員已經(jīng)配置好的情況下。我們想到了weblogic自身的一個(gè)功能,那就是設(shè)置虛擬主機(jī)。它的思想就是,把內(nèi)網(wǎng)的應(yīng)用模擬成另外一個(gè)域名,通過這個(gè)域名來(lái)達(dá)到訪問內(nèi)網(wǎng)的目的。
具體的配置如下:在weblogic的console的左邊導(dǎo)航欄,中選擇mydomain ->Services-> VirtualHosts,然后在右面點(diǎn)擊Configure a new Virtual Host...,在Configuration的General選項(xiàng)卡下面,填寫:Name: NWMH 。Virtual Host Names里面填上: inner.weifang.gov.cn。然后點(diǎn)擊“apply”,然后到Target and Deploy 選項(xiàng)卡,選中myserver,點(diǎn)擊“apply”,這樣名稱為NWMH的虛擬主機(jī)就搭建成功了。
接下來(lái)在weblogic的console的左邊導(dǎo)航欄,中選擇mydomain ->Deployments-> Web Application Modeules,在deploy NWMH的應(yīng)用時(shí),在 Virtual Hosts下選上NWMH,點(diǎn)擊 Deploy按鈕。這樣虛擬主機(jī)的配置算是完成了。但是,想要通過域名直接訪問內(nèi)網(wǎng)還是不行。后面還得跟上討厭的路徑,比如inner.xxxx.gov/NWMH,然而默認(rèn)的路徑已經(jīng)被外網(wǎng)給占用了,如果你在內(nèi)網(wǎng)的配置文件里面加上/,部署肯定是不成功的,weblogic會(huì)告訴你,context root已經(jīng)被占用。怎么辦?其實(shí)不要慌。解決辦法如下:
在內(nèi)網(wǎng)門戶的配置文件上加上 。
重起服務(wù),敲入域名inner.xxxx.gov.cn。一切ok!問題解決。通過這種方法,weblogic上即使再部署幾個(gè)應(yīng)用都是可以解決的。
以上內(nèi)容僅僅是個(gè)人在做項(xiàng)目中的心得。并不保證其技術(shù)的完整性和絕對(duì)正確。