如何以编程方式查找/列出J2EE应用程序集群中的所有节点?

问题描述:

有没有办法找到属于Web应用程序集群的所有节点?我知道在JBoss上,我可以使用HAServiceMBeanSupport获取有关所有节点(主机名,IP地址)的信息,但我如何在Tomcat,WebSpere,Glassfish,Oracle AS,Jetty,WebLogic上实现类似的功能? (最好是一个适用于所有人的界面)如何以编程方式查找/列出J2EE应用程序集群中的所有节点?

据我所知,它取决于你的Applicationserver的功能。

没有“标准路径”来做到这一点。

你可以尝试以下方法:

ServletContextListener有两个方法。您可以在create方法中计算主机名和IP地址,并在destroy方法中删除节点。

这种方式在虚拟机崩溃时会遇到问题,例如,不会调用destroy方法。编辑: 您的软件是否需要数据库?如果是这样,所有的集群节点必须使用相同的数据库实例。如果你的应用程序没有集群部署,它使用“私人”数据库​​。你需要一个共享DB:

表:节点


HOST | IP


as1.cluster | < ip>

as2.cluster | < ip2>

如果只有onne线插入到该数据库中,则没有群集。

但是如果一个节点崩溃并且没有从这个表中删除它的条目,那么这个表可能被破坏。

+0

嗯,但是应用程序如何检测它是否在集群中呢?假设您在两台不运行集群的机器上部署应用程序。无论如何,我有问题找到一个应用程序服务器特定的解决方案... – 2010-12-06 16:15:52