WebLogic配置代理转发
weblogic管理页面这周由于工作需要学习并运用了weblogic的代理转发功能,现做记录如下。
A系统要直接调用B系统的某个页面,而A系统的用户终端所在的网段却无法和B系统所在的网段直接通信,这时候可以通过配置WebLogic的代理转发功能来解决这个问题。当然,前提是AB两系统网段相通,并且系统A的应用服务器是weblogic(至于系统B的应用服务器是否一定要是一样的weblogic则有待验证)。
以下是我的配置过程:
环境:weblogic9.23/weblogic10.3+AIX5.3
主要逻辑:通过配置weblogic内置的HttpProxyServlet来实现代理转发
准备工作:确保配置所在的应用的ContextRoot/,在l中加入以下内容实现
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "weblogic810-web-jar.dtd">
<weblogic-web-app>
  <context-root>/</context-root>
</weblogic-web-app>
配置过程:
在应用的l文件中增加一个servlet及其映射:
<servlet>
    <servlet-name>ProxyServlet</servlet-name>
    <servlet-class>weblogic.servlet.proxy.HttpProxyServlet</servlet-class>
    <init-param>
    <param-name>redirectURL</param-name>
    <param-value>10.185.18.7:7001/</param-value>
    </init-param>
    <!-- init-param>
    <param-name>PathTrim</param-name>
    <param-value>/proxy</param-value>
    </init-param-->
    <!-- init-param>
    <param-name>PathPrepend</param-name>
    <param-value>/gxpboss</param-value>
    </init-param-->
    <init-param>
    <param-name>Debug</param-name>
    <param-value>OFF</param-value>
    </init-param>
    <init-param>
    <param-name>DebugConfigInfo</param-name>
    <param-value>OFF</param-value>
    </init-param>
    <init-param>
    <param-name>WLLogFile</param-name>
    <param-value>/tmp/pbossproxy.log</param-value>
    </init-param>
    <init-param>
    <param-name>verbose</param-name>
    <param-value>true</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>ProxyServlet</servlet-name>
    <url-pattern>/eoms35/*</url-pattern>
  </servlet-mapping>
weblogic.servlet.proxy.HttpProxyServlet及其父类weblogic.servlet.proxy.GenericProxyServlet中定义了许多启动参数,有兴趣的话可以反编译研究研究,这样会更直观地理解该servlet的工作过程。
下面对一些重要的启动参数进行介绍:
redirectURL:字面上理解是重定向URL,也就是被代理服务器的位置,由协议+IP/主机名+端口组成,如10.185.18.7:7001/,如果 你写成10.185.18.7:7001/eoms/的形式,后面的/eoms/是没有用的——打开HttpProxyServlet类的反编译文件查看,你会发现程序只读取了这个启动参数中的主机和端口。所以这两个信息也可以分开为两个启动参数来定义:
<init-param>
<param-name>WebLogicHost</param-name>
<param-value>
10.185.18.7
</param-value>
</init-param>
<init-param>
<param-name>WebLogicPort</param-name>
<param-value>
7001
</param-value>
</init-param>
当然,这时可以肯定被代理的应用服务器应该只能是是weblogic了。
PathTrim在请求转发到 WebLogic Server 之前由插件从原始 URL 的开头部分剪切的字符串。例如,如果把myWeb.server/weblogic/foo传递到HttpProxyServlet以供解析,并且启动参数 PathTrim 的值设定为/weblogic,则转发到 被代理服务器的 URL 为:myWeb.server:7001/foo
PathPrependURL在经过PathTrim的处理之后,HttpProxyServlet会读取PathPrepend启动参数中设定的值,并把这个值附加到URL的开头,请注意,这时的URL是不含有主机和端口信息的。我们可以通过PathTrimPathPrepend这两个参数的配合来对转发前的URL进行处理,以求可以得到被代理服务器的正确响应。
Debug如要系统输出调试信息,请把该参数设为ON,否则设为OFF;日志默认路径windowsc:/temp/wlproxy.logunix/tmp/wlproxy.log
WLLogFile该参数可以自定义日志输出的路径。
DebugConfigInfo:值为TRUE/FALSE,如设为TRUE,则可以通过访问myServer:port/placeholder.jsp?__WebLogicBridgeConfig在页面上得到debug信息,其中myServer是主机名,port是端口名,而placeholder.jsp则是一个不存在的文件。
另外,我发现可以配置本服务器为代理服务器,也就是自己代理自己,但是却只能通过PathTrimurl处理后进行,而无法直接通过servlet-mapping中的url-pattern来进行过滤,很奇怪,有可能是个bug
Weblogic还可以通过weblogic.servlet.proxy.HttpClusterServlet来配置对集的转发功能,具体可以参考oracle的官方文档:
acle/docs/cd/E14571_01/web.1111/e13709/setup.htm#i685302

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。