考虑到系统负担以及提高系统安全,需要将WebLogic的HTTP Server分离,而使用Apache HTTP Server;这需要安装Apache-WebLogic插件来实现。当客户端发出HTTP请求时,由Apache HTTP Server通过Apache HTTP Server plug-in来使用WebLogic Server;对于客户端来说,WebLogic Server是不可见的,但是却能通过Apache HTTP Server plug-in来使用WebLogic Server的所有服务。
Apache HTTP Server plug-in类似于HTTP Servlet,它以Apache HTTP Server的Moudle形式来运行,在Apache HTTP Server启动的时候加载,然后由Apache HTTP Server将确定的HTTP Requests交给它来转发至Weblogic Server进行处理;所有的请求与响应是走HTTP通道的,因此可以通过防火墙。

本文所述在Apache HTTP Server 2.0.54与BEA Weblogic Server 8.1 sp2测试通过;推荐使用Apache HTTP Server 2.x版本;本文的相关描述没有考虑Apache HTTP Server 1.x版本。
Apache HTTP Server安装:
1. 安装文件下载地址:http://219.133.95.10:9080/rtkfecbg/apache-win32.msi
2. 执行安装文件进行Apache HTTP Server安装,一般只要按默认的选项即可,只有以下页面需要手动调整;

在Network Domain项输入域名,在Server Name项输入服务器名或IP,在Administrator’s Email Address项输入管理员的email。
配置说明:
1. 检查Apache HTTP Server是否支持Dynamic Shared Object(DSO);在命令行执行如下命令:
Apache_Home/bin/apache –l 或Apache_Home/bin/httpd –l
若结果列表中有mod_so.c,在说明支持DSO,否则需要加入如下选项重新编译Apache:
…
--enable-module=so
--enable-rule=SHARED_CORE
…
2. 定位.so文件,并将其copy到Apache_Home/modules下,具体请参考下表:

3. 修改Apache_Home/conf/httpd.conf,加入如下代码:
3.1 LoadModule weblogic_module modules/mod_wl_20.so
3.2 新增一个IfModule定义,对于non-clustered WebLogic Server包括WebLogicHost与WebLogicPort参数;对于Weblogic Server Cluster包括WebLogicCluster参数;
例:<IfModule mod_weblogic.c>
WebLogicHost 127.0.0.1
WebLogicPort 7001
</IfModule>
<IfModule mod_weblogic.c>
WebLogicCluster 192.168.0.1:7001,192.168.0.2:7001
</IfModule>
3.3 对于proxy requests by MIME type,可以在IfMoudle中增加参数MatchExpression,可以有多个;
例:<IfModule mod_weblogic.c>
WebLogicHost 127.0.0.1
WebLogicPort 7001
MatchExpression *.jsp
MatchExpression *.do
</IfModule>
3.4 对于proxying requests by path,可以新增一个Location的定义, 参数SetHandler用于指定Apache HTTP server plug-in的模式;
例:<Location /yhkcrm>
SetHandler weblogic-handler
WebLogicHost 192.168.70.78
WebLogicPort 7001
</Location>
4. 重启BEA Weblogic Server;
5. 重启Apache HTTP Server;
6. 打开IE,输入设定的server name,出现系统的登录页面,则说明配置成功。
7. 对于后期新增的Weblogic server实例,只需要在httpd.conf增加一个Location定义即可,需要包括参数SetHandler, WebLogicHost, WebLogicPort;