Alterando a URL em um Cliente de Serviço da Web Gerado com wsimport

Estou tentando escrever um módulo para um aplicativo Java que acessa um serviço da web descrito pelo WSDL. O WSDL de origem foi baixado diretamente do que eu acredito ser um serviço da Web ASP.NET; o URL do serviço termina em uma extensão .asmx e a visualização do URL do serviço em um navegador mostra um link que pode ser usado para baixar o WSDL.

Um requisito essencial para mim é poder alternar o URL do serviço sem recompilar. O URL fornecido a mim é obviamente um servidor de teste e eu sei que na produção receberei um URL de produção para usar. Eu também gostaria de poder criar um servidor simulado para teste e manter a capacidade de especificar um novo URL no futuro sem recompilar se o serviço for movido. Na verdade, eu gostaria que uma instalação do nosso aplicativo pudesse instanciarmúltiplo instâncias do serviço da web em URLs diferentes.

Mas minha concepção não parece coincidir com o que a ferramenta wsimport está fazendo por mim. Seguindo a resposta de f1shaqui, Gerei código Java do meu WSDL baixado com este comando:

wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl

O que eu acho é que o código gerado tem uma referência codificada para o meu wsdlFile.wsdl baixado, que contém a URL do serviço. Nosso aplicativo não será executado de forma que seja configurado editando um arquivo WSDL em tempo de execução. Preciso ter o código compilado no meu aplicativo no momento da compilação e o URL do serviço definido no momento da instanciação.

Não sei ao certo por que o WSDL precisa ser analisado em tempo de execução; entendi que o WSDL fornece informações suficientes para gerar código que pode acessar o serviço da web; portanto, não tenho certeza do que está fornecendo para o código gerado, exceto o URL do serviço, e não sei por que o URL do serviço não é fornecido no um construtor ou configurável por meio de um método na classe de serviço da web gerada. Eu devo estar esquecendo alguma coisa.

Qual é a prática geral para esse cenário? A maioria das pessoas gera novamente o código para cada URL individual que eles usarão? O código é gerado em tempo de execução? Existe outra ferramenta WSDL que eu possa usar que crie código de cliente com uma URL configurável?

questionAnswers(2)

yourAnswerToTheQuestion