Acessando serviços da Web idênticos usando o mesmo cliente
Pergunta
Tenho alguns serviços da Web e estou criando um cliente da Web usando o WS-Import.
Ao criar o cliente, tenho esta linha:
MyServiceService service = new MyServiceService();
Funciona bem como está.
Eu tenho o mesmo serviço da web em execução em outro servidor e me perguntei se poderia acessá -los usando o mesmo cliente. É possível alterar o URL WSDL do cliente? O Ctrl-Space no Eclipse me dá 2 parâmetros que posso entrar no MyServiceService, que são URL ARG0 e QNAME ARG1. É isso que estou procurando? E se for esse o caso, o que devo colocar no QNAME, pois não encontrei nenhum javadoc associado e não o encontrei no Google nem
Obrigado e cumprimentos, KRT_MALTA
Solução
Sim, você pode fazer isso. Como você suspeitava, você precisa usar o construtor com esta assinatura Isso é gerado na sua classe de serviço. Como você pode ver, são necessários dois argumentos: um qname e um URL.
O QNAME é um pouco complicado de determinar. Você deve olhar para o código-fonte gerado para o construtor não-Arg da sua classe de serviço (e o atributo @service na classe). Se você fizer isso, poderá descobrir o que o QNAME que não usa o construtor não-Arg. Apenas construa um qname com esses mesmos valores e use isso.
O URL é fácil: basta usar o URL WSDL que você deseja acessar.