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

时间:2010-11-30 15:14:24

标签: java glassfish jax-ws java-metro-framework wsit

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

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

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

3 个答案:

答案 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的需求。