問題: コンテキスト 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 のメッセージ (サーバーとポートが null であることに注意してください):
org.apache.commons.dbcp.SQLNestedException: 接続 URL 'jdbc:mysql://:/prepare?characterEncoding=UTF-8' のクラス 'com.mysql.jdbc.Driver' の JDBC ドライバーを作成できません