3
respostas

webservice dependente do caminho do arquivo wsdl

Boa Noite,

Estou com uma duvida, ao gerar as classes pelo "wsimport" o jdk cria todas as classes perfeitamente e eu consigo consumir o WS tranquilamente, porem estou trabalhando em um projeto que não podemos colocar a url para a geração das classes pois até para acessar o wsdl é preciso estar logado, a solução é simples, baixar o wsdl.

baixei o wsdl coloquei o caminho dele ao usar o "wsimport", porem as classes criadas estão totalmente dependentes do wsdl (e do caminho completo para acessa-lo), na classe: "ServerGamesWsService" faz referencia ao caminho completo do wsdl:

url = new URL("file:/E:/java/workspaces/webservices/Jax-ws/teste_1/wsGamesExemplo/src/ws/teste/wsGamesExemplo.xml");

o que vejo como um problema pois ao gerar o war ou passar o projeto para outra maquina o mesmo provavelmente não terá mais o mesmo caminho.

é possivel fazer essa classe abrir o "xml" por um caminho relativo, ou gerar as classes sem essa dependencia????

OBS: o Prj do meu trabalho não é esse, eu fiz um exemplo rápido e simples, apenas para postar meu problema.

OBS 2: estou conseguindo acessar e consumir o serviço tranquilamente, mas ao mudar o xml de pasta exibe o seguinte erro:

Falha ao acessar o WSDL em file:/E:/java/workspaces/webservices/Jax-ws/teste_1/wsGamesExemplo/src/ws/teste/wsGamesExemplo.xml. Ele falhou com: 
    E:\java\workspaces\webservices\Jax-ws\teste_1\wsGamesExemplo\src\ws\teste\wsGamesExemplo.xml (O sistema não pode encontrar o arquivo especificado).

fiz isso apenas para teste

3 respostas

Oi Allan,

no seu exemplo new URL(caminho) não daria para usar um caminho relativo para resolver?

Outra opção seria extrair o caminho em um arquivo de configuração (por exemplo plugin do Jax-Ws do Maven tem opções para tal, mas não sei se vc usa maven para buildar o seu projeto). Ao mudar o ambiente, vc muda apenas o arquivo de configuração, o seu código não depende disso.

Tudo bem?

abs

Essa classe foi gerada automaticamente pelo "wsimport", não pensei em alterar a classe amnualemnte, achei q tivesse uma forma de fazer o "wsimport" gerar as classes com o caminho do wsdl dinamico.

quanto ao maven, não esta configurado e infelizmente não podemos configurar o analista responsável por esse projeto vetou, por alguma razão q desconheço(ele nunca deu uma concreta na verdade) ele não gosta do maven........

Oi Allan,

vc também pode definir o caminho programaticamente através do BindingProvider. Aqui tem um exemplo:

http://tugdualgrall.blogspot.com.br/2009/02/jax-ws-how-to-configure-service-end_17.html

Nesse exemplo também tem a forma de definir o local do WSDL dinamicamente.

Pelo que sei o wsimport (na linha de comando) não tem uma opção para passar a URL.

abs