Spring PropertyPlaceholderConfigurer не заменяет заполнитель - PullRequest
3 голосов
/ 04 августа 2011

Я хочу передать URL WSDL для внутреннего веб-сервиса в мой Spring beans.xml динамически, используя PropertyPlaceHolderConfigurer.

Вот сценарий:

Мое веб-приложение развернуто в WebLogic 10.3. URL WSDL содержится в файле свойств, который находится вне моего приложения (непосредственно в соответствующей папке домена, а мое приложение находится в папке autodeploy ). Я устанавливаю местоположение этого файла свойств в файле setDomainEnv.cmd моего домена, как показано ниже:

set JAVA_PROPERTIES=%JAVA_PROPERTIES% %CLUSTER_PROPERTIES% -Dproperty.file.path.config=%DOMAIN_HOME%\Service.properties

Вот что содержит мой файл Service.properties:

Service.WSDL.PATH=http://localhost:8088/mockServiceSoap?WSDL

Конфигурация My Spring beans.xml: ----

<bean id="file.path" class="java.lang.System" factory-method="getProperty">
      <constructor-arg index="0"><value>property.file.path.config</value></constructor-arg>
</bean>

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
       <property name="location" ref="file.path"/> 
</bean>

<bean id="myServiceId" class="com.test.service.ServiceImpl">
    <property name="myServiceSoap">
    <ref bean="myService"/>
    </property>
</bean>

<bean id="myService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"> 
   <property name="serviceInterface" value="com.test.service.ServiceSoap"/> 
   <property name="wsdlDocumentUrl" value="${Service.WSDL.PATH}"/>
</bean> 

Я включил журнал DEBUG специально для PPC, и вот что я увидел в журнале приложений:

INFO  org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 178 - Loading properties file from URL [file:D:/bea10.3/user_projects/domains/my_domain/Service.properties]

Итак, похоже, что хотя файл Service.properties загружается PPC, ${Service.WSDL.PATH} НЕ заменяется.

Что я здесь не так делаю?

Кроме того, как я могу узнать, пытался ли PPC заменить значение заполнителя и каким значением? Я надеялся, что файл журнала будет содержать эту информацию, но там ничего не было.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 29 сентября 2011

Я выяснил, что PropertyPlaceholderConfigurer должен быть объявлен первым в файле контекста приложения, в противном случае нет гарантии порядка загрузки.Мне потребовалось несколько часов, чтобы понять это.

Попробуйте переместить bean-компонент file.path в свойство location PropertyPlaceHolderConfigurer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...