【发布时间】:2012-03-15 20:12:18
【问题描述】:
我有一个在 GlassFish 3.1 上运行的 Java EE 6 Web 应用程序。该应用程序使用本地Singleton EJB MySingleton 的2 个实例。 MySingleton 的每个实例都通过 API 连接到第三方软件。
MySingleton.java
@Singleton
@LocalBean
public class MySingleton {
@PersistenceContext private EntityManager em;
private ThirdPartyAPI thirdPartyAPI;
...
}
MySingletonManager.java
@Singleton
@LocalBean
public class MySingletonManager {
@EJB private MySingleton mySingletonA;
@EJB private MySingleton mySingletonB; ///Aargh! They can't run on the same server!!
...
}
以下是限制条件:
- 第三方软件提供商要求其软件在不同的物理服务器上运行
ThirdPartyAPI的每个实例 - MySingleton 使用
EntityManager的注入实例,在同一PersistenceContext上进行查询和事务处理。
为了满足约束 1,我认为我需要远程访问 Singleton EJB:我需要告诉应用程序服务器“在服务器 A 上运行 mySingletonA,在服务器 B 上运行 mySingletonB”。为此,我看到有可能通过JNDI 调用远程 EJB。
为了满足约束 2,我认为我需要使用 GlassFish clustering,因为 PersitenceContext 需要在 MySingleton 的 2 个实例之间共享。
不幸的是,我找不到任何关于如何同时使用这两种技术(远程 EJB 和集群)的参考资料。
我正在寻找有关此场景的首选架构的提示或建议,以及最终的一些实施指南。
【问题讨论】:
标签: jakarta-ee glassfish ejb jms jndi