Welcome 微信登录

首页 / 软件开发 / JAVA / 用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来表示附件的类型。