用JAXM开发Web服务 - 编程入门网
用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。 图1 不带附件的SOAP消息 其中Header和SOAPFault是可选的,Header可以多个,Body只有一个,如果有SOAP Fault,那么它一定在SOAP Body后面。带附加的SOAP消息如图2所示。 图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所示: 图3 系统体系结构 客户端可以是一般的java GUI程序(当然也可以是JSP、Servlet等)。客户端通过SOAP消息和Servlet容器里运行的JAXM Servlet进行交互,JAXM Servlet是服务提供者,EJB容器里运行的是业务组件,它们为JAXM Servlet提供服务。 客户端请求传递的过程如图4所示: 图4 请求传递的过程 用JAXM开发Web服务(3)时间:2011-02-07 IBM 陈亚强可以看出,客户端通过SOAP和JAXM 服务端通信,JAXM使用EJB组件来获得业务服务。 系统为客户端提供了三种查询服务:查询所有图书,按类别查询图书,按图书名搜索某本特定的图书。这三种服务分别有服务端的三个JAXM Servlet实现 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |