SAAJ API 介紹(未完)

melin1204發表於2008-06-04
SAAJ是一個可是使用者利用java來建立,讀或修改SOAP訊息的API,SAAJ包含了對SOAP的
Envelop元素,Body元素,Fault元素以及XML名稱空間,元素,屬性,文字註釋和MIME
附件建模的類和介面。SAAJ是一個空的類,有點類似JDBC。又供應商實現。我一般在CXF的
Interceptor中使用的比較多
SAAJ是一個抽象工廠模式,而抽象工廠模式的根就是MessageFactory。它負責建立本身的例項,
而該例項能用於建立SOAPMessage。SOAPMessage包含SOAPPart。SOAPPart表示文件以及零個或多個
AttachmentPart。
SOAPPart包含一個要對SOAP文件建立模型的物件族,其中包含Envelop元素,Body元素和Header元素

建立一個簡單的SOAP訊息例項:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://www.iteye.com/saaj/simple">
<soap:body>
<ns:getMessage>
<msg>Hello World</msg>
</ns:getMessage>
</soap:body>
</SOAP:Envelope>


對應的java程式碼:
MessageFactory msgFactory = MessageFactory.newInstance();
//用MessageFactory物件建立SOAPMessage物件
SOAPMessage message = msgFactory.createMessage();
//如果沒有附件是。可以直接通過getSOAPHeader或getSOAPBody來獲取Header或Body
//不需要通過這樣的方式來獲取message.getSOAPPart().getEnvelope().getHeader()
message.getSOAPHeader().detachNode();
SOAPBody body = message.getSOAPBody();
SOAPElement getMessage = body.addChildElement("getMessage", "ns", "http://www.iteye.com/saaj/simple");
getMessage.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);
SOAPElement msg = getMessage.addChildElement("msg");
msg.addTextNode("Hello World");
message.writeTo(System.out);


資料:
【1】[url=http://www.infoq.com/cn/news/2008/05/saaj-problems]SAAJ--理論上很美,實踐中受阻?[/url]
【2】[url=http://blog.springsource.com/arjen/archives/2008/05/19/the-sorry-state-of-saaj/]The Sorry State of SAAJ[/url]

相關文章