0

我在我的一个项目中使用ActiveJDBC,今天我遇到了一个讨厌的问题。

对我的应用程序的并发请求将失败,因为 ActiveJDBC 尝试从具有相同名称“默认”的池中获取多个连接。

似乎有可能打开不同名称的连接,所以不要写:

Base.open(JNDI_NAME)

有人会写:

new DB("someRandomName").open(JNDI_NAME);

但是......当试图从数据库中获取一些数据时,出现了一个问题:ActiveJDBC 搜索连接“默认”(或模型类中的 @DbName 注释) - 据我了解,这个概念用于处理多个数据库(不是多个连接)。

我真的不想替换 ActiveJDBC,因为编写了数千行代码 - 有什么想法吗?

4

1 回答 1

0

想法存在:) 在您的代码中,您有:

new DB("someRandomName").open(JNDI_NAME);

..但是您传递给 DB 类的构造函数的字符串不是随机字符串,也不是 JNDI 名称。它是数据库的逻辑名称。您正确地猜到了这与访问多个数据库访问有关。这是解释这一点的文档:http: //javalite.io/database_connection_management#multiple-database-example

如果您的系统中只有一个数据库,您甚至不需要类 DB,只需使用 Base:http: //javalite.github.io/activejdbc/snapshot/org/javalite/activejdbc/Base.html 它将确保数据库连接将有一个名称“默认” - 您的模型所期望的

干杯

于 2012-05-07T16:27:22.930 回答