Java EE7: @DatasourceDefinition, как параметризовать значения?

1

Я изучаю, как использовать @DataSourceDefinition. В документации приводится конкретный пример:

 @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
      className="com.foobar.MyDataSource",
      portNumber=6689,
      serverName="myserver.com",
      user="lance",
      password="secret"
   )

Вопрос
Как я могу подставить эти значения для переменных среды? как DB_HOST, DB_URL

Причина в том, что когда я развертываю свое приложение на таких провайдерах, как OPENSHIFT, все, что я получаю, значения, используемые для подключения к базе данных.

Я бы не хотел их жестко кодировать в своей кодовой базе. Это добавляет связь с конкретной базой данных и не может быть переключено во время выполнения

Есть идеи?

  • 0
    Большинство серверов предоставляют свой собственный способ определения источников данных, который отделяет их от приложения. Это определение можно использовать для тестирования, но я бы не рекомендовал использовать его в каких-либо серьезных разработках.
  • 0
    Можете ли вы дать мне несколько примеров этого?
Показать ещё 3 комментария
Теги:
jpa
java-ee

1 ответ

1

Если вы хотите развернуть приложение Java EE в OPENSHIFT, а также в своем LOCAL JBoss, тогда он рекомендовал использовать файл конфигурации JBoss для настройки свойств источника данных и использовать имя datasouce JNDI в вашем файле persistence.xml.

См. Https://help.openshift.com/hc/en-us/articles/202964690-Default-database-connectivity-configurations-for-JBoss-Applications

Если вы действительно не хотите использовать определенные серверы приложений (например, JBoss). Затем вы можете написать оболочку источника данных для аннотированного класса @DataSourceDefinition и изменить значение из источника данных с помощью внешнего файла свойств.

См.: http://jdevelopment.nl/switching-data-sources-datasourcedefinition

Ещё вопросы

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