2011-08-26 38 views
0

我已经基于Spring工作Web服务客户端,其定义为:如何更改Spring JaxWs代理的端口?

<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设施?

回答

1

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

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

正如上面看到的,春回可浇铸为BindingProvider(像一个正常的JAXWS代理)代理。

如果有人采用这种方式,请注意同步问题。

0

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

@Autowired 
private JaxWsPortProxyFactoryBean myService; 

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