如何在运行时以编程方式更改默认服务器Play + Ebean

时间:2014-12-01 19:35:22

标签: java oracle playframework database-connection ebean

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

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.*"

我正在尝试使用此方法,但在RuntimeException: DataSource user is null?

中提供了EbeanServerFactory.create(c);
public static void ChangeConfig(){
    ServerConfig c = new ServerConfig();
    c.setName("test");

    c.loadFromProperties();

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

    EbeanServerFactory.create(c);
}

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

2 个答案:

答案 0 :(得分:0)

发生此错误是因为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);

答案 1 :(得分:0)

我找到了使用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"