在写这篇文章的时候,大多数的Web服务由简单的信息交换组成:客户端连接到Web服务器端,并发送一条消息给服务端。Web服务端处理客户端的请求并发送回应给客户端。这个简单的请求/回应模式,模拟了HTTP协议帮助客户端/服务器端交互的过程。同样由于HTTP,Web服务信息的交换经常必须包含二进制的内容。比如图像,文档或者声音片段。这篇文章介绍了使用SAAJ1.2(SOAP with Attachements API for java 1.2)来发送和接收二进制内容Web信息。
基于xml的RPC调用类似在OO系统中调用一个对象一样。事实上,当你用基于XML的JAVA API工作时(Java API for XML-based RPC简JAX-RPC),你总是觉得在跟Java对象工作,而不是跟XML文档工作。JAX-RPC能让你把Web服务看作远程对象,这很像Java RMI(Remote Method Invocation)。JAX-RPC运行时把高层次的OO方法调用转化为远程Web服务需要XML文档。虽然RPC类型的Web服务通常能提供更便捷的编程模型,但是RPC调用也必须依靠更低的消息层来完成组成远程调用XML信息交换。
SAAJ提供了一个能方便地构建和读取SOAP信息的库,这个库还答应你通过网络接收和发送SOAP信息。SAAJ定义了javax.xml.soap包。在这个包里面的类组成了最初的JAXM(Java API for XML Messaging),但是最近他们被分离出来成为单独的API。JAXM依靠于SAAJ来构建和处理SOAP信息,并且依靠SAAJ来增加信息的可靠性和增加其他的XML信息特征。尽管SAAJ是J2EE的一部分,JAXM却不是。这篇文章聚焦于SAAJ中最有用的一个方面:就是SAAJ捆绑二进制内容到SOAP信息的能力。