Как я могу изменить порт прокси Spring JaxWs? - PullRequest
0 голосов
/ 26 августа 2011

У меня есть работающий клиент веб-службы на основе Spring, определяемый как:

<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.

Могу ли я динамически изменить привязку?Как я могу решить эту проблему, все еще используя возможности Spring для клиентов WS?

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Я просто изменил адрес конечной точки прокси:

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

Как видно выше, прокси, возвращаемый Spring, может быть преобразован в BindingProvider (как обычный прокси JaxWs).

Если кто-то примет это, остерегайтесь проблем с синхронизацией.

0 голосов
/ 13 июля 2016

Я настроил в xml, как и вы. После, в postConsruct установите конечную точку и вызовите afterPropertiesSet:

 @Autowired
 private JaxWsPortProxyFactoryBean myService;

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