我是openshift的新手。我创建了一个带有spring security的示例应用程序,并尝试在其中进行部署。我的 spring-database.xml 片段如下所示。
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}" />
<property name="username" value="${env.OPENSHIFT_MYSQL_DB_USERNAME}" />
<property name="password" value="${env.OPENSHIFT_MYSQL_DB_PASSWORD}" />
</bean>
我在云环境中遇到异常。
无法获取JDBC连接;嵌套异常是com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:由于基础异常,无法加载连接类:&#39; java.lang.NumberFormatException:对于输入字符串:&#34; $ {env.OPENSHIFT_MYSQL_DB_PORT}&# 34;&#39;
以下是我的catrige / gear配置
任何解决方案如何克服这个问题?
答案 0 :(得分:1)
问题是使用像${env.OPENSHIFT_MYSQL_DB_HOST}
这样的表达式。
这些是操作系统环境变量,正如您在异常中看到的那样,Spring并没有尝试读取这些系统环境变量的值,而是试图将其转换为数字。
尝试#{systemEnvironment[OPENSHIFT_MYSQL_DB_HOST]}
之类的内容来阅读操作系统环境变量。这是一个表达式,用于读取名为OPENSHIFT_MYSQL_DB_HOST
的系统环境变量。
答案 1 :(得分:0)
对于像我这样的人来说,受伤的asnwer对他们不起作用我使用了answer
我只是把
<bean id="propertyPlaceholderChttps://stackoverflow.com/a/3965727/1460591onfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"></bean>
进入应用程序上下文,添加如此
的varibales<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/${OPENSHIFT_APP_NAME}" />
<property name="username" value="${OPENSHIFT_MYSQL_DB_USERNAME}" />
<property name="password" value="${OPENSHIFT_MYSQL_DB_PASSWORD}" />
</bean>
这一切都很好