我目前正在开发部署到 GlassFish 的企业应用程序。我试图找出从已部署到 GlassFish 3.1 的 EJB 中与 cassandra 后端通信的正确方法。我更愿意使用 Pelops 与 Cassandra 交谈。
免责声明:我不熟悉 Java EE 以及企业应用程序服务器和 EJB 背后的概念;该项目的目的之一是学习这些主题。这超出了这个问题的范围,因为我真的只是想为最佳实践指明正确的方向,或者我应该去哪里寻找最佳实践;到目前为止,谷歌在这个主题上并不是很有帮助/一致。
更具体地说,我应该考虑为 Cassandra 编写 JCA 连接器吗?使用通过 Pelops 与 cassandra 对话的单例 EJB?直接在我的 EJB 中使用 pelops? (尽管我认为您不应该在 ejbs 中创建套接字连接)完全是其他东西?
最佳答案
EJB 规范禁止 EJB 打开服务器套接字,但不是套接字。但是,它也禁止 EJB 创建线程。 Pelops(或 Hector)是否创建线程来处理其池?
撇开法律条文不谈,因为这两个库都进行池化,所以对我来说它们绝对像是属于资源适配器层的东西。我会对 EJB 感到紧张,EJB 的生命周期由容器控制,并且可能很短,卡在像连接池这样的资源上,其生命周期在某种程度上是独立的,应该更长。
也就是说,EJB 的大多数实现都相当宽容,因此无论直接从 EJB 使用 Pelops/Hector 在架构上是否正确,它很可能会起作用。
如果我有时间,我会编写一个资源适配器来包装这些库中的一个或另一个。然而,为了追求微不足道的实际返回,这将是一项相当大的资源投资。
关于ejb-3.0 - 在 Java EE (GlassFish) 中使用 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7420332/