Glassfish,EJB负载平衡

Glassfish,EJB负载平衡,glassfish,ejb,cluster-computing,load-balancing,Glassfish,Ejb,Cluster Computing,Load Balancing,我在glassfish 3集群中遇到了ejb负载平衡问题 我有一个ear项目,它包含EJB模块和WEB模块。我所有的EJB在EJB模块中都是无状态和远程的。在WEB模块中,我有一个servlet,它假设查找ejb,并打印他在集群中的哪个实例上获得ejb 我从servlet调用EJB,如下所示: Properties props=System.getProperties(); props.setProperty(“com.sun.appserv.iiop.endpoints”,“10.8.10.

我在glassfish 3集群中遇到了ejb负载平衡问题

我有一个ear项目,它包含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=新的InitialContext()

ejbremoteejb=(EJBRemote)ic.lookup(“java:global/app name ear/app ejbs/ejb!com.tt.EJBRemote”);

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


在我的情况下,如何实现负载平衡?我是否需要独立客户端(单独项目中的web应用)?glassfish集群如何知道我的servlet可以在其他实例中查找EJB

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

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

负载平衡时,使用IIOP,每个查找都绑定到一个实例,并且只切换到另一个实例进行故障切换


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

尝试启用,并让我知道这是否有效。嗨,Gabriel。谢谢你的回复。我试图启用PRLB,但我遇到了同样的情况。每个请求都在同一个实例上结束。似乎有一个WS。可能的报告,谢谢加布里埃尔。我不知道这个错误。实现我自己的负载平衡器(循环)是个好主意吗?任何暗示或例子都是受欢迎的。我认为还是有机会的。尝试在所有请求之间共享相同的EJB引用。我的意思是,第一个请求将查找存根并将其存储在会话中,下一个请求将使用先前轮询的存根,而不是查找新的存根;这样,存根的状态将在请求之间保持。(很难相信代理负载平衡在WS中不起作用。)