2013-03-06 79 views
4

我很确定我在这里错过了一些简单的东西。Jax-WS Glassfish XSD:?xsd = 1 vs?xsd = 2

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

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

两个类具有相同的XML类型名称“{字符串数组”。使用@ XmlType.name和@ XmlType.namespace为它们分配不同的名称。

任何建议将非常感激!

回答

1

好吧。不,你不是真的错过了什么。你选择的方法对于你想达到的目标并不完美(至少在我的经验中)。

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

  1. 把你生成的WSDL文件,并保存为权威的WSDL(添加的.wsdl和xsd文件到您的项目)。使用wsimport生成服务器和客户端存根。

  2. 仅对WSDL/XSD文件进行未来更改,并让wsimport任务生成新的存根。

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

直接编辑WSDL文件似乎更乏味,但更具前瞻性。您可以更好地控制生成的实体,并且您对API的兼容性更改或不兼容更改有更好的感觉。