2011-04-11 60 views
4

我最后一次做Java Web开发是在2004年使用Java Servlets和JSP。我从来没有真正使用过EJB。我记得我在开发Web服务\动态网站时遇到的经验(开发时间较慢)和痛苦(易于部署)方面的经验。如何学习Java Web服务?

这些天大多数企业用来开发基于Java的网站是什么?您是否使用AXIS或其他框架来执行Web服务?你在前端使用JSP还是其他技术?

+1

您的意思是Web服务与狭义上的WSDL或REST驱动服务或Java驱动的网站一样吗? – justkt 2011-04-11 20:52:59

回答

5

当前的标准是使用JAX-WS(用于SOAP Web服务)和JAX-RS(用于RESTful Web服务)。

这些是有多个实现的标准。 JAX-WS有地铁,CXF等JAX-RS已经新泽西的RESTEasy等

1

我会为了

  • REST
  • XSD
  • WSDL
  • JAX-学习这些*
  • 替代品? (Thrift,Avro,协议缓冲区等)
1

从2004年开始,工具支持和开发的便捷性也有了很大的提高。随着对轻量级框架的日益关注(部分归功于Spring),实现了web java中的服务并不容易。

在决定实施Web服务之前,您需要回答一个简单的问题。肥皂或REST.I建议你形成自己的观点,但这是我能想到的,在我头上。 SOAP的

优点:

  1. 优秀的工具支持。
  2. 最流行的技术。
  3. JAX-WS标准非常成熟。
  4. 易于开发。 (注解支持将POJO转换为webservice)。
  5. 示例METRO,Axis ...

Cons of SOAP。 (Ask Roy Fielding ..)

  1. 膨胀协议。
  2. 协议的自定义是可能的,但很复杂。 (使用wsdl绑定等)。
  3. 客户端需要复杂的库来序列化和反序列化soap消息。
  4. 像Android这样的平台本身不支持SOAP。

上臃肿的Web服务协议webservices,他长出了常识的说法使用互联网的SOA的背部骨罗伊Fieldings咆哮之后,出现了对REST一个平缓的动作。像Google和亚马逊这样的敏捷公司已经采用了REST,并且正在支持基于REST的Web服务。REST的

优点:

  1. 非常轻量级协议。
  2. 主要基于HTTP,因此大多数客户知道如何使用。 (但REST不一定是HTTP)。
  3. 错误像Cache这样的管理和想法基于成熟的Internet技术。
  4. Java拥有出色的REST库。 Sun自己的Jersey是一个优秀的Jax-RS参考实现,并且有Restlet,Jboss Rest Framework和Spring REST(尽管不符合JAX-RS)。 REST的

缺点:

  1. 相对较差的工具支持。
  2. REST中的安全实现有点困难。
  3. 面向资源的设计和实现对于一些传统的程序员和架构师来说可能是新的。

我的偏好是REST和Jersey。它是一个了不起的框架,出色的支持,出色的文档和用于测试的良好支持库。

无论哪种方式,我将下载Netbeans IDE并使用它来开发基于REST或SOAP的Web服务的skeletol代码。 Netbeans使得开始非常容易。一旦您熟悉代码,就可以切换到您最喜欢的IDE。 (顺便说一句,除了原型设计之外,我不使用Netbeans,它试图做很多事情,并且其中大部分都很糟糕......无论如何我的意见)

1

我的意愿是Apache Avro(在@ rodrigoap的答案中提到)。我现在在哪里工作,我们有一个面向服务的架构,并使用Avro来提供内部服务。我们之所以选择它是因为它速度快,稳定,可以运行在http上(可以轻松地从Tomcat提供服务),可以自动生成客户端类,并且可以使用多种语言。客户类的生成对我们来说是一个很大的特性,因为它意味着我们只处理Java对象,并让Avro处理序列化并通过网络发送内容。不用处理很多不同的url也是很好的。 Avro webservice由单个servlet托管,Avro负责如何将每个请求映射到实施类中的相应方法。

要再次引用@ rodrigoap的答案,他在Avro列表中放置了几个其他选项,并且对于外部访问的Web服务,我同意这些选择是更好的选择,因为您的外部服务用户可能不是'因为您可能选择了Avro而对此感兴趣。

如果您对示例感兴趣,可以参考sample Avro web service项目,了解它是如何工作的。