许多初学者测试WebLogic的集群功能时, 总是想当然的以为代理服务器的地址就是集群的地址, 没错, 这个地址是集群地址, 但是它是Web集群的地址, JNDI 本身则并不存在所谓的一个中心集群服务器, 通过JNDI进行访问的EJB, 数据源等也是如此.

WebLogic JNDI 树可以作为集群服务. JNDI的上下文内容已经进行了复制, 因此它可以透明的在集群中的任意受管服务器上实现容灾恢复.要访问WebLogic集群中的EJB, 客户端需要指定一系列使用不同端口和IP的WebLogic Server服务器.

示意代码如下:

String url = "t3://IP1:8001,IP2:9001"; Hashtable<String,String> h = new Hashtable<String,String>();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, url);
InitialContext ctx = new InitialContext(h);
MyEJB ejb = (MyEJB)ctx.lookUp(“myEJBJNDIPath”);

然而, 将url地址配置为JNDI上的一个全局变量, 可能会是一种更好的实践, 这样系统管理员可很容易的更新Cluster环境的新变动.

更多示例代码参考:WebLogic 11g安装目录wlserver_10.3samplesserverexamplessrcexamplesclusterejbstatefulSession

转载请注明:WebLogic Android 博客 » WebLogic集群环境下如何访问EJB实现负载均衡