Solicitações WSDL com Metro / JAX-WS / WSIT durante o tempo de execução

Durante o tempo de execução, o JAX-WS busca o WSDL de um nó de extremidade SOAP, mesmo que ele já tenha executado o wsimport no IDE. Esse comportamento é ilustrado aqui: http://jax-ws.java.net/faq/index.html#wsdl_at_runtime

Existe um limite para a quantidade de metadados que um cliente pode recuperar durante o tempo de execução? Em caso afirmativo, existe uma maneira de aumentar esse limite?

Por favor, note que não estou me referindo a executar o wsimport dentro do IDE; isso funciona bem. Eu estou falando especificamente sobre buscar os metadados WSDL durante o tempo de execução.

Depois de muitas longas horas gastas com esse problema, chegamos a uma solução. Eu estava trabalhando em um ambiente Glassfish com Metro no Netbeans. Se nós copiámos o WEB-INF para a pasta de pacotes de código-fonte, tudo funcionou. O Java runtime agora pode ser ligado ao caminho relativo no arquivo jaxws-catalog.xml. Sem copiar essa pasta, não funcionaria.

O Metro / JAX-WS-ri precisa do WSDL no tempo de execução, período. Veja http://jax-ws.java.net/faq/index.html#wsdl_at_runtime para uma explicação.

Para evitar a busca do WSDL no tempo de execução, você deve empacotá-lo como um recurso e fornecê-lo ao instanciar o proxy factory:

new XYZ_Service( XYZ_Service.class.getResource( "/path/to/your/XYZ.wsdl" ), new QName( "NameSpace", "ServiceName" ) ); 

Com base no fato de você se referir ao FAQ do Metro, você obviamente leu sobre as razões pelas quais uma cópia do WSDL ainda é necessária em tempo de execução. Para reiterar o FAQ, o motivo é poder suportar extensões WS- * que não tenham annotations Java correspondentes.

Atualmente, não há possibilidade no Metro de desabilitar o suporte a extensões e, consequentemente, não há como ignorar a necessidade de um WSDL em tempo de execução.