2014-12-01 66 views
1

我需要在運行時更改連接。我有這個服務器的配置:如何在運行時以編程方式更改默認服務器Play + 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); 
} 

我不知道這個方法做的事,但它確實是我找。 這個錯誤的原因是什麼?還有其他方法可以解決這個問題嗎?

+1

我想你應該陳述你想要達到的目標(你面臨的問題以及你爲什麼要採取改變默認服務器的策略)。我懷疑你可能試圖解決錯誤的問題。 – 2014-12-10 22:40:34

回答

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" 
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); 
+0

感謝您的回答,但我想要的是在運行時通過其他服務器實例('test')在運行時更改ebean的默認服務器實例,肯定是我的'ChangeConfig'方法不能解決問題。對不起,如果我的問題不清楚。請檢查編輯。謝謝 – Aramillo 2014-12-02 13:17:02

相關問題