【问题标题】:openshift mysql connection NumberFormatException with Tomcat 7 (JBoss EWS 2.0)openshift mysql连接NumberFormatException与Tomcat 7(JBoss EWS 2.0)
【发布时间】:2014-06-11 21:57:20
【问题描述】:

我是 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:由于基础异常,无法加载连接类:'java.lang.NumberFormatException:对于输入字符串:“${env.OPENSHIFT_MYSQL_DB_PORT}”'

以下是我的 catrige/gear 配置

  • Mysql 5.1
  • Tomcat 7 (JBoss EWS 2.0)

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

【问题讨论】:

    标签: java mysql spring tomcat openshift


    【解决方案1】:

    对于像我这样公认的 asnwer 不适合他们的人,我使用了这个answer

    我只是放了

    <bean id="propertyPlaceholderChttps://stackoverflow.com/a/3965727/1460591onfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"></bean>
    

    通过添加这样的变量进入应用程序上下文

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

    一切都很好

    【讨论】:

      【解决方案2】:

      问题在于 ${env.OPENSHIFT_MYSQL_DB_HOST} 这样的表达式的使用。

      这些是操作系统环境变量,正如您在异常中看到的那样,Spring 没有尝试读取这些系统环境变量的值,而是尝试将其转换为数字。

      尝试使用#{systemEnvironment[OPENSHIFT_MYSQL_DB_HOST]} 之类的方法来读取操作系统环境变量。这是读取系统环境变量OPENSHIFT_MYSQL_DB_HOST的表达式。

      【讨论】:

        猜你喜欢
        • 2016-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多