2011-08-26 25 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(); 
}