日期:2014-05-17  浏览次数:20784 次

用apache代理weblogic,同时apache自己也发布一个web服务,不成功。
我的目的是用apache代理weblogic,同时apache自己也发布一个web服务。
我在apache中loadmodule weblogic_module后,使用以下的配置文件:
LoadModule weblogic_module modules/mod_wl_22.so

<VirtualHost 192.168.1.106:81>
ServerAdmin webmaster@host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
<Location />
WebLogicHost 192.168.1.105
WeblogicPort 7003
MatchExpression *
</Location>
</VirtualHost> 

好了问题来了。测试发现通过81端口可以访问weblogic。
但是访问自身的web程序的时候报错,错误如下:
Failure of server APACHE bridge:

Neither cluster nor server host parameter was specified in httpd.conf. Cannot continue.


Build date/time: Apr 20 2009 21:15:19

Change Number: 1211636

------解决方案--------------------
<Location />
WebLogicHost 192.168.1.105
WeblogicPort 7003
MatchExpression *
</Location>
这样配置表示:将/后的所有请求,都交给weblogic服务来处理。
如果说访问在apache下的应用/index.html的话,服务器也会将index.html请求发到weblogic的应用目录下,因为weblogic目录下没有index.html这样的页面,就报错了。

我这有一个解决办法:
<Location />
WebLogicHost 192.168.1.105
WeblogicPort 7003
MatchExpression /xxx/*
</Location>
在weblogic的context-root设置为/xxx,这样的意思就是,让apache服务器只拦截请求地址为/xxx开头的,然后将请求转发给weblogic来处理,而如果访问/index.html,这样的请求,会由apache自己来处理。
但是这样的办法也不好,因为这样的话,需要给你的weblogic里的所有链接地址前,都加上/xxx这样的前缀,本人正在寻找其他的解决办法。