Web服务(JAX-WS,SOAP)WSDL结构设计

时间:2013-03-01 15:50:13

标签: web-services soap wsdl jax-ws

这是一个开放式的问题和相当多的文字,但我仍然坚持。

首先是一点背景。去年我一直在写Web服务。我从这个领域的零知识开始。我的工作是准备WSDL(我可以构建它,但我想要)并实现它。我对XSD Schemas的编写方式有一点影响,但并不多。我参加了2个项目。第一个只有大约5个网络服务,而第二个有超过20个并且仍在增长。两者都经过不断的XSD架构修改。

现在到了这一点。

我决定在结构化WSDL设计方面使用两种不同的方法。在第一个项目中,我在WSDL之间分离了WS,每个WSDL一个WS。这非常有效,特别是因为每个操作使用的XSD架构不同(除了一个很少改变的基本架构)。但是你确实有5种不同的WSDL,这对我来说似乎很浪费。

第二个项目有更多的WS和更大的数量和更复杂的模式。在这里,我决定根据其用途将服务分组为少数WSDL。一切看起来都很棒,直到我意识到(我缺乏足够的知识)WSs,当被调用时,被他们的身体主要元素识别(实际上我仍然不知道为什么会如此)。我们的很多WS都有与输入相同的元素,因为它们在同一个WSDL中,所以它们具有相同的路径。这引起了应用程序服务器(Weblogic 10.3)的警告,但它有效。我猜它使用了SOAPAction头,因为我们使用的是SOAP 1.1。在企业总线(OSB)上部署服务时会出现问题。除非选择SOAPAction作为选择算法,否则它将无效,或者像我们的oracle顾问建议的那样,为每个WS创建了一个额外的唯一元素。

这就是问题所在。如何构建WSDL。我考虑的选项是:

  • 选择SOAPAction标头作为选择算法。我个人喜欢这个解决方案,但由于SOAP 1.2不再拥有它,所以(我的老板)的权力告诉我,我们不能使用它。我知道SOAP 1.2将有一个可选的“动作”标题,但由于它是可选的,我再次无法使用它(老板推理:可能根本不在下一个版本中,客户可能不想使用可选功能,因为它的额外成本,我不知道,这是一个商业的事情)。
  • 为每个WS使用唯一元素。这看起来很丑陋和不必要,但它是迄今为止我们所拥有的最好的。
  • 返回上一个设置并为每个WSDL执行一个WS。这绝对是最不受青睐的方法。它感觉不对,从我所看到的只是糟糕的设计。但它起作用并且具有相当大的灵活性。

现在,如果有人有任何其他解决方案,我很乐意听到他们,因为这让我在上个月左右难过。我只是找不到感觉恰到好处的解决方案。

提前致谢。

0 个答案:

没有答案