Java EE7:@DatasourceDefinition,如何参数化值?

时间:2014-09-26 16:46:21

标签: java java-ee jpa

我正在学习如何使用@DataSourceDefinitiondocumentation给出了一个具体的例子

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

问题
如何将这些值替换为环境变量?例如DB_HOSTDB_URL

原因是当我将我的应用程序部署到像OPENSHIFT这样的提供程序时,我只能获取用于连接数据库的值。

我不想在我的代码库中对它们进行硬编码。这会增加与特定数据库的耦合,并且无法在运行时切换

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果要在OPENSHIFT和LOCAL JBoss中部署Java EE应用程序,那么建议使用 JBoss配置文件来配置数据源属性并使用数据源JNDI persistence.xml 中的名称

参考:https://help.openshift.com/hc/en-us/articles/202964690-Default-database-connectivity-configurations-for-JBoss-Applications

如果您确实想要使用应用程序服务器(如JBoss)特定的配置。然后,您可以为 @DataSourceDefinition 带注释的类编写数据源 wrapper ,并使用外部属性文件更改数据源的值。

参考:http://jdevelopment.nl/switching-data-sources-datasourcedefinition