2010-05-11 43 views
16

编写有效的Web服务虽然这样可能出现的Java Web Services重复,我想知道从哪里开始和continue.In过去,我已经投入了这么多的时间来寻找从哪里开始,但我无法。在阅读有关Web服务的页面时,有太多的行话和混乱(至少对我来说!)。有很多术语 - 比如Web服务和其他我不知道的术语,如JAX-RPC, JAX-WS, Axis, Rest, Servlet as WebService, EJB's。该用户组可以整合并提供易于理解和遵循的Java Web服务的高级概述吗?我感谢您的好意,并感谢您的帮助。如何用Java

回答

33

这确实是一个理解Web服务的丛林。 wikipedia页面很不错,但是仍然缺乏一些元素。

我举报了这个答案,因为社会的维基,所以随时更新它,或纠正。这只是一个基础。

一个臃肿项:

首先,术语Web服务被用来指代很多东西。虽然许多人使用它来指代基于SOAP的Web服务,但该术语可以用来表示通过Web界面提供的任何服务;这是一个混乱的来源。

实施和设计风格:

  • 基于SOAP的 - SOAP仍然是Web服务的事实标准。 SOAP是描述消息和异常交换的HTTP协议。 SOAP随着以后添加的所有WS-* standards从简单的事情发展到非常复杂的事情。最重要的是:WS-Policy,WS-Security,WS-Addressing,WS-Transaction。另一个重要的规范是MTOM的大消息。
  • RESTful - 术语RESTful涉及服务无状态并且所有相关信息都作为参数传递的事实。而不是使用像SOAP这样的协议,使用普通的HTTP 动词,例如, Get,Put,Delete,Update
  • 无国籍 - WS通常是无状态的。处理的业务有时依赖于用来将请求和响应一起匹配的所谓相关标识符(使用WS-Addressing);这与在Cookie中存储会话标识符相同,因为HTTP是无状态的。
  • 有状态 - 有一些建议,有状态的WS,但我不很了解。

实施和技术堆栈:

  • 的Servlet - 最低级的方式来实现WS:你基本上解析请求,并通过自己全吐了HTTP响应。
  • EJB - 由于EJB3,EJB可以很容易地暴露为Web服务。当然,需要一个EJB容器。
  • Apache Axis - 曾经是一个流行的技术堆栈,现在正在衰落。
  • Apache CXF - 另一个流行的选择。
  • JBossWS - 又一个流行的选择。
  • JAX-WS - 来自Sun的官方Web服务栈,非常好。到目前为止,我知道,这个replaces JAX-RPC只是简单地改名为JAX-WS。

相关的概念和术语:

  • WSDL - 定义Web服务合同/界面,基于SOAP的WS的情况。
  • 合同优先 - 指技术能够支持任何预先提供的WSDL的事实。与实现基于Web服务实现的WSDL的实现技术相反,在这种情况下WSDL不能总是根据需要进行定制
  • 简介 - 为了简化这个混乱,他们已经介绍了配置文件,这些配置文件是需要支持互操作性的相关规范/功能组。主要的是WS-I Basic Profile。
  • UDDI和发现 - 似乎有人认为Web服务将在公共注册中发布,以便被潜在的消费者发现。我不认为这个愿景获得了很大的动力。
+0

+1详细的,但要点概述。 – CoolBeans 2010-05-11 14:52:59

+0

+1非常好的帖子 - 我今天非常需要的东西,够方便的。 – aperkins 2010-05-11 19:28:09

+0

有人可以与eclipse,axis2,tomcat – 2010-06-02 07:58:30