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

Java EE7:@DatasourceDefinition,如何参数化值?,java,jakarta-ee,jpa,Java,Jakarta Ee,Jpa,我正在学习如何使用@DataSourceDefinition。下面给出了一个具体示例: @DataSourceDefinition(name="java:global/MyApp/MyDataSource", className="com.foobar.MyDataSource", portNumber=6689, serverName="myserver.com", user=&quo

我正在学习如何使用
@DataSourceDefinition
。下面给出了一个具体示例:

 @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
      className="com.foobar.MyDataSource",
      portNumber=6689,
      serverName="myserver.com",
      user="lance",
      password="secret"
   )
问题
如何用这些值替换环境变量?像
DB\u主机
DB\u URL

原因是当我将我的应用程序部署到像
OPENSHIFT
这样的提供者时,我得到的所有值都用于连接数据库

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


有什么想法吗?

如果您想在OPENSHIFT和本地JBoss中部署Java EE应用程序,建议使用JBoss配置文件来配置数据源属性,并在persistence.xml中使用该datasouce JNDI名称

参考:

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


请参阅:

大多数服务器都提供自己的方法来定义数据源,从而将数据源与应用程序分离。这个定义可以用于测试,但我不建议在任何严肃的开发中使用它。你能给我一些这样做的例子吗?做什么的例子?“服务器提供自己定义数据源的方法”只需谷歌你的服务器名和数据源。e、 Tomcat、WebSphereLiberty、WebSphereApplicationServer等。。。