我处于类似的情况,目前我正在发现GF集群可以/不能为我做什么。
回复1)我需要Glassfish的3.1的集群功能
由于您的EJB是无状态的,你不需要对会话/状态复制的GF集群(像你说的你自己)。您可以设置多个独立实例并分别将它们部署到它们。但是,即使在无国籍的应用程序中,从行政角度来看,我发现GF集群的好处非常值得。
GF集群将确保配置自动应用于所有实例。 JNDI被自动复制。应用程序自动部署。这是一个扩展并添加额外实例的单个命令 - 稍后,您的群集将进行扩展,并且新实例将被配置,部署,启动并准备就绪。对我来说,只要我有超过1个实例,那就是行政天堂和足够使用GF集群的理由!
需要考虑的一件事(我现在正在为此苦苦挣扎)可能是一个分布式/协调的L2缓存,以防您的应用程序正在与数据库交谈。
Re 2)...如何设置JMS使其在集群环境中工作?
不知道我理解你的问题...如果你想在GF之外有一个高可用的消息代理,你需要相应地设置它并自己管理它。例如,ActiveMQ有几种设置集群/ HA /扩展的方法。如果您使用GF提供的OpenMQ,则设置GF群集还会提供群集消息代理。盒子外面。
但是,经纪人集群本身就是一个话题,不容低估。您可能需要考虑持久性和共享消息存储等,而不管使用外部还是GF提供的集群代理。
如果JMS是您的应用程序的一个组成部分,我建议适当注意经纪人。我可能不会使用GF经纪人,而是有一个独立的经纪人集群(关注点分离;例如,您可以相互独立地升级GF /经纪人)。
Re 3)EJB定时器服务...除了使用共享数据库来存储定时器之外,还有什么需要做的吗?
如果您需要计时器到组的自动闪光一次(appserver-)的情况下,我相信你做需要GF集群(加场的共享DB)。否则,我不明白,每个实例应该知道它是否应该触发。但是,这很容易测试...
TL;博士
- 使用GF集群对管理工作
- 使用一个外部的,易于理解的高可用消息代理
- 使用共享的数据库保存您的EJB计时器
如果您要发布3个不同的问题,您可能会有更好的运气。 – Preston