WebService动态配置带有defaultUri参数的WebServiceTemplate

时间:2014-07-18 13:27:54

标签: spring-ws webservicetemplate

我的工作有问题,我需要一些帮助。我有一个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>

我完美的中心是用数据库中的某个值替换 value =“?????????????”或者在我的应用程序中为变量添加值。有没有办法做到这一点?

我真的需要一种动态方式将WSDL地址放在那里,因为我的客户端可以更改服务。不经常,但这是可能的。

有谁知道我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用<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#beans-factory-placeholderconfigurer

<强>更新

如果要在运行时更改defaultUri,则应injectWebServiceTemplate bean添加到某个服务,该服务将获取该属性,例如从DB手动调用setDefaultUri。它适用于任何属性提供者:DB,文件更新,Web UI,JMX等。

答案 1 :(得分:0)

查看DestinationProvider界面。我认为这就是你所需要的。

相关问题