用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来表示附件的类型。