2012-06-23 82 views
0

我想部署一個java應用程序到Heroku。heroku:java.lang.IllegalStateException:無法處理(64)'@'

它使用環境變量如postgres的:// FOO:[email protected]/hellodb到配置數據庫中的彈簧的applicationContext.xml https://devcenter.heroku.com/articles/spring-mvc-hibernate#modify_database_configuration

我按照文件,CONFIG它,並設置DATABASE_URL使用設置DATABASE_URL = postgres:// postgres:[email protected]/yan(windows)。

但是,當我在本地運行它,我得到了一個錯誤: 創建與ServletContext的資源定義名稱「數據源」豆[/WEB-INF/spring/applicationContext.xml]:豆的初始化失敗;嵌套的異常是o rg.springframework.beans.factory.BeanExpressionException:表達式解析fai led;嵌套的例外是java.lang.IllegalStateException:無法處理(64) '@'

我的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>` 

似乎Spring容器無法處理 '@' 符號,但我真的不知道該如何處理它!我在谷歌搜索,但我有什麼。

有誰知道如何處理它?謝謝!

+0

什麼春天的版本你正在用嗎?任何機會,你可以發佈一個完整的示例應用程序在github或類似的地方,以便於repro? –

+0

謝謝,我自己修復它.. – kaka2008

回答

0

是的,我修好了!

官方文檔有錯誤!

我只是刪除了「@」符號,和它的作品

這個春天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> 

我會寫信來報告這個錯誤