运行时期间使用Metro / JAX-WS / WSIT的WSDL请求

在运行时,JAX-WS获取SOAP端点的WSDL,即使它已经在IDE中运行了wsimport。 此行为如下所示: http : //jax-ws.java.net/faq/index.html#wsdl_at_runtime

客户端在运行时可以检索的元数据量是否有限制? 如果是这样,有没有办法增加这个限制?

请注意,我不是指在IDE中运行wsimport; 工作正常。 我特别谈到在运行时获取WSDL元数据。

花了很长时间在这个问题上,我们提出了一个解决方案。 我在Netbeans的Metrofish环境中工作。 如果我们将WEB-INF复制到源包文件夹,一切正常。 Java运行时现在可以绑定到jaxws-catalog.xml文件中的相对路径。 没有复制该文件夹,它将无法正常工作。

Metro / JAX-WS-ri在运行时期间需要WSDL。 有关说明,请参阅http://jax-ws.java.net/faq/index.html#wsdl_at_runtime 。

要防止在运行时获取WSDL,您应该将其打包为资源,并在实例化代理工厂时提供它:

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

基于您参考Metro FAQ的事实,您显然已经了解了为什么在运行时仍需要WSDL副本的原因。 重申FAQ,原因是能够支持没有相应Java注释的WS- *扩展。

Metro目前无法禁用对扩展的支持,因此无法在运行时绕过对WSDL的需求。