Liberty 上的「階段作業起始通訊協定 (SIP)」應用程式

SIP 應用程式是一個至少使用一個「階段作業起始通訊協定 (SIP)」Servlet 的 Java 程式。

SIP Servlet 是一個 Java™ 應用程式元件,受 SIP Servlet 儲存器管理,且會執行 SIP 信號。類似於其他的 Java 元件,Servlet 是可在不同的平台上執行的 Java 類別,這些類別會編譯成無關於平台的位元組碼,可動態載入至啟用 Java 的 SIP 應用程式伺服器(例如:Liberty 設定檔伺服器),並供其執行。儲存器(有時稱為 Servlet 引擎)是負責處理 Servlet 互動的伺服器延伸。SIP Servlet 會透過 Servlet 儲存器交換要求和回應,來與用戶端互動。

SIP 用來建立、修改和終止多媒體 IP 階段作業,包括 IP 電話、顯示狀態和即時傳訊。在這項環境定義中,「顯示狀態」是指使用者的狀態,例如:「作用中」、「離開」或「請勿打擾」。定義用於撰寫 SIP 型 Servlet 應用程式之程式設計模型的標準是 JSR 289。此規格背後的構想是提供 一個類似於 HTTP Servlet 的 Java 應用程式程式設計介面 (API),從而提供好用的 SIP 程式設計模型。類似於 HTTP Servlet 程式設計模型,為了達到最佳的簡單易用性和價值創造時間,某些彈性會受到限制。

不過,由於通訊協定差異頗大,SIP Servlet API 在很多方面不同於 HTTP Servlet。儘管 SIP 是一種要求/回應通訊協定,但每一個要求未必只有一個回應。這種複雜性且需要高效能的解決方案,意味著更容易使 SIP Servlet 原本就採非同步。此外,不像 HTTP Servlet,由於有很多應用程式會擔任其他伺服器或 Proxy 的用戶端或 Proxy,SIP Servlet 的程式設計模型力求用戶端要求易於隨其他邏輯一起建立。

SipServlet 要求

類似於 HTTP Servlet,每一個 SIP Servlet 會延伸 javax.servlet.sip.SipServlet 基礎類別。所有訊息都是透過可延伸的服務方法送入。不過,在 SIP 中,由於要求至回應不是一對一對映,建議的作法是改為延伸 doRequest 或 doResponse 方法。在您延伸 doRequest 或 doResponse 方法時,務必要呼叫延伸方法,處理程序才能完成。

規格必須支援的每一個要求方法都有一個 doxxx 方法,這點和 HTTP 類似。在 HTTP 中,GET 和 POST 要求存在 doGet 和 doPost 等之類的方法。在 SIP 中,每一個 SIP 要求方法都存在 doInvite、doAck、doOptions、doBye、doCancel、doRegister、doSubscribe、doNotify、doMessage、doInfo 和 doPrack 方法。

與 HTTP Servlet 不同的是,SIP Servlet 可針對支援的每一種回應類型提供一些方法。因此,SIP Servlet 包含 doProvisionalResponse、doSuccessResponse、doRedirectResponse 和 doErrorResponse 回應。具體來說,臨時回應(1xx 回應)用來指出狀態,成功回應(2xx 回應)用來指出交易順利完成,重新導向回應(3xx 回應)用來將用戶端重新導向至移動的資源或實體,錯誤回應(4xx、5xx 和 6xx 回應)用來指出失敗或特定的錯誤狀況。這些類型的回應訊息類似於 HTTP,但因為 SIP Servlet 程式設計模型包含用戶端程式設計模型,也必須以程式設計方式來處理回應。


指示主題類型的圖示 概念主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_sip_introapps
檔名:cwlp_sip_introapps.html