Pet*_*ter 2 java eclipse tomcat jpa
我正在使用OpenShift,我正在尝试将我的应用程序部署到本地Tomcat实例以加快开发速度.我正在使用EclipseLink进行数据库事务,我已经提供了OpenShift在persistence.xml中使用的环境变量,如下所示:
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/mydbname"/>
<property name="javax.persistence.jdbc.user" value="${env.OPENSHIFT_MYSQL_DB_USERNAME}"/>
<property name="javax.persistence.jdbc.password" value="${env.OPENSHIFT_MYSQL_DB_PASSWORD}"/>
Run Code Online (Sandbox Code Playgroud)
我在我的本地机器上使用linux,所以我也将所有这些变量值设置为本地版本(localhost,3306等).我已经仔细检查了它们在终端是否可用.我也试过像这里描述的那样提供它们- 我在Eclipse中打开了Tomcat实例的设置,选择了"Open launch configuration",在Arguments选项卡上,我将它们输入到VM参数中(也尝试了"变量". .."菜单).但是,它不起作用,我在PORT变量上得到NumberFormatException,我想它将原始字符串"$ {env.OPENSHIFT_MYSQL_DB_PORT}"作为端口.
(显然,它也不适用于OpenShift.)
我在哪里可以在Eclipse/Tomcat中设置这些变量值以使其工作?
先感谢您!
在WildFly中,简单和最优雅的方法是在ee子系统中启用属性替换,如下例所示:
<subsystem xmlns="urn:jboss:domain:ee:4.0">
<spec-descriptor-property-replacement>true</spec-descriptor-property-replacement>
<jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
. . .
</subsystem>
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用带有env前缀的BeanShell表达式来引用环境变量.例如:
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://${env.MYSQL_DB_HOST}:${env.MYSQL_DB_PORT}/mydbname"/>
<property name="javax.persistence.jdbc.user" value="${env.MYSQL_DB_USERNAME}"/>
<property name="javax.persistence.jdbc.password" value="${env.MYSQL_DB_PASSWORD}"/>
Run Code Online (Sandbox Code Playgroud)
此策略在诸如Openshift之类的云环境中特别有用,您可以将环境变量传递给应用程序,以便对其进行自定义.
| 归档时间: |
|
| 查看次数: |
5035 次 |
| 最近记录: |