工作類別用以分類要求,以便將原則套用在要求上。套用在要求上的原則分為兩種類型:遞送原則和服務原則。
permit:<application_name> | 在這項遞送原則中,application_name 是使用選用版本指定元來遞送時的應用程式名稱。這可讓要求按正常般繼續進行。 |
permitsticky:<application_name> | permitsticky 遞送原則和 permit 遞送原則相同, 不同之處在於「隨需應變路由器 (ODR)」亦會針對任何出自相同用戶端的未來要求, 維護其用戶端和伺服器之間的親緣性。在此情況下, ODR 會先在回應中加入 SET-COOKIE 標頭, 然後再將回應傳給用戶端。 |
reject:<HTTP_error_code> | 這項遞送原則會使得 ODR 拒絕任何含有指定 HTTP 錯誤碼的要求。例如“reject:503”會傳回 503 “服務無法使用”錯誤。 |
redirect:<URL> | 當使用這項遞送原則時,ODR 會將重新導向 (redirect) 傳回給指定的 URL。 |
有效的服務原則純為交易類別名稱清單。而交易類別會參照單一服務類別。
工作類別有四種類型:
下圖說明要求的流程, 其中是以安裝在 WebSphere Extended Deployment 上的應用程式為目標。要求會套用在「應用程式遞送原則」工作類別上, 以決定遞送原則。如果產生的遞送原則為 permit 或 permitsticky, 則要求會繼續套用在「應用程式服務原則」工作類別上,以決定服務原則和交易類別名稱。
每一個應用程式都含有預設的「應用程式遞送原則」和 「應用程式服務原則」工作類別。您可以建立其他非預設的工作類別。應用程式的預設遞送原則為 permit:<application_name>。預設服務原則為 Default_TC,此為預設交易類別。
每一個工作類別都含有一個按順序排列的選用規則清單, 以針對特定要求評估該規則清單,來決定該要求的原則。每一項規則由一個 Boolean 表示式和一個原則值組成。對特定要求來說, 如果表示式評估為 true, 則會使用該規則的相關原則。
規則的 Boolean 表示式的語法和語意,和結構化查詢語言 (SQL) 表示式的 WHERE 子句類似。更精確地說,表示式的語法是遵照 「Java 傳訊服務 (JMS) 1.1」規格來定義。如需相關資訊,請參閱ODR 規則型要求的分類。
在 JMS 規格中, ID 相當於可和要求相關聯的各種屬性,例如:特定查詢參數、Cookie 或 HTTP 標頭。JMS ID 可視為一種要求變數。這些變數可以是某通訊協定特有的。例如, SOAP 服務名稱是一個僅適用於 SOAP 工作類別的要求變數。下表列出要求變數以及其相關的通訊協定。
要求變數 | 有效的通訊協定 | 說明 |
---|---|---|
clienthost | HTTP、SOAP、IIOP | 完整的用戶端主機名稱。 |
clientipv4 | HTTP、SOAP、IIOP | 使用網際網路通訊協定第 4 版 (IPv4) 點式四碼位址類型 n.n.n.n 的用戶端機器 IP 位址。 |
clientipv6 | HTTP、SOAP、IIOP | 遵循 Request for Comments 1924 (RFC 1924) 的用戶端機器 IPv6(網際網路通訊協定第 6 版)128 位元位址類型 x:x:x:x:x:x:x:x。 |
cookie$<name> | HTTP、SOAP | Cookie 名稱。例如,cookie$My_Cookie_Name='My_Cookie_Value' 表示式會測試要求,
以查看其中是否含有名為 My_Cookie_Name 的 Cookie,且其值為 My_Cookie_Value。若要測試特定 Cookie 是否存在,
請使用下列表示式之一:cookie$MyCookieName IS NOT NULL cookie$MyCookieName IS NULL |
gid | HTTP、SOAP、IIOP | 要求傳送端的群組 ID。這個變數會假設 JSeal 外掛程式安裝在 ODR 中。 |
header $<name> | HTTP、SOAP | 標頭的名稱和值。例如,header$Host='localhost' 表示式會測試要求,
以查看其中是否含有一個 HTTP 主機標頭,且其值為 localhost。若要測試 Host 標頭是否存在,
請使用下列表示式之一:cookie$Host IS NOT NULL cookie$Host IS NULL |
HTTPMethod | HTTP、SOAP | 要求的 HTTP 方法。可能的值有:POST、GET、PUT 和 DELETE。 |
MIMEType | HTTP、SOAP | 要求的 MIME 類型。 |
port | HTTP、SOAP | 接收要求所在的接聽埠。 |
protocol | 全部 | 傳輸要求所用的通訊協定。目前支援的通訊協定有:HTTP、HTTPS、SOAP 和 SOAPS。 |
queryparm$<name> | HTTP、SOAP | 標頭的名稱和值。例如,queryparm$timezone='EST' 表示式會測試要求,
以查看其中是否含有一個名為 timezone 的 HTTP 查詢參數,且其值為 EST。若要測試查詢參數是否存在,
請使用下列格式之一:queryparm$timezone IS NOT NULL queryparm$timezone IS NULL |
serverhost | HTTP、SOAP、IIOP | 伺服器的完整主機名稱。 |
serveripv4 | HTTP、SOAP、IIOP | 採用 IPv4 點式四碼位址類型 n.n.n.n 的伺服器機器 IP 位址。 |
serveripv6 | HTTP、SOAP、IIOP | 遵循 RFC 1924 的伺服器機器 IPv6 128 位元位址類型 x:x:x:x:x:x:x:x。 |
uid | HTTP、SOAP、IIOP | 要求傳送端的使用者 ID。這會假設 JSeal 外掛程式安裝在 ODR 中。 |
service | SOAP | Web 服務的名稱。 |
operation | SOAP | Web 服務作業的名稱。 |
clienthost LIKE '%.ibm.com''%.ibm.com' 為一個文字,用以比較要求的用戶端主機名稱。當要求是由 ibm.com 網域中的機器所發, 這個表示式都會評估為 true。請用單引號括住字串文字。請勿用單引號括住數值文字。括弧配上 AND、OR 和 NOT 運算子也可用來構成複合的 Boolean 表示式。詳細說明,請參閱 JMS 1.1 規格。