我正在学习如何使用@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
这样的提供商时,我得到的都是用于连接数据库的值。
我不想在我的代码库中对它们进行硬编码。这增加了与特定数据库的耦合,并且无法在运行时切换
有什么想法吗?
最佳答案
如果您想在 OPENSHIFT 以及本地 JBoss 中部署 Java EE 应用程序,那么建议使用 JBoss 配置文件来配置数据源属性,并在 persistence.xml 中使用该数据源 JNDI 名称。
如果您确实不想想要使用应用程序服务器(如 JBoss)特定配置。然后,您可以为 @DataSourceDefinition 注解类编写数据源包装器,并使用外部属性文件更改数据源的值。
引用:http://jdevelopment.nl/switching-data-sources-datasourcedefinition
关于Java EE7 : @DatasourceDefinition, 如何参数化值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064437/