Fala pessoal!
Estamos desenvolvendo um projeto no qual nós precisamos consumir determinados Web Services que já estão prontos. Para facilitar essa comunicação, resolvemos automatizar a criação desses clientes utilizando o NetBeans, o que funciona bem legal. Para fazer essa criação automatica de cliente Web Service no NetBeans, fizemos os seguintes passos:
Projeto > Novo > Serviços Web > Cliente para Serviço Web
Quando criamos os clientes para Web Service, nós informamos ao NetBeans o local (URL) do WSDL que queremos criar as classes. A partir do WSDL é gerado tudo e conseguimos consumir com os WebServices apenas com uma chamada de método.
Mas agora que vem o problema.
Quando geramos o cliente, o NetBeans gera as classes e coloca implicitamente que a URL para chamada dos WebServices é a que usamos para especificar o WSDL no momento da geração das classes. Também existe a possibilidade via código, de mudar essa URL para um outro local onde também estejam publicados o WebServices. Vejam o código abaixo que exemplifica melhor o que eu quero dizer:
NoticiasService faceService = new NoticiasService();
NoticiasPortType service = faceService.getNoticiasPort();
service.getNoticias();
No código acima, as classes geradas (NoticiasService.java, NoticiasPortType.java…) irão consumir os WebServices que estão publicados na mesma URL do WSDL que usamos para gerar essas classes.
Se por um acaso, os WebServices mudarem de servidor ou de URL, podemos acessar os WebServices da seguinte maneira:
NoticiasService faceService = new NoticiasService(new URL("http://outrolocal.com.br/services/services.wsdl"));
NoticiasPortType service = faceService.getNoticiasPort();
service.getNoticias();
Vejam que eu especifiquei no construtor do serviço que eu quero usar outro servidor. Só que o problema está justamente aí. Mesmo eu especificando que eu quero consumir os WebServices em outro servidor, as classes geradas continuam consumindo os WebServices do servidor o qual usamos o WSDL para gerar as classes de comunicação.
Alguém já passou por esse problema?