SAAJ API 介紹

來源:互聯網
上載者:User

http://melin.javaeye.com/blog/200277

 

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訊息執行個體:

Java代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <SOAP:Envelope  
  3.     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  
  4.     xmlns:ns="http://www.javaeye.com/saaj/simple">  
  5.     <soap:body>  
  6.         <ns:getMessage>  
  7.             <msg>Hello World</msg>  
  8.         </ns:getMessage>  
  9.     </soap:body>  
  10. </SOAP:Envelope>  
<?xml version="1.0" encoding="UTF-8"?><SOAP:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:ns="http://www.javaeye.com/saaj/simple"><soap:body><ns:getMessage><msg>Hello World</msg></ns:getMessage></soap:body></SOAP:Envelope>

對應的java代碼:

Java代碼
  1. MessageFactory msgFactory = MessageFactory.newInstance();  
  2. //用MessageFactory對象建立SOAPMessage對象  
  3. SOAPMessage message = msgFactory.createMessage();  
  4. //如果沒有附件是。可以直接通過getSOAPHeader或getSOAPBody來擷取Header或Body  
  5. //不需要通過這樣的方式來擷取message.getSOAPPart().getEnvelope().getHeader()  
  6. message.getSOAPHeader().detachNode();  
  7. SOAPBody body = message.getSOAPBody();  
  8. SOAPElement getMessage = body.addChildElement("getMessage", "ns", "http://www.javaeye.com/saaj/simple");  
  9. getMessage.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);  
  10. SOAPElement msg = getMessage.addChildElement("msg");  
  11. msg.addTextNode("Hello World");  
  12. message.writeTo(System.out);  
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.javaeye.com/saaj/simple");getMessage.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING);SOAPElement msg = getMessage.addChildElement("msg");msg.addTextNode("Hello World");message.writeTo(System.out);

資料:

【1】SAAJ--理論上很美,實踐中受阻?

【2】The Sorry State of SAAJ

 

CXF Interceptor擷取SOAP Header中資料的方法

http://melin.javaeye.com/blog/223643

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.