在运行时,JAX-WS获取SOAP端点的WSDL,即使它已经在IDE中运行了wsimport。此行为如下所示:http://jax-ws.java.net/faq/index.html#wsdl_at_runtime
客户端在运行时可以检索的元数据量是否有限制?如果是这样,有没有办法增加这个限制?
请注意,我不是指在IDE中运行wsimport;工作正常。我特别谈到在运行时获取WSDL元数据。
答案 0 :(得分:1)
在这个问题上花了很长时间后,我们想出了一个解决方案。我在Netbeans的Metrofish环境中工作。如果我们将WEB-INF复制到源包文件夹,一切正常。 Java运行时现在可以绑定到jaxws-catalog.xml文件中的相对路径。没有复制该文件夹,它将无法正常工作。
答案 1 :(得分:1)
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" ) );
答案 2 :(得分:0)
基于您参考Metro FAQ的事实,您显然已经了解了为什么在运行时仍需要WSDL副本的原因。重申FAQ,原因是能够支持没有相应Java注释的WS- *扩展。
Metro目前无法禁用对扩展的支持,因此无法在运行时绕过对WSDL的需求。