0

我正在尝试使用 Cayenne(远程对象持久性)设置服务器。就我而言,我有几个使用同一张地图的数据库。由于两个节点不能指向同一个地图,最好的实现方法是什么?

我找到了两种方法来做到这一点,但这并不令人满意:

  • 每个数据库都有一个域,每个数据库都有一个 servlet。它可以工作,但这意味着如果我创建一个新数据库,我将不得不更改 web.xml 并重新加载 Web 应用程序。

  • 让一个域包含多个节点和多个映射都指向同一个文件。我必须重载 EntityResolver 以便它只在第一个地图上构造缓存并重载 SelectQuery 以便它指向正确的地图。不确定这是一个好方法...

感谢您的回答和评论。

4

1 回答 1

0

假设 Cayenne 3.1 或更高版本,我将为每个数据库创建一个单独的 ServerRuntime 对象。当您设置一个新的运行时,可以动态地为它们中的每一个创建数据源。

要将其连接到 ROP,您可能需要创建自己的 servlet,该 servlet 具有多个 HessianServlet 的映射,每个 DB 一个,并根据某些请求参数将请求分派到适当的实例。

于 2014-07-31T13:36:42.573 回答