Metro User Guide: 2.10. Developing client application with locally packaged WSDL
当我部署.war并使用soapUI来验证Web服务时,它会卡住尝试访问schemaLocation http:// somehost:8080 / CMDB / schemas / common / 1.0 / CMDBCommonTypes.xsd
架构和wsdl都在Eclipse中验证(使用Eclipse的XML Catalog工具). (如果有帮助的话,我可以发布我的jax-ws-catalog.xml和相关的xsd和wsdl的内容.
谷歌搜索发现了许多其他问题,jax-ws-catalog.xml无法在Metro堆栈中运行.
有没有人在Metro中使用jax-ws-catalog.xml?
解决方法
您提到您正在使用WAR,但在WAR中,jax-ws-catalog.xml的位置取决于您是尝试将其作为WS客户端还是作为WS Endpoint发布者(服务器)进行访问.
如果您从WAR中访问外部Web服务,那么您的jax-ws-catalog.xml需要进入app.war / WEB-INF / classes / Meta-INF目录,
或者,如果您在应用程序中部署了合同第一个Web服务,并且具有@WSDLLocation批注,那么对于该WSDL,jax-ws在app.jar / Meta-INF中查找jax-ws-catalog.xml
因此对于客户端WSDL位置app.war / WEB-INF / classes / Meta-INF / jax-ws-catalog.xml
使用@WSDLLocation注释合同第一个WS端点app.war / Meta-INF
如果要同时执行这两个操作(即发布(合同优先)以及使用Web服务),则需要在两个位置放置jax-ws-catalog.xml WSDL,即app.jar / WEB-INF / classes / Meta -INF和app.jar / Meta-INF
我已经在我的许多项目中成功使用了上述方法,这些项目同时发布和使用Web服务,我可以保证它按预期工作.