TomEE поставщик нестандартной недвижимости
Я запускаю свое приложение в TomEE 8. Я хочу прочитать некоторое свойство из моей БД и передать его приложению.
Я видел один пример из https://rmannibucau.wordpress.com/2014/08/06/tomee-and-more-advanced-resource-configuration/. может быть, он старый. это не работает. при развертывании приложения ожидается тип ресурса. Но в примере нет тега Type in resource.
<Resource id="..." properties-provider="com.foo.MyPropertiesReader" />
Каков последний / правильный способ загрузки моих пользовательских свойств в мое приложение из моей БД?
1 ответ
Я считаю, что Ромен пытался быть кратким в своих примерах. В его примерах можно предположить, что он использовал javax.sql.DataSource
или же DataSource
, Несмотря на это, однако, это будет работать для любого типа ресурса, даже пользовательских ресурсов. Также есть уже реализации, которые вы можете проверить:
- HerokuDatabasePropertiesProvider.java
- OpenshiftMySQLPropertiesProvider.java
- OpenshiftPostgreSQLPropertiesProvider.java
На упомянутой вами странице Ромен также отмечает, что ваш класс может реализовать org.apache.openejb.api.resource.PropertiesResourceProvider
или поставьте Properties provides();
метод.
Вот небольшой пример:
org.superbiz.provider.MyPropertiesReader.java
package org.superbiz.provider;
import org.apache.openejb.api.resource.PropertiesResourceProvider;
import org.apache.openejb.testng.PropertiesBuilder;
import java.util.Properties;
public class MyPropertiesReader implements PropertiesResourceProvider {
public Properties provides() {
return new PropertiesBuilder()
.p("JdbcDriver", "org.hsqldb.jdbcDriver")
.p("JdbcUrl", "jdbc:hsqldb:mem:moviedb")
.build();
}
}
SRC / Главный / WebApp/WEB-INF/resources.xml
<resources>
<Resource id="movieDatabase"
type="DataSource"
properties-provider="org.superbiz.provider.MyPropertiesReader"/>
</resources>
Это ключевые фрагменты, которые, я надеюсь, помогут рассеять ваши сомнения. Реализация источника данных оставлена на ваше усмотрение.:)