Glassfish,EJB负载均衡

时间:2013-10-25 08:50:23

标签: glassfish ejb cluster-computing load-balancing

我在glassfish 3集群中遇到ejb负载均衡问题。

我有一个包含EJB模块和WEB模块的耳朵项目。我的所有EJB都是EJB模块中的无状态和远程的。在WEB模块中,我有一个servlet,它假设查找ejb并打印在集群中的哪个实例上获取ejb。

我正在从servlet调用EJB:

Properties props = System.getProperties(); props.setProperty("com.sun.appserv.iiop.endpoints", "10.8.10.202:23700,10.8.10.203:23700,10.8.10.204:23700,10.8.10.205:23700"); InitialContext ic = new InitialContext();

EJBRemote ejb = (EJBRemote) ic.lookup("java:global/app-name-ear/app-ejbs/EJB!com.tt.EJBRemote");

问题是我的请求总是以4个可能的第一个实例结束。

在我的案例中如何实现负载均衡?我是否需要独立客户端(单独项目中的Web应用程序)? glassfish集群如何知道我的servlet可以查找EJB的另一个实例?

1 个答案:

答案 0 :(得分:0)

你的问题是你没有足够的负载。而且您查找 EJB 的方式很奇怪。

查找远程 EJB,而不是 servlet 中的属性。但是服务器的 JNDI 资源中的 CORBA / IIOP URL。 (在管理控制台中)

当您进行负载平衡时,使用 IIOP,每次查找都绑定到一个实例,并且仅切换到另一个实例以进行故障转移。

本质上,您在系统上没有足够的负载来触发 EJB 的其他实例。也许将池大小减少到 1 以模拟高负载。