浅析weblogic10 plugin中的DynamicServerList
2009-09-22 00:00:00 来源:WEB开发网3:proxy端,
回到proxy端,proxy读取managed server的response,将response写回到客户端。在读取response的时候,它同时会解析inter header的信息。如果发现DynamicServerList为true,而且response的header中包含 X_WEBLOGIC_CLUSTER_LIST、X_WEBLOGIC_CLUSTER_HASH等信息,它会据此更新request info,如下:
HttpClusterServlet.java
1 public void addResponseHeaders(HttpServletResponse response, String name, String value, Object o) {
2 RequestInfo ri = (RequestInfo) o;
3 if (ri.needToUpdateDynamicList() &&
4 name.equals(ServletResponseImpl.X_WEBLOGIC_CLUSTER_LIST)) {
5 ri.setDynamicList(value);
6 return;
7 }
8 if (ri.needToUpdateDynamicList() &&
9 name.equals(ServletResponseImpl.X_WEBLOGIC_CLUSTER_HASH)) {
10 ri.setDynamicHash(value);
11 return;
12 }
13
14 }
而requestInfo是一个请求范围的变量,更新它其实无法更新到proxy中的server list。server list的更新发生在一个request结束的时候,就HttpServletRequest.service()的finally块中。在 finally块中,检查requestInfo中的dynamicServerList存在,如果存在则说明后端cluster发生了变化(否则 managed server不会发送X_WEBLOGIC_CLUSTER_LIST信息到proxy端),那么它会将自己手里的serverlist, server hash信息设置为后端返回的值,如下:
更多精彩
赞助商链接