我有一个基于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工具的同时解决这个问题?
答案 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();
}