2011-07-25 8 views
2

I、次の春のconfigファイルを持っている:彼らは注文方法ロードJNDIリソース:プロパティ・プレースホルダー

<context:property-placeholder order="2" 
    ignore-unresolvable="true" ignore-resource-not-found="true" 
    location="file:///${user.home}/application.properties" /> 
<context:property-placeholder order="1" 
    ignore-unresolvable="true" ignore-resource-not-found="true" 
    location="file:///C:/Services/Tomcat 6.0/cms/application.properties" /> 
<context:property-placeholder order="3" 
    location="classpath:com/afrozaar/cms/service/application.properties" /> 

お知らせを、いくつかのクラスパス上にあり、いくつかは、ファイルシステム上にあります。

今や、jndiを介してロードされたプロパティファイルを追加したいと思います。私は残念ながら、これは私の知る限り...春は、JNDIプレフィックスをサポートしていない、動作しない

<context:property-placeholder order="2" 
    ignore-unresolvable="true" ignore-resource-not-found="true" 
    location="jndi:url/application.properties" /> 

を行うことができるように期待していました。

だから、私はこれを何かできますか?

もし私が私の選択肢ではないことができれば。私は私の全体の構成を完全なビーンベースのプロパティプレースホルダ保持者に変換する必要はありません。

答えて

0

<context:property-placeholder>は、PropertiesのBeanを指すことができるproperties-ref属性を持ちます。したがって、Propertiesをコードにロードし、それらを使用して<context:property-placeholder>を宣言することができます。

+0

わからない... – Wouter

1

"jndi:url/application.properties"とはどういう意味が分かりませんか。 "url/application.properties"という名前のリソースエントリにプロパティファイルへのパスを設定するとします。

あなたは、次のスニペットでこれを達成することができます:これはどのように役立つか

<bean class="org.springframework.beans.factory.config.PlaceholderConfigurerSupport"> 
<property name="location"> 
    <bean id="publisherLocal" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="url/application.properties" /> 
    <property name="expectedType" value="java.lang.String" /> 
    </bean> 
</property> 
</bean> 
+0

私が使用していることを回避することができるように期待していた「JNDIを:」A内のリソースのプレフィックスclasspath:prefixを使用するのと同様の方法です。 –