JAXM
JAXM(Java API for XML Messaging簡稱JAXM)是為Java平台上的應用程式定義的API,用以通過XML(以及SOAP)發送和接收消息,支持同步消息和異步消息。JAXR API是在JCP下開發的,代號JSR 67。
基本概念
JAXM的基本概念包括消息,連接,消息提供者以及JAXM客戶端和JAXM服務
消息(Message)
JAXM的消息使用SOAP消息標準,包括或不包括附件。
連接(Connection)
JAXM有兩種連接:
- 直接連接,由消息發送者直接發送給消息的接收者的連接。
- 間接連接,消息發送者通過消息提供者發送給消息接收者的連接。
消息提供者(Messaging Provider)
消息提供者是中介服務,負責為消息發送者處理消息的傳送和路由。消息提供者也會提供一些服務,如可靠消息。
JAXM客戶端
JAXM客戶端向接收者發送消息。最終的接收者一般是服務。 JAXM客戶端可以直接發送消息給服務,也可以發送給一個中介提供者,被稱為JAXM消息提供者。取決於客戶端和接收者是如何配置的。
JAXM服務
JAXM服務端JAXM客戶端發送的消費XML消息。服務讀取和處理客戶端的消息。服務對客戶端的反應取決於兩者之間所建立的消息交換的類型。這部分取決於發送消息的客戶端是單獨的JAXM客戶端還是使用消息提供者的JAXM客戶端。
消息交換模式
JAXM消息在客戶端,發送者,和最末端的服務,接收者之間交換。JAXM的消息交換主要有兩種類型:同步通訊或異步通訊。
- 異步交換(單向),消息發送者向接收者發送一條消息,並不等待接收者返回的響應消息。發送消息後就繼續處理。一旦接收者接收消息,將會讀取和處理消息。如果需要響應消息,消息接收者將向發送者發送一條響應消息。原發送者可能需要處理響應消息。
- 同步交換(請求-響應)消息發送者向消息接收者發送一條消息,然後等待直至消息接收者的應答。消息接收者必須處理該消息並向消息發送者發送一條確認消息或其他消息。響應消息取消發送者的阻塞,發送者才能繼續處理其他工作。連接失敗也可以取消阻塞發送者。
編程模型
JAXM的API包包括:
- javax.xml.messaging,提供發送和接收消息的接口和類,包括連接和監聽器。
- javax.xml.soap,對SOAP消息的封裝,包括SOAP頭消息,消息體等。
客戶端
客戶端發送消息的過程包括:
- 獲取連接,可以獲取點對點連接或者獲取與消息提供者的連接
- 創建消息
- 填充消息內容
- 發送消息
- 讀取響應消息,並進行處理
服務
服務接收和處理消息的過程包括:
- 實現onMessage,讀取消息
- 進行業務處理
- 創建響應消息
- 填充響應消息
- 返迴響應消息