我正在学习如何使用@DataSourceDefinition
。 documentation给出了一个具体的例子
@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 :(得分:1)
如果要在OPENSHIFT和LOCAL JBoss中部署Java EE应用程序,那么建议使用 JBoss配置文件来配置数据源属性并使用数据源JNDI persistence.xml 中的名称。
如果您确实不想要使用应用程序服务器(如JBoss)特定的配置。然后,您可以为 @DataSourceDefinition 带注释的类编写数据源 wrapper ,并使用外部属性文件更改数据源的值。
参考:http://jdevelopment.nl/switching-data-sources-datasourcedefinition