使用 WebLogic Server 群集

     上一页  下一页    在新窗口中打开目录     
在此处开始内容

WebLogic 群集 API

下列部分将介绍 WebLogic 群集 API。

 


如何使用该 API

WebLogic 群集公共 API 包含在一个单接口 (weblogic.rmi.cluster.CallRouter) 中。

Class java.lang.Object
Interface weblogic.rmi.cluster.CallRouter
(extends java.io.Serializable)

只有给 RMI 编译器 (rmic) 提供实现此接口的类才能启用基于参数的路由。使用下列选项(在一行内输入)针对该服务实现运行 rmic

$ java weblogic.rmic -clusterable -callRouter 
<callRouterClass> <remoteObjectClass>

每次调用远程方法时,存根控件群集都会调用该调用路由器。该路由器负责返回该调用应路由到的服务器的名称。

群集中的每个服务器都以 WebLogic Server 控制台对其定义的名称作为唯一标识。方法路由器必须使用这些名称来标识服务器。

示例:假设 ExampleImpl 类可以实现远程接口 Example,并带有一个方法 foo

public class ExampleImpl implements Example {
public void foo(String arg) { return arg; }
}

CallRouter 实现 ExampleRouter 将确保所有“arg”小于“n”的 foo 调用转至 server1(如果 server1 无法访问,则转至 server3),所有“arg”大于或等于“n”的调用转至 server2(如果 server2 无法访问,则转至 server3)。

public class ExampleRouter implements CallRouter {
private static final String[] aToM = { "server1", "server3" };
private static final String[] nToZ = { "server2", "server3" };

public String[] getServerList(Method m, Object[] params) {
if (m.GetName().equals("foo")) {
if (((String)params[0]).charAt(0) < 'n') {
return aToM;
} else {
return nToZ;
}
} else {
return null;
}
}
}

rmic 调用将 ExampleRouterExampleImpl 相关联,以启用基于参数的路由:

$ rmic -clusterable -callRouter ExampleRouter ExampleImpl

 


自定义调用路由和共存优化

如果正被调用的对象所在的同一个服务器实例上存在副本,该调用则不会进行负载平衡,因为使用本地副本效率更高。有关详细信息,请参阅共存对象的优化


  返回顶部       上一页  下一页