首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以在运行中动态更改Oracle连接!框架?

是否有一种方法可以在运行中动态更改Oracle连接!框架?
EN

Stack Overflow用户
提问于 2011-09-21 01:27:41
回答 1查看 445关注 0票数 3

我目前在一个项目中工作,其中每个用户在Oracle 11g DB中都有自己的模式。之所以进行这种设计,是因为访问Oracle表的所有安全角色和权限都存储在数据库中。我们的团队正在试图弄清楚如何在酷玩中做到这一点!框架。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-21 01:43:17

据我所知,您可以尝试用下面这样的方式包装DB.datasource的值(其中currentUser()currentPassword()应该返回发出请求的当前用户的凭据):

代码语言:javascript
复制
public class DataSourceWrapper {
    private DataSource original;
    public DataSourceWrapper(DataSource original) {
        this.original = original;
    }

    public Connection getConnection() {
        return original.getConnection(currentUser(), currentPassword());
    }

    ...

    public DataSource getOriginal() {
        return original;
    }
}

DB.datasource的替换应该发生在DB和JPA插件的onApplicationStart()方法执行之间,因此您需要创建一个自定义插件:

代码语言:javascript
复制
public class DataSourceReplacementPlugin extends PlayPlugin {
    public void onApplicationStart() {
        DB.datasource = new DataSourceWrapper(DB.datasource);
    }

    public void onApplicationStop() {
        if (DB.datasource instanceof DataSourceWrapper) {
            DB.datasource = ((DataSourceWrapper) DB.datasource).getOriginal();
        }
    }
}

并在conf/play.plugins中以适当的优先级注册

代码语言:javascript
复制
350: DataSourceReplacementPlugin
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7489195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档