【发布时间】:2013-09-07 02:03:55
【问题描述】:
问题: 当我在我的上下文 XML 中嵌入环境变量时,它们会在我本地运行时展开。但是当我在 OpenShift 上部署时,他们没有。它们解析为 null。
配置: web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springapp.xml</param-value>
</context-param>
springapp.xml:
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://#{systemProperties['OPENSHIFT_MYSQL_DB_HOST']}:#{systemProperties['OPENSHIFT_MYSQL_DB_PORT']}/prepare?characterEncoding=UTF-8"/>
<property name="username" value="AAA"/>
<property name="password" value="BBB"/>
</bean>
pom.xml:
- 春季版 3.2.0.RELEASE
本地开发环境:
- Intellij(配置中设置的环境变量)
- Tomcat7
OpenShift 环境:
- Tomcat 7 (JBoss EWS 2.0)
- OpenShift 设置的环境变量。我使用“env”命令确认了这些值。
OPENSHIFT_MYSQL_DB_PORT=3306
OPENSHIFT_MYSQL_DB_HOST=127.3.xxx.yyy
OpenShift 上的消息(注意服务器和端口为空):
org.apache.commons.dbcp.SQLNestedException:无法创建 JDBC 驱动程序 用于连接 URL 的“com.mysql.jdbc.Driver”类 'jdbc:mysql://:/prepare?characterEncoding=UTF-8'
【问题讨论】:
-
在您的 repo 的 .openshift/config/context.xml 文件中预先配置了数据源。您可以使用它或作为示例。
-
这可能是一个可行的解决方案。遗憾的是,我不知道如何将我的 sessionFactory bean 转换为使用 context.xml 中的资源。
-
Nam,我实现了你的想法。见答案。谢谢。
标签: spring jboss environment-variables web.xml openshift