【问题标题】:How to change programatically default server Play + Ebean in runtime如何在运行时以编程方式更改默认服务器 Play + Ebean
【发布时间】:2014-12-01 19:35:21
【问题描述】:

我需要在运行时更改连接。我有这个服务器配置:

db.default.driver=oracle.jdbc.OracleDriver
db.default.url="jdbc:oracle:thin:@//178.20.26.25:1521/orcl"
db.default.user="TEST1"
db.default.password="test1"

db.test.driver=oracle.jdbc.OracleDriver
db.test.url="jdbc:oracle:thin:@//178.20.26.26:1521/orcl"
db.test.user="TEST"
db.test.password="test"

ebean.default="models.*"
ebean.test="models.*"

我正在尝试这种方法,但在EbeanServerFactory.create(c); 中给我RuntimeException: DataSource user is null?

public static void ChangeConfig(){
    ServerConfig c = new ServerConfig();
    c.setName("test");

    c.loadFromProperties();

    c.setDefaultServer(true);
    c.setRegister(true);

    EbeanServerFactory.create(c);
}

我不确定这种方法是否有效,但这是我发现的。 此错误的原因可能是什么?有没有其他方法可以解决这个问题?

【问题讨论】:

  • 我认为您应该说明您要达到的目标(您面临的问题以及为什么要采用更改默认服务器的策略)。我怀疑你可能试图解决错误的问题。

标签: java oracle playframework database-connection ebean


【解决方案1】:

我找到了使用EbeanServer 类来解决我的问题的其他方法。这不会更改默认服务器,而是让您将模型用于特定服务器。例如:

EbeanServer defserver = Ebean.getServer("test");

因此我在代码中做了很多修改,例如这一行:

Activity.find.all(); //Get all activities in the default server

我改成了:

defserver.find(Activity.class).findList(); //Get all activities in server "test"

【讨论】:

    【解决方案2】:

    出现此错误是因为 DataSourceConfig 未从属性文件加载。

    您可以在 ChangeConfig 方法中创建它。为此,请添加以下代码:

    DataSourceConfig ds = new DataSourceConfig();
    ds.setDriver("oracle.jdbc.OracleDriver");
    ds.setUrl("jdbc:oracle:thin:@//178.20.26.26:1521/orcl");
    ds.setUsername("TEST");
    ds.setPassword("test");
    c.setDataSourceConfig(ds);
    

    【讨论】:

    • 感谢您的回答,但我正在尝试通过其他服务器实例(在这种情况下为test)在运行时更改 ebean 的默认服务器实例,绝对是我的 ChangeConfig 方法不要' t 解决问题。对不起,如果我的问题不清楚。请检查编辑。谢谢
    猜你喜欢
    • 2016-03-24
    • 2017-09-05
    • 2017-07-17
    • 2011-11-13
    • 1970-01-01
    • 2014-07-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多