【问题标题】:Has anyone gotten jax-ws-catalog.xml to resolve schemaLocation locally on Metro?有没有人让 jax-ws-catalog.xml 在 Metro 上本地解析 schemaLocation?
【发布时间】:2011-02-19 15:06:17
【问题描述】:

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

处遵循了示例

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 文件放在哪里了?在我的应用程序中,它看起来是这样的:WEB-INF/jax-ws-catalog.xml
  • @hubertg:根据你是写客户端还是服务器,你把它放到META-INFWEB-INF。见jax-ws.dev.java.net/nonav/2.1.5/docs/catalog-support.html

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


【解决方案1】:

您将 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 服务,并且具有 @WSDLLLocation 注释,那么对于该 WSDL,jax-ws 在 app.jar/META-INF 中查找 jax-ws-catalog.xml

所以对于客户端 WSDL 位置 app.war/WEB-INF/classes/META-INF/jax-ws-catalog.xml 对于带有@WSDLLLocation 注释的合同第一个WS Endpoints app.war/META-INF

如果你想两者都做,即发布(先契约)以及使用 Web 服务,那么你需要将 jax-ws-catalog.xml + WSDLs 放在这两个位置,即 app.jar/WEB-INF /classes/META-INF 和 app.jar/META-INF

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

【讨论】:

  • 你是个天才!我正在使用一个基本的 Java 应用程序进行原型设计,其中目录 xml 在 /META-INF 目录中工作。但是在使用 Java Web 应用程序时,META-INF 目录不在类路径中。 WEB-INF/classes 目录是,这就是为什么你必须在那里创建一个 META-INF 文件夹,其中包含 jaxws-catalog.xml!
  • 文件应命名为jax-ws-catalog.xml。答案在jax 之后缺少-,这让我有些悲伤。
猜你喜欢
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
  • 2022-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多