4

我完全确定我在这里遗漏了一些简单的东西。

我正在使用 netbeans 在两个单独的项目中创建一个 web jax-ws web 服务和一个客户端,并且我使用 net beans 中的接口将一些自定义绑定添加到客户端。这一切似乎都工作正常,但每隔一段时间在对服务进行更改并重新部署 xsd 的位置后,似乎会发生变化,/ServiceName?xsd=1从而/ServiceName?xsd=2停止我的自定义绑定工作。

我可以调整我的绑定文件,这在最近几次都有效,但最后一次仍然存在一些内容?xsd=1- 这是 的定义stringArray,当我尝试刷新客户端时,这似乎导致错误。这是我得到的错误:

两个类具有相同的 XML 类型名称“{ http://jaxb.dev.java.net/array }stringArray”。使用@XmlType.name 和@XmlType.namespace 为它们分配不同的名称。

任何建议将不胜感激!

4

1 回答 1

1

出色地。不,你并没有真正错过任何东西。您选择的方法对于您想要实现的目标并不完美(至少根据我的经验)。

您正在使用“Java 优先”的方法(至少我是这样解释您的问题的)。使用 WSDL 优先策略可能会有所帮助:

  1. 获取您生成的 WSDL 文档并将它们保存为权威 WSDL(将 .wsdl 和 .xsd 文件添加到您的项目中)。

  2. 用于wsimport生成服务器和客户端存根。

  3. 以后只对 WSDL/XSD 文件进行更改,并让wsimport任务生成新的存根。

  4. 导入服务器生成的 WSDL 并仅使用(现在手动维护的)WSDL 文件。

直接编辑 WSDL 文件似乎更乏味,但更适合未来。您可以更好地控制生成的实体,并且对 API 的兼容与不兼容更改有更好的感觉。

于 2013-07-29T09:22:55.547 回答