我在我的一个项目中使用ActiveJDBC,今天我遇到了一个讨厌的问题。
对我的应用程序的并发请求将失败,因为ActiveJDBC尝试从池中获取具有相同名称“default”的多个连接。
似乎有可能用不同的名称打开连接,所以不要写:
Base.open(JNDI_NAME)
一个人会写:
new DB("someRandomName").open(JNDI_NAME);
但是......当试图从数据库中获取一些数据时,存在一个问题:ActiveJDBC搜索连接“default”(或模型类的@DbName注释) - 据我所知,这个概念用于处理多个数据库(不是多重连接)。
我真的不想替换ActiveJDBC,因为编写了数千行代码 - 任何想法?
答案 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” - 您的模型期望
欢呼声