ActiveJDBC并发请求?

时间:2012-05-07 14:42:56

标签: concurrency activejdbc

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

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

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

Base.open(JNDI_NAME)

一个人会写:

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

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

我真的不想替换ActiveJDBC,因为编写了数千行代码 - 任何想法?

1 个答案:

答案 0 :(得分: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 它将确保数据库连接的名称为“default” - 您的模型期望

欢呼声