在寫這篇文章的時候,大多數的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信息的能力。