jndi聚类

时间:2011-05-28 21:56:15

标签: java-ee ejb websphere jndi cluster-computing

我有一些关于JNDi和clustring的问题:

  1. 部署EJB时是否会在JNDI中自动“注册”?

  2. 我读到,为了获取WebSphere的集群EJB,我需要查找类似于:“cell / cluster // ejb / ... - 是”单元“概念,Websphere概念还是J2EE概念?< / p>

  3. 我有一个奇怪的需求 - 我想集群,但不是必须使用WebSphere - 也就是说,我有一个WebSphere集群:C一致的服务器A和B,我还有另一个不同的websphere服务器D应用程序部署比A和B,但具有相同的SessionBean接口,相同的API。我希望能够创建对EJB的负载均衡/集群调用,并让它在A上执行一次,在B上执行一次,在D上执行一次。

3 个答案:

答案 0 :(得分:1)

  1. 否。但它取决于EJB的部署描述符/注释。
  2. 这是来自WebSphere的术语(http://itdevworld.wordpress.com/2009/05/03/websphere-concepts-cell-node-cluster-server/)。
  3. 据我所知,如果将EJB部署到集群,它会自动进行负载平衡。

答案 1 :(得分:1)

  1. 是的,EJB在部署后总是可以通过JNDI进行查找。这是EJB规范的强制要求。插入它的名称是标准化的。请参阅维基百科上的EJB-Naming and directory services
  2. “cell”是特定于Websphere的。虽然Java EE规范一般而且特别是EJB规范确实假设集群存在并且存在一些限制以使集群更容易,但是令人惊讶的是,很少有定义的API和命名标准明确地处理集群(JCA 1.6是少数几个之一)浮现在脑海里。)
  3. 这听起来确实很奇怪。如果我理解正确,总共只允许3次通话(1到A,1到B和1到D)然后所有服务都应该停止?也许你不应该想要这样的东西;)

答案 2 :(得分:0)

  1. 实际注册是在EJB应用程序启动时完成的。它使用DD信息向WAS JNDI服务器注册

  2. 您所指的内容称为完全限定的JNDI名称。您应该尝试不使用它,只需使用本地JNDI名称。为什么?完全限定名称具有拓扑特定信息,您不会在应用程序中使用这些信息,因为拓扑在开发,测试和prod环境之间会有所不同。本地名称空间的整个想法是隐藏各个供应商存储的方式,并使应用程序不依赖于供应商实现

  3. WAS中的群集工作的前提是将相同的应用程序部署到属于集群的所有服务器。实际上,如果服务器是群集的一部分,则无法将应用程序部署到该服务器。它只能部署到集群级别,WAS基础架构将相同的应用程序部署到所有集群成员。

  4. 循环法是一种WLM策略,可以在服务器上配置。另一个选择是为每个集群成员设置权重。

    HTH

    Manglu