java - 有没有人得到 jax-ws-catalog.xml 来在 Metro 上本地解析 schemaLocation?

标签 java jax-ws java-metro-framework

我已将 jax-ws-catalog.xml 添加到我的 .war 文件中,以便在本地而不是在 .war 中远程解析 schemaLocation。我已经按照

中的示例进行操作

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 目录工具)。 (如果有帮助,我可以发布我的 jax-ws-catalog.xml 的内容以及相关的 xsd 和 wsdl。

Google 搜索发现许多其他问题,jax-ws-catalog.xml 在 Metro 堆栈中不起作用。

有没有人得到 jax-ws-catalog.xml 在 Metro 中工作?

最佳答案

您将 jax-ws-catalog.xml 和 WSDL 文件放在哪里?

您提到您正在使用 WAR,但在 WAR 中,jax-ws-catalog.xml 的位置取决于您是尝试将其作为 WS 客户端还是作为 WS 端点发布者(服务器)进行访问.

如果您从 WAR 中访问外部 Web 服务,那么您的 jax-ws-catalog.xml 需要进入 app.war/WEB-INF/classes/META-INF 目录, 或者,如果您在应用程序中部署了契约(Contract)优先 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 注释的契约(Contract)第一个 WS 端点 app.war/META-INF

如果您想同时执行这两项操作,即发布(首先是契约(Contract))以及使用 Web 服务,那么您需要将 jax-ws-catalog.xml + WSDL 放在这两个位置,即 app.jar/WEB-INF/classes/META-INF 和 app.jar/META-INF

我已经在我的许多项目中成功地使用了上述方法,这些项目同时发布和使用 Web 服务,我可以保证它按预期工作。

关于java - 有没有人得到 jax-ws-catalog.xml 来在 Metro 上本地解析 schemaLocation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835994/

相关文章:

java - 显示 java JTable 中的特定行

java - 无法使 Struts2.2.1 注释在 Netbeans 6.9 上工作

java - 如何使用 ancestor() 正确存储和查询对象化实体?

java - 如何使用 JAX-WS 客户端指定 WS-Addressing 版本?

java - Spring : How to inject wsdlLocation in @WebServiceRef

java - 如何将进程 ID 添加到 LOG4J 日志文件?

java - 使用来自 Java 的摘要身份验证的 WCF 服务

c# - 将 Java 应用程序连接到 WCF Web 服务时出错

java - 有没有办法通过注释在metro中实现ws-security?

Web服务中的java/soapfault问题