2012-02-05 3 views
0

作業中のWAR WARをOSGI環境に移動しようとしています(glassfish 3.1と青写真3.0.5)。 アプリケーションの負荷の性質は、このように、ディスクからファイル:PropertyPlaceholderConfigurerがディスク上のプロパティファイルを見つけられません

<bean id="myProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="${my_conf}/my.properties"/> 
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> 
</bean> 

私は${my_conf}/my.propertiesが既存のパス(C:\ confに\のmy.properties)に変換されていることをデバッガで見

私はプロパティを使用jms.url次のBean宣言

<amq:broker useJmx="false" persistent="false" brokerName="embeddedbroker"> 
    <amq:transportConnectors> 
     <amq:transportConnector uri="tcp://${jms.url}"/> 
     <amq:transportConnector uri="vm://embeddedbroker" /> 
    </amq:transportConnectors> 
</amq:broker> 

my.propertiesで定義されていると展開に、私は例外を取得"Could not resolve placeholder ${jms.url}"

なぜ失敗するのですか?ディスク上のファイルからプロパティをロードする別の方法はありますか?

はそのOSGi環境ますので

+0

可能な重複[質問](http://stackoverflow.com/questions/4779572/could-not-resolve-placeholder-problem)。デバッガで表示されるものは、別のapplicationContext.xmlの別のBeanによって読み込まれる可能性があります。 – Ravi

+0

ありがとうございました。存在しないファイルへのロケーションパスを設定しようとしましたが、例外が発生しませんでした。ハードコードされたパスをプロパティファイルに設定しようとしましたが、何も変更されませんでした。それは非osgi戦争で働いたことを覚えてください – lili

答えて

0

解決策ではなく、私の問題の説明です。 この問題はこのbug in spring 3 and osgiに関連しています。

私はそれを理解するためにデバッグレベルにスプリングログをオープンしなければなりませんでした。

0

に感謝し、あなたのアプリケーションに追加し、バネのOSGiコアジャーが必要になります。このlinkを見て、OSGIフレームワークのプロパティプレースホルダを設定してください。

+0

ありがとうございます。この投稿によると、私はosgix:cm-propertiesを使う必要はないと思った。[osgi-spring-config](http://tech-tauk.blogspot.com/2009/12/osgi-spring-configuration-admin -dynamic.html)。私が間違っている? – lili

+0

spring-osgi-coreを使用しない場合、あなたのcontext.xmlにosgixタグを使用することはできません。これらのスキーマはspring-osgi-coreにあります – Ravi

+0

私はosgixタグを使用していません。 beanとamqのみを使用します。私はspring-osgi-core jarと他の多くのspring jarを使用していますが、問題の解決には役立ちません – lili

関連する問題