0

我正在尝试将 java 应用程序部署到 Heroku。

它使用环境变量(例如 postgres://foo:foo@heroku.com/hellodb)在 spring applicationcontext.xml https://devcenter.heroku.com/articles/spring-mvc-hibernate#modify_database_configuration中配置数据库

我按照文档,配置它,并设置DATABASE_URL使用set DATABASE_URL=postgres://postgres:huang@heroku.com/yan(windows)。

但是当我在本地运行它时,我得到一个错误: 在ServletContext资源[/WEB-INF/spring/applicationContext.xml]中定义名称为'dataSource'的bean:初始化bean失败; 嵌套异常是 o rg.springframework.beans.factory.BeanExpressionException: Expression parsing fai led; 嵌套异常是 java.lang.IllegalStateException: 无法处理 (64) '@'

我的春天 xml 是这样的:

    `<bean class="java.net.URI" id="dbUrl">
    <constructor-arg value="#{systemEnvironment['DATABASE_URL']}" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="url"
        value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + @dbUrl.getPath() }" />
    <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }" />
    <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }" />
</bean>`

似乎弹簧容器无法处理'@'符号,但我真的不知道如何处理它!我在谷歌搜索,但我得到了任何东西。

有谁知道如何处理它?谢谢!

4

1 回答 1

0

是的,我修好了!!!

官方文档有错误!!!

我只是删除“@”符号,它的工作原理

这个spring xml是这样的:

<bean class="java.net.URI" id="dbUrl">
    <constructor-arg value="#{systemEnvironment['DATABASE_URL']}" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
   <property name="url"
       value="#{ 'jdbc:postgresql://' + dbUrl.getHost() + dbUrl.getPath() }" />
   <property name="username" value="#{ dbUrl.getUserInfo().split(':')[0] }" />
   <property name="password" value="#{ dbUrl.getUserInfo().split(':')[1] }" />
</bean>

我会写信报告这个错误

于 2012-06-25T05:41:58.157 回答