1

我的工作有问题,我需要一些帮助。我有一个 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 地址放在那里,因为我的客户可以更改服务。不经常,但有可能。

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

4

2 回答 2

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在运行时更改,您应该injectWebServiceTemplatebean 转换为某个服务,该服务从数据库中获取属性并setDefaultUri手动调用。它适用于任何属性提供者:数据库、文件更新、Web UI、JMX 等。

于 2014-07-18T13:45:00.503 回答
0

看一下DestinationProvider接口。我认为这就是你所需要的。

于 2014-07-19T13:31:30.663 回答