一尘不染

如何用Java编写有效的Web服务

java

尽管这可能是Java Web Services的副本,但我想知道从哪里开始和继续。过去,我花了很多时间来找到从哪里开始,但我却没有。阅读有关Web服务的页面时,有很多术语和混乱(至少对我来说是如此!)。有很多术语-
例如JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB'sWeb
Service和其他我不知道的术语。该用户组可以合并并提供易于理解和遵循的Java Web Services的高级概述吗?我感谢您的好意,并感谢您的帮助。


阅读 200

收藏
2020-12-03

共1个答案

一尘不染

确实,了解Web服务有点困难。在维基百科页面是体面的,但还缺少一些元素。

我已将此答案标记为社区Wiki,请随时进行更新或更正。这只是一个基础。

term肿的术语:

首先,术语 Web服务
用于指许多事物。尽管许多人使用它来指代基于SOAP的Web服务,但该术语可以用来表示通过Web界面提供的任何服务;这是造成混乱的根源。

实施和设计风格:

  • 基于 SOAP的-SOAP仍然是Web服务的实际标准。SOAP是HTTP之上的协议,用于描述消息和异常的交换。通过后来添加的所有WS- *标准,SOAP从简单的东西发展到了非常复杂的东西。最重要的是:WS-策略,WS-安全性,WS-寻址,WS-Transaction。另一个重要的规范是大型邮件的MTOM。
  • RESTful- 术语 RESTful 与服务无状态且所有相关信息均作为参数传递这一事实有关。也代替使用如SOAP的协议,普通HTTP 动词 被使用,例如GetPutDeleteUpdate
  • 无状态 -WS通常是无状态的。处理的业务有时依赖于所谓的关联标识符(带有WS-Addressing),该标识符用于将请求和响应一起匹配;这与将会话标识符存储在cookie中一样,因为HTTP是无状态的。
  • 有状态的 -有一些建议使用有状态的WS,但是我对此并不了解。

实施和技术栈:

  • Servlet- 实现WS的最底层方法:您基本上可以自行解析请求并吐出HTTP响应。
  • EJB- 从EJB3开始,EJB可以很容易地作为Web服务公开。当然,需要一个EJB容器。
  • Apache Axis- 曾经是一种流行的技术堆栈,现在正在下降。
  • Apache CXF- 另一个流行的选择。
  • JBossWS- 另一个流行的选择。
  • JAX-WS -Sun的官方Web服务堆栈,非常好。到目前为止,我知道,它取代了 JAX-RPC,后者已简单地重命名为JAX-WS。

相关概念和行话:

  • WSDL- 如果是基于SOAP的WS,则定义Web服务的协定/接口。
  • 合同优先 -指的是一项技术能够支持任何预先提供的WSDL的事实。与将基于Web服务的实现生成WSDL的实现技术相反,在这种情况下,不能总是根据需要自定义WSDL
  • 概要文件 -为了简化这种混乱情况,他们引入了概要文件,这些文件是需要互操作性支持的一组相关规范/功能。主要的是WS-I基本概要文件。
  • UDDI和发现 -似乎有些人认为Web服务将在公共寄存器中发布,以便潜在的消费者可以发现它。我认为这一愿景没有取得太大进展。
2020-12-03