使用Tomcat 7的openhift mysql连接NumberFormatException(JBoss EWS 2.0)

时间:2014-04-26 02:05:58

标签: java mysql spring tomcat openshift

我是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配置

  • Mysql 5.1
  • Tomcat 7(JBoss EWS 2.0)

任何解决方案如何克服这个问题?

2 个答案:

答案 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>

这一切都很好