大龙的博客

常用链接

统计

最新评论

Java中对WebService的支持

SOA(Service-Oriented Architecture) 面 向服务架构是一种思想,它将应用程序的不同功能单元单元更好的集成。目前来说,WebService是SOA的一种较好的实现方式,WebService 采用HTTP作为传输协议,SOAP(Simple Object Access Protocol)作为传输消息的格式。但WebService并不是完全符合SOA的概念,因为SOAP协议是WebService的特有协议,并未符 合SOA的传输协议透明化的要求。SOAP是一种应用协议,早期应用于RPC的实现,传输协议可以依赖于HTTP、SMTP等。通常采用SOA的系统叫做 企业服务总线(ESB),并且可以扩展。

Java中有三种WebService规范:JAX-WS(JAX-RPC)、JAXM&SAAJJAX-RS

1. JAX-WS

JAX-WS(Java API For XML-WebService),JDK1.6 自带的版本为JAX-WS2.1,其底层支持为JAXB。早期的基于SOAP的JAVA的Web服务规范JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被JAX-WS规范取代,JAX-WS是JAX-RPC的演进版本,但JAX-WS并不完全向后兼容JAX-RPC,二者最大的区别就 是RPC/encoded样式的WSDL,JAX-WS已经不提供这种支持。JAX-RPC的API从JAVA EE5开始已经移除,如果你使用J2EE1.4,其API位于javax.xml.rpc.*包。JAX-WS(JSR 224)规范的API位于javax.xml.ws.*包,其中大部分都是注解,提供API操作Web服务(通常在客户端使用的较多,由于客户端可以借助 SDK生成,因此这个包中的API我们较少会直接使用)。WS-MetaData(JSR 181)是JAX-WS的依赖规范,其API位于javax.jws.*包,使用注解配置公开的Web服务的相关信息和配置SOAP消息的相关信息。

2. JAXM&SAAJ

JAXM(JAVA API For XML Message) 主 要定义了包含了发送和接收消息所需的API,相当于Web服务的服务器端,其API位于javax.messaging.*包,它是JAVA EE的可选包,因此SAAJ(SOAP With Attachment API For Java,JSR 67)是与JAXM搭配用的API,为构建SOAP包和解析SOAP包提供了重要的支持,支持附件传输,它在服务器端、客户端都需要使用。这里还要提到的 是SAAJ规范,其API位于javax.xml.soap.*包。JAXM&SAAJ与JAX-WS都是基于SOAP的Web服务,相比之下 JAXM&SAAJ暴漏了SOAP更多的底层细节,编码比较麻烦,而JAX-WS更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不 需要关心SOAP的任何细节。那么如果 你想控制SOAP消息的更多细节,可以使用JAXM&SAAJ。

3. JAX-RS

JAX-RS(Java API For RESTful Web Services) 是 JAVA针对REST(Representation State Transfer)风格制定的一套Web服务规范,由于推出的较晚,该规范(JSR 311)并未随JDK1.6一起发行,你需要到JCP上单独下载JAX-RS规范的接口,其API位于javax.ws.rs.*包。

 Reftful足够简单主要有以下一些特点:

一、Resource identification through URI:一个Rest服务向外暴露一个服务,通过唯一一个URI进行标注,

二、Uniform interface: Rest服务主要通过四个关键字来标识每一次请求过来的操作,PUT, GET, POST, and DELETE.PUT:创建一个新的资源,GET:得到一个资源,POST:更新操作,DELETE:执行删除动作。

三、Self-descriptive messages: 信息的自我描述,在Rest服务交互中,server/client之间可以通过多种格式进行交互,如:HTML, XML, plain text, PDF, JPEG, JSON, and others.

四、Stateful interactions through hyperlinks: 在 server/client的交互过程中,可以实现有状态的交互,其实在Rest中,对资源的一次请求是一种无状态的方式,而在Rest中,一种有状态的 交互是通过明确的state transfer来进行的,主要的实现方式可通过URI的重写、cookies方式、隐藏域等实现。而且状态可以嵌入到相应头中来处理。

posted on 2012-06-22 16:24 大龙 阅读(424) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理