我需要在运行时更改连接。我有这个服务器配置:
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);
}
我不确定这种方法是做什么的,但这是我发现的。 可能是导致此错误的原因是什么?还有其他方法可以解决这个问题吗?
答案 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"