Java EE数据源(JBoss 5.1)上连接的上下文特定用户名
我们有一个需要访问另一个团队拥有的数据库的应用程序。 该数据库在数据库中具有安全性(触发器、表权限等),因此我们需要使用连接到EJB的相同用户名/密码建立到数据库的连接 我们正在运行JBoss5.1。标准JavaEE解决方案是首选,但JBoss特定的解决方案也可以 目前我们的解决方案是Java EE数据源(JBoss 5.1)上连接的上下文特定用户名,java,jboss,datasource,Java,Jboss,Datasource,我们有一个需要访问另一个团队拥有的数据库的应用程序。 该数据库在数据库中具有安全性(触发器、表权限等),因此我们需要使用连接到EJB的相同用户名/密码建立到数据库的连接 我们正在运行JBoss5.1。标准JavaEE解决方案是首选,但JBoss特定的解决方案也可以 目前我们的解决方案是 在JBoss中创建一个没有用户id密码的数据源 要求客户端将用户名/密码传递到EJB中(EJB是一个有状态会话bean(SFSB),并记住用户名/密码) 会话bean使用DataSource.getConnec
- 在JBoss中创建一个没有用户id密码的数据源
- 要求客户端将用户名/密码传递到EJB中(EJB是一个有状态会话bean(SFSB),并记住用户名/密码) 会话bean使用
DataSource.getConnection(String,String)
InternalManagedConnectionPool
内部)。
如果用户名不匹配,则连接将从池中删除并销毁。
这意味着,一旦我们有2个用户,就有50%的可能性,在下次访问池时,放入池中的任何连接都将被破坏。随着用户数量的增加,这种可能性会变得更大
我们不能简单地在SFSB中创建一个连接并保留它,因为JBoss对我们来说太聪明了,它检测到我们打开了一个连接并自动将其返回到池中,因此对SFSB的下一个请求将因“未关联”连接而失败
如果我们能简单地让JBoss以“当前登录的用户”的身份创建一个连接也会很好,但是我们的解决方案是可以接受的
我的谷歌搜索没有找到做这类事情的任何推荐模式。每个人似乎都认为您希望您的数据源对所有连接使用单个用户(如果可能,这很好,但在这种情况下我不能这样做)
我能想出的唯一解决办法是
(数据库是Sybase ASE 15,但我怀疑这对解决方案有什么影响)对文档的进一步阅读使我找到了似乎是解决方案的地方。 添加
在我的数据源文件中,似乎已经修复了连接池的问题
我不确定我第一次怎么会错过这一点。对文档的进一步阅读使我找到了似乎是解决方案。 添加
在我的数据源文件中,似乎已经修复了连接池的问题
我不知道第一次怎么会错过