快速业务通道

用JAXM开发Web服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

用JAXM开发Web服务

时间:2011-02-07 IBM 陈亚强

阅读本文前您需要以下的知识和工具:

JavaTM Web Services Developer Pack 1.1,并且会使用初步使用;

至少会使用一种EJB容器来开发、部署EJB,并且了解怎么在客户端访问EJB组件;

一般的Java编程知识。

在J2EE平台里,要开发一个Web服务,我们通常有两种选择:

使用JAX-RPC(Java API for XML-based RPC)

使用JAXM(Java API for XML Messaging)

作为对JAXM开发技术的入门,本文先不比较它们的技术特点。我将结合一个具体的案例来讨论JAXM的开发技术方方面面。

JAXM相关概念介绍

通常我们说的JAXM API,它包括两个包:

Javax.xml.soap:它是发送SOAP消息的基本包,主要包含了发送带有附件的SOAP消息的API(SOAP with Attachments API for Java ,SAAJ)。它是SOAP消息的基本包,它为构建SOAP包和解析SOAP包提供了重要的支持。它包含了发送请求-响应消息相关的API。

Javax.xml.messaging:定义了JAXM的规范,包含了发送和接收消息所需的API。

JAXM包含了以下几个概念:消息(Message)、连接(Connection)、消息提供者(Messaging providers)。

消息

JAXM消息遵循SOAP标准,我们可以通过JAXM API方便的创建SOAP 消息。有两种类型的消息,带附件的消息和不带附加的消息。不带附件的消息结构如图1所示。

如图1所示,在SAAJ API中,它使用SOAPMessage类来代表SOAPMessage,相应的,使用SOAPPart类来代表SOAPPart,SOAPBody类代表SOAP Body。

用JAXM开发Web服务 - 编程入门网

图1 不带附件的SOAP消息

其中Header和SOAPFault是可选的,Header可以多个,Body只有一个,如果有SOAP Fault,那么它一定在SOAP Body后面。带附加的SOAP消息如图2所示。

用JAXM开发Web服务 - 编程入门网

图2 带附件SOAP消息

可以看出,一个SOAP消息可以有一个或者多个附件。SAAJ API使用AttachmentPart类来代表SOAP消息的附件。每个AttachmentPart有一个MIME Header来表示附件的类型。

用JAXM开发Web服务(2)

时间:2011-02-07 IBM 陈亚强

连接

有两种类型的连接,它们是:

消息发送者到接收者的直接连接,javax.xml.soap.SOAPConnection表示了这种类型的连接,由于它是点对点的,所以比较容易使用,即使不在Servlet或者J2EE容器里也能使用;

到消息提供者的连接,javax.xml.messaging.ProviderConnection表示了这种连接,这种方式需要消息提供者,消息发送者和消息使用者通过消息提供者来交互。

消息提供者

消息提供者主要负责传送消息,它把消息路由到目的地,一个消息发出后,可能要经过多个消息提供者才能到达目的地。

如果使用MessageProvider,可以达到以下的目的:

除了能够发送request-response类型的消息外,还可以发送One-way(单向)消息;

(消息)客户端有时也可以作为服务端来使用。

案例介绍

在本文,我将结合一个具体的案例来介绍JAXM Web服务的开发。此案例具体情况如下。

某图书城决定使用Web服务来对外提供图书信息查询服务,图书城现有的系统运行在J2EE平台上,客户端通过JAXM来使用图书城提供的Web服务。系统的体系结构如图3所示:

用JAXM开发Web服务 - 编程入门网

图3 系统体系结构

客户端可以是一般的java GUI程序(当然也可以是JSP、Servlet等)。客户端通过SOAP消息和Servlet容器里运行的JAXM Servlet进行交互,JAXM Servlet是服务提供者,EJB容器里运行的是业务组件,它们为JAXM Servlet提供服务。

客户端请求传递的过程如图4所示:

用JAXM开发Web服务 - 编程入门网

图4 请求传递的过程

用JAXM开发Web服务(3)

时间:2011-02-07 IBM 陈亚强

可以看出,客户端通过SOAP和JAXM 服务端通信,JAXM使用EJB组件来获得业务服务。

系统为客户端提供了三种查询服务:查询所有图书,按类别查询图书,按图书名搜索某本特定的图书。这三种服务分别有服务端的三个JAXM Servlet实现

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号