2

Я работаю с Play! 2.4, и я использую Ebean в качестве инструмента ORM. Все хорошо, когда я настраиваю ebean через application.conf и использую Ebeanserver по умолчанию, созданный игрой ebean.Как создать Ebeanserver, используя инъекцию зависимостей в playframework?

То, что я хотел бы достичь, заключается в том, чтобы динамически настраивать Ebeanserver и вводить его. Приложение может быть развернуто в разных производственных средах, в каждой среде URL-адрес, имя пользователя и пароль могут измениться. Поэтому я хочу сохранить параметры, которые могут отличаться в отдельном файле конфигурации и программно создавать объект Ebeanserver.

Я пробовал эту ссылку: http://ebean-orm.github.io/docs/setup/guice, но я не был успешным. Моя конфигурация выглядит следующим образом:

EbeanServerProvider.java

public class EbeanServerProvider implements Provider<EbeanServer> { 

    @Override 
    public EbeanServer get() { 

     ServerConfig config = new ServerConfig(); 
     config.setName("mysql"); 
     config.loadFromProperties(); 
     config.setDefaultServer(true); 
     return EbeanServerFactory.create(config); 
    } 
} 

связывание модуля с помощью Guice

bind(EbeanServer.class).toProvider(EbeanServerProvider.class).asEagerSingleton(); 

ebean.properties

datasource.default = mysql 
datasource.mysql.databaseDriver=com.mysql.jdbc.Driver 
datasource.mysql.databaseUrl="jdbc:mysql://localhost/playdb" 
datasource.mysql.username=root 
datasource.mysql.password="" 

application.conf

ebean.default = ["models.*] 
db.default.driver=com.mysql.jdbc.Driver 
db.default.url="jdbc:mysql://localhost/playdb" 
db.default.username=root 
db.default.password="" 

Я думаю, проблема в том, что я не совсем понимаю, какая конфигурация необходима для игры и что нужно ebean. Существует не очень хорошая документация по использованию ebean и игры с инъекцией зависимости. Любая помощь приветствуется.

+0

Я изучаю Play 2.4 + Ebean, и я понимаю, что нет необходимости настраивать снова источник данных. * On ebean.properties. Достаточно с db.default. * On application.conf –

ответ

0

Короткий ответ:

конфиги базы данных вам нужны те, которые вы, перечисленные в application.conf. Создайте новый файл application.conf на сервере с информацией о подключении к конкретной базе данных сервера. По соображениям безопасности они не будут привязаны к вашим репозиториям git.

Подробный ответ:

При развертывании те же приложения в различных средах, вы можете создать конфигурацию каждой среды и копить его где-нибудь /etc/default/. В файле build.sbt добавьте проверку для файла conf на сервере, например /etc/default/myproject.conf, и ваша конкретная информация о подключении к базе данных может туда попасть.

Обновите свой build.sbt, чтобы проверить conf. (Обратите внимание, $ {name.value} становится именем проекта):

name := """myproject""" 

javaOptions in Universal ++= Seq(
    s"-Dconfig.file=/etc/default/${name.value}.conf" 
) 

Сбросьте ваши последние изменения от мерзавца на сервере и запускать activator stage. Когда вы запустите исполняемый файл ./target/universal/stage/bin/myproject, он будет проверять ваш конкретный конфиг вашего сервера и использовать эти настройки.

Если вы хотите установить и использовать некоторые конфигурации по умолчанию в файле application.conf проекта, просто добавьте include "application.conf" в начало вашего конкретного сервера. Ваш пользовательский conf переопределит все, что было установлено в вашем приложении application.conf по умолчанию.

Файл /etc/default/myproject.conf будет структурирован точно так же, как ваш default.conf по умолчанию. Просто введите реальные значения соединения для этого сервера.

Помните, что есть ebean-плагин PlayEbean, который вы можете добавить в файл build.sbt, который позволит ebean просто работать. Я не совсем понимаю, что вы пытаетесь выполнить, но это может и не понадобиться.

Надеюсь, я не совсем пропустил то, что вы пытались спросить.

+0

Благодарим за ответ. Я не особо предпочитаю хранить файлы conf на самом сервере. Я, возможно, не был полностью ясен в моем вопросе здесь. Я только недавно получил четкое представление о том, что я хотел сделать, и поэтому я создал новый вопрос. Вот ссылка: http://stackoverflow.com/questions/34350725/how-can-i-override-plays-default-ebean-server-configuration. – jesukumar

Смежные вопросы