我在TomEE 8中运行我的应用程序。我想从数据库中读取一些属性并将其传递给应用程序。
我从https://rmannibucau.wordpress.com/2014/08/06/tomee-and-more-advanced-resource-configuration/看了一个例子。可能是旧的。它不起作用。在部署应用程序时,它期望资源类型。但是示例在资源标签中没有Type。
<Resource id="..." properties-provider="com.foo.MyPropertiesReader" />
从数据库中将自定义属性加载到应用程序中的最新/正确方法是什么?
答案 0 :(得分:1)
我相信罗曼(Romain)试图使自己的例子简洁。在他的示例中,可以推测出他正在使用javax.sql.DataSource
或DataSource
。尽管如此,这仍然适用于任何类型的资源,甚至custom resources。已经有一些实现可以签出:
在您提到的页面中,Romain还指出您的类可以实现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 / main / webapp / WEB-INF / resources.xml
<resources>
<Resource id="movieDatabase"
type="DataSource"
properties-provider="org.superbiz.provider.MyPropertiesReader"/>
</resources>
这些是关键片段,我希望这些片段可以帮助您清除疑虑。数据源的实现留给您编写代码。 :)