Как программно изменить сервер по умолчанию Play + Ebean во время выполнения

1

Мне нужно изменить соединение во время выполнения. У меня эти конфигурации серверов:

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
    Я думаю, что вы должны указать, чего вы пытаетесь достичь (проблема, с которой вы сталкиваетесь и почему вы хотите принять стратегию смены сервера по умолчанию). Я подозреваю, что вы пытаетесь решить не ту проблему.
Теги:
playframework
database-connection
ebean

2 ответа

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
    Спасибо за ответ, но я пытаюсь изменить экземпляр сервера ebean по умолчанию другим экземпляром сервера ( test в этом случае) во время выполнения, определенно мой метод ChangeConfig не решает проблему. Извините, если мой вопрос не был ясен. Пожалуйста, проверьте редактирование. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню