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. Я думаю, это то, что вам нужно.

Другие вопросы по тегам