3

我目前正在开发一个部署到 GlassFish 的企业应用程序。我试图找出从已部署到 GlassFish 3.1 的 EJB 中与 cassandra 后端通信的正确方法。我更喜欢使用 Pelops 与 Cassandra 交谈。

免责声明:我是 Java EE 以及企业应用服务器和 EJB 背后的概念的新手;该项目的目的之一是学习这些主题。这超出了这个问题的范围,因为我真的只是想为最佳实践指明正确的方向,或者我应该去哪里寻找最佳实践;到目前为止,谷歌在这个主题上的帮助/一致性不是很大。

更具体地说,我是否应该考虑为 cassandra 编写 JCA 连接器?使用通过 Pelops 与 cassandra 对话的单例 EJB?直接在我的 EJB 中使用 pelops?(尽管我认为您不应该在 ejbs 中创建套接字连接)完全是别的东西吗?

4

2 回答 2

2

EJB 规范禁止 EJB 打开服务器套接字,但不允许打开套接字。但是,它也确实禁止 EJB 创建线程。Pelops(或 Hector)是否创建线程来处理其池化?

撇开法律条文不谈,因为这两个库都进行池化,所以我觉得它们绝对是属于资源适配器层的东西。我会对 EJB 感到紧张,它的生命周期由容器控制,并且可能非常短,它依赖于像连接池这样的资源,其生命周期在某种程度上是独立的,应该更长。

也就是说,EJB 的大多数实现都非常宽容,因此无论直接从 EJB 中使用 Pelops/Hector 在架构上是否正确,它都很可能会起作用。

如果我有时间在世界上,我会编写一个资源适配器来包装这些库中的一个或另一个。然而,为了追求微不足道的实际回报,这将是一项相当大的资源投资。

于 2011-10-18T10:09:34.163 回答
1

我们正在开发一个我现在工作的类似应用程序,即使我们不实现 EJB,我们也会将后端部署到 Glassfish 3.1,并且在内部我们创建了一个与 Cassandra 对话的小型库。

目前,用于连接和使用 Cassandra 的最常用库是 Hector:

https://github.com/rantav/hector

它非常积极地开发。我从未在 EJB 中使用过它,但我使用过它,它非常可靠。不过,不要如何开发 Pelops。

我们在这里开发的是一个非常适合我们需求的定制应用程序,这就是我们一开始没有使用 Hector 的原因。

只要您在 EJB 中使用客户端套接字,就应该是安全的,对 EJB 的限制是针对应由应用服务器处理的服务器套接字。但是如果您有其他需求,您应该编写您的 JCA。

于 2011-10-18T08:27:33.393 回答