Dea*_*lze 6 java java-metro-framework jax-ws
我在我的.war文件中添加了一个jax-ws-catalog.xml,以便在本地而不是远程解析schemaLocation.我跟着这个例子
Metro用户指南:2.10.使用本地打包的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?
小智 16
你在哪里放置jax-ws-catalog.xml和WSDL文件?
您提到您正在使用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,用于合同的第一个WS端点与@WSDLLocation注释app.war/META-INF
如果你想同时发布(即先发布合同)以及使用Web服务,那么你需要在这两个位置放置jax-ws-catalog.xml + WSDL,即app.jar/WEB-INF/classes/META-INF和app.jar/META-INF
我已经在我的许多项目中成功使用了上述方法,这些项目同时发布和使用Web服务,我可以保证它按预期工作.