Загрузить ресурсы jndi в контекст: свойство-заполнитель - PullRequest
2 голосов
/ 25 июля 2011

У меня есть следующий конфигурационный файл spring:

<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" />

Обратите внимание, как они упорядочены, некоторые находятся в пути к классам, а некоторые в файловой системе.

Теперь к миксу Iхочу добавить файл свойств, загруженный через jndi.Я надеялся, что смогу сделать

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

К сожалению, это не работает, Spring не поддерживает префикс jndi ... AFAIK.

Итак, я могу что-то сделатькак это?

И если я не могу, какова моя альтернатива.Я не хочу преобразовывать всю свою конфигурацию в полностью заполненный конфигуратор-заполнитель для свойства.

Ответы [ 2 ]

1 голос
/ 14 октября 2013

Не уверен, что вы на самом деле имеете в виду под "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 голосов
/ 25 июля 2011

<context:property-placeholder> имеет атрибут properties-ref, который может указывать на компонент типа Properties. Таким образом, вы можете загрузить Properties в свой код и объявить <context:property-placeholder>, используя их.

...