以下是我在网上看到的一份关于网站域名访问weblogic中的应用的文章,虽然现在只是刚学到weblogic,可能还有很多不会的地方,但是希望在今后的开发中如果遇到此类问题,能给我们提供借鉴和帮助。
大家可能都有体会,在weblogic上部署了应用以后。访问的时候都要敲上一堆url。最典型的就是如下:http;//localhost:7001 /webapp/……等等,这个在我们的自己的开发环境上倒是可以勉强接受,可是在真正的网站发布的时候,到了用户那里,人家可不愿意在域名后面敲上难记 的端口再加上一堆路径。而且,当weblogic上面部署了几个不同的应用的时候,人家该怎么通过不同的域名来访问我的站点呢?这些就是我们接下来要解决 的问题。
让我们以潍坊电子政务项目中的一个解决办法作为例子吧。首先交代一下环境:数据库用的是是oracle。Web应用是部署在weblogic上面的,其中 有两个web应用是要通过域名让外界访问的,一个是外网门户网站,web应用中名字简称为WWMH。一个是内网门户网站,web应用中的名字简称为 NWMH。假设这两个应用是处于同一个目录中的,他们的文件夹就是他们web应用的名称,两个域名分别是 www.weifang.gov.cn和inner.weifang.gov.cn。
我们先看看域名访问的大体过程:
比如外部某个机器输入域名访问 www.weifang.gov.cn,这个域名会被解析成为ip地址以及一些请求的主机信息,这样找到DNS服务器。再通过DNS所设的ip指向weblogic所在主机,这样就可以访问到外网的应用,具体详细的DNS原理请参见其他资料。
外网几个关键配置如下:在这里的前提条件是你的web应用已经部署上了。首先要把mydomain->Servers->myservers 中的list port端口改为80,默认的是7001。这样你通过域名访问的时候就不需要敲入端口,因为默认的就是80。然而仅仅这样还是不够的,此时如果你通过域名 访问的时候,在域名后面还得跟上WWMH的文件夹路径,否则访问不到。我们现在所要设置的是context root的路径。把WWMH的文件夹去掉,取而代之的是 ”/”,这样你默认的路径就是根目录了,做法是找到weblogic.xml文件,加上<context-root> /<context-root>,重起服务,这样通过域名就可以访问了。
如果仅仅是部署了一个应用,通过这样的配置访问当然没有问题。可是,一个weblogic上会部署多个应用。需要通过不同的域名来访问,此时,该怎么办? 比如说这里的内网,在外网已经配置好的情况下,又不忍心去改动以前配置好的成果。特别是前面的开发人员已经配置好的情况下。我们想到了weblogic自 身的一个功能,那就是设置虚拟主机。它的思想就是,把内网的应用模拟成另外一个域名,通过这个域名来达到访问内网的目的。
具体的配置如下:在weblogic的console的左边导航栏,中选择mydomain ->Services-> VirtualHosts,然后在右面点击Configure a new Virtual Host...,在Configuration的General选项卡下面,填写:Name: NWMH 。Virtual Host Names里面填上: inner.weifang.gov.cn。然后点击“apply”,然后到Target and Deploy 选项卡,选中myserver,点击“apply”,这样名称为NWMH的虚拟主机就搭建成功了。
接下来在weblogic的 console的左边导航栏,中选择mydomain ->Deployments-> Web Application Modeules,在deploy NWMH的应用时,在 Virtual Hosts下选上NWMH,点击 Deploy按钮。这样虚拟主机的配置算是完成了。但是,想要通过域名直接访问内网还是不行。后面还得跟上讨厌的路径,比如 inner.weifang.gov/NWMH,然而默认的路径已经被外网给占用了,如果你在内网的配置文件里面加上<context root>/<context root>,部署肯定是不成功的,weblogic会告诉你,context root已经被占用。怎么办?其实不要慌。解决办法如下:在内网门户的配置文件上加上 <VirtualHost Name="NWMH" Targets="myserver" DefaultWebApp="NWMH" VirtualHostNames="inner.weifang.gov.cn"/> 。
重起服务,敲入域名inner.weifang.gov.cn。一切ok!问题解决。通过这种方法,weblogic上即使再部署几个应用都是可以解决的。