如何更改Spring JaxWs代理的端口?

时间:2011-08-26 08:54:56

标签: spring jax-ws

我有一个基于Spring的工作Web服务客户端,定义为:

<bean id="myService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean">
    <property name="wsdlDocumentUrl"  value="classpath:/ex/MyService.wsdl" />
    <property name="namespaceUri"     value="http://ex.tld/namespace" />
    <property name="serviceName"      value="MyService" />
    <property name="portName"         value="MyServicePort01" />
    <property name="serviceInterface" value="ex.MyService" />
</bean>

我需要在不同端点列表上访问相同的服务。由于列表是动态的,我不能简单地为此配置几个Spring JaxWsPortProxy bean。

我可以动态更改绑定吗?如何在为WS客户端利用Spring工具的同时解决这个问题?

2 个答案:

答案 0 :(得分:1)

我只是更改了代理的端点地址:

((BindingProvider)myService).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://new/endpoint/address");

如上所示,Spring返回的代理可以转换为BindingProvider(就像普通的JaxWs代理一样)。

如果有人采用此方法,请注意同步问题。

答案 1 :(得分:0)

我在xml中配置,就像你一样。 之后,在postConsruct中设置端点,并调用afterPropertiesSet:

 @Autowired
 private JaxWsPortProxyFactoryBean myService;

 @PostConstruct
 public void init() {
   myService.setEndpointAddress("http://new/endpoint/address");
   myService.afterPropertiesSet(); 
}