【问题标题】:Jax-WS Glassfish XSD : ?xsd=1 vs ?xsd=2Jax-WS Glassfish XSD:?xsd=1 与 ?xsd=2
【发布时间】:2013-02-21 12:19:24
【问题描述】:

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

我正在使用 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 为它们分配不同的名称。

任何建议将不胜感激!

【问题讨论】:

    标签: java netbeans xsd jax-ws


    【解决方案1】:

    嗯。不,你并没有真正错过任何东西。您选择的方法并不适合您想要实现的目标(至少根据我的经验)。

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

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

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

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

    4. 忽略服务器生成的 WSDL,只使用(现在手动维护的)WSDL 文件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多