浅析weblogic10 plugin中的DynamicServerList
2009-09-22 00:00:00 来源:WEB开发网WebLogicCluster 10.130.2.41:7021,10.130.2.42:7021,10.130.2.43:7021
WebLogicCluster 10.130.2.41:7021
上面两种写法是等效的,但DynamicServerList若为off,则必须采用上面的写法。
下面我们来看看proxy是如何感知后端cluster状态的变化,从而及时更新自己手里的server list以便提高dispatch request的速度。
1:plugin端(以HttpClusterServlet为例)
在plugin处理client端请求的时候,它在将请求dispatch到后端server的时候,会在http header中加上一个名为X_WEBLOGIC_REQUEST_CLUSTERINFO的internal header, 如下:
HttpClusterServlet.java
1 protected void addRequestHeaders(HttpServletRequest request, PrintStream headerOut, Object o1, Object o2) {
2 super.addRequestHeaders(request, headerOut, o1, o2);
3
4 headerOut.print(ServletResponseImpl.X_WEBLOGIC_REQUEST_CLUSTERINFO + ": true");
5 headerOut.print(EOL);
6 }
2: managed server端
managed server在处理完http request后,回写response到proxy端的时候,检查当前managed server是否位于一个cluster中及request的header中是否包含X_WEBLOGIC_REQUEST_CLUSTERINFO。如果上述条件成立,再去检查当前cluster的hash,如果cluster的hash发生变化(对比当前cluster的hash和proxy传递过来的hash),则将cluster member的信息通知给proxy,这个通知也是通过http header来实现,不同的是header名为:X_WEBLOGIC_CLUSTER_LIST及X_WEBLOGIC_CLUSTER_HASH,如下:
更多精彩
赞助商链接