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 use set DATABASE_URL=postgres://postgres:huang@heroku.com/yan (windows) を設定します。

しかし、ローカルで実行すると、エラーが発生しました: ServletContext リソース [/WEB-INF/spring/applicationContext.xml] で定義された名前 'dataSource' を持つビーンを作成しています: ビーンの初期化に失敗しました。ネストされた例外は o rg.springframework.beans.factory.BeanExpressionException: 式の解析に失敗しました。ネストされた例外は 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

ええ、私はそれを修正します!!!

公式文書に誤りがあります!!!

「@」記号を削除するだけで機能します

この春の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 に答える