2012-02-05 48 views
0

我正在嘗試將工作的Spring WAR移動到OSGI環境(在glassfish 3.1和藍圖,spring 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.urlmy.properties定義在接下來的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> 

和部署我得到一個異常"Could not resolve placeholder ${jms.url}"

爲什麼失敗?有沒有另一種方法來從磁盤上的文件加載屬性?

謝謝

+0

可能重複[問題](http://stackoverflow.com/questions/4779572/could-not-resolve-placeholder-problem)。您在調試器中看到的可能會由另一個應用程序中的另一個bean加載.Context.xml – Ravi 2012-02-06 05:17:09

+0

謝謝。我試圖設置一個位置路徑到不存在的文件,並沒有得到一個異常。我試圖設置一個硬編碼的路徑到屬性文件,並沒有改變。請記住它在非osgi戰爭中工作 – lili 2012-02-06 09:05:04

回答

0

這不是一個解決方案,而是我的問題的解釋。 問題與此bug in spring 3 and osgi有關。

我不得不打開春天日誌調試級別瞭解它。

0

自OSGi環境,則需要彈簧OSGi的核心的jar添加到您的應用程序。看看這個link爲OSGI框架配置屬性佔位符。

+0

謝謝。我想我不必使用osgix:cm-properties,根據這篇文章:[osgi-spring-config](http://tech-tauk.blogspot.com/2009/12/osgi-spring-configuration-admin -dynamic.html)。我錯了嗎? – lili 2012-02-06 17:27:08

+0

如果你不使用spring-osgi-core你將無法在你的context.xml中使用osgix標籤,因爲這些模式位於spring-osgi-core – Ravi 2012-02-06 17:40:00

+0

我沒有使用osgix標籤,而我只使用bean和amq。我正在使用spring-osgi-core jar和許多其他彈簧罐,但它不能幫助我解決所描述的問題 – lili 2012-02-07 07:52:22

相關問題