WebService config WebServiceTemplate с параметром defaultUri динамически
У меня проблема с работой, мне нужна помощь. У меня есть конфигурация WebServiceTemplate, как показано ниже:
<bean id="serviceTest" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="jaxbMarshallerOpe" />
<property name="unmarshaller" ref="jaxbMarshallerOpe" />
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
</bean>
</property>
<property name="interceptors">
<list>
<ref bean="soapMessageInterceptor" />
</list>
</property>
<property name="defaultUri" value="?????????????" />
<constructor-arg ref="messageFactory" />
</bean>
Моя идеальная цена - заменить значение ="?????????????" с некоторым значением из базы данных или положить туда значение из переменной в моем приложении. Есть способ сделать это?
Мне действительно нужен динамический способ поместить туда адрес WSDL, потому что мой клиент может изменить службу. Не часто, но это возможно.
Кто-нибудь знает, как мне этого добиться?
2 ответа
Вы можете использовать <context:property-placeholder>
разрешить реальную стоимость из предоставленного Properties
для этого <context:property-placeholder>
:
<property name="defaultUri" value="${web.service.url}" />
Смотрите другие документы по этому вопросу: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html
ОБНОВИТЬ
Если вы собираетесь изменить defaultUri
во время выполнения вы должны inject
WebServiceTemplate
bean-компонент для некоторого сервиса, который извлекает свойство, например, из DB и вызывает setDefaultUri
вручную. Он будет работать для любого поставщика свойств: БД, обновление файла, веб-интерфейс, JMX и т. Д.
Взгляните на интерфейс DestinationProvider. Я думаю, это то, что вам нужно.