如果您需要讓 Proxy 伺服器執行自訂記載等功能,但是該功能不是透過一般的產品設定提供,您可以為 Proxy 伺服器建立自訂過濾器。
開始之前
- 針對含有您所建立之過濾器的構件,決定其儲存位置。您可以從本端或遠端檔案系統,匯入這個構件。
- 您必須知道自訂過濾器安裝所在的 Proxy 伺服器名稱。
- 您必須啟動管理主控台(如果尚未啟動的話),以用來控制這部 Proxy 伺服器。
關於這項作業
對於透過一般產品設定正常提供的控制權,仍無法控制的功能,過濾器提供選用的輔助控制權。舉例來說,應用程式可以使用記載過濾器機制,來抑制具有特定訊息鍵的所有事件。
程序
- 建立自訂過濾器。
- 建立 com.ibm.wsspi.proxy.filter.http.HttpDefaultFilter 的延伸類別。
- 置換 doFilter 抽象方法,以及選擇性置換 init 和 destroy 方法。如果您置換 init 和 destroy
方法,必須呼叫這些方法的超版本,以保留過濾器生命週期功能。
- 撰寫新的 doFilter 方法,以使用 HttpProxyServiceContext 介面。
這個新的 doFilter 方法可以撰寫成如下:
- 變更要求或回應的任何相關聯構件,例如:回應本身、回應碼或標頭。
- 變更要求和回應兩者相關聯的任何構件。
- 取得要求或回應的相關資訊。
- 取得要求和回應兩者的相關資訊。
- 使用 Proxy 伺服器過濾器的受管理 Bean (MBean)(亦即 proxyFilterMbean),來判斷過濾器的正確序數。
proxyFilterMbean = AdminControl.queryNames('type=ProxyServerFilterBean,*')
AdminControl.invoke(proxyFilterMbean, 'viewAllFilters')
會顯示 Proxy 伺服器中所有過濾器的處理順序。
- 建立過濾器描述子檔案 filter-context.xml
這個檔案用來定義具有這個描述子的所有過濾器。下列範例說明 filter-context.xml 檔的基礎版本。
在本例中,描述子用來決定對要求和回應兩者執行給定過濾器的位置與時機。過濾器點是決定過濾器的執行位置。在本例中,過濾器是在收到要求之後執行。序數是決定相對於位於相同過濾器點的其他過濾器,該過濾器要何時處理。序數越高,該過濾器在處理佇列中的位置越高。
<?xml version="1.0" encoding="UTF-8>
<filter-context xmlns="http://www.ibm.com/2003/FilterContextSchema">
<description>Proxy Filter Sample descriptor</description>
<display-name>Proxy Sample Filter</display-name>
<filter>
<filter-name>HttpRequestFilter</filter-name
<filter-class>com.ibm.ws.proxy.sample.HttpRequestFilter</filter-class>
<description>HTTP sample filter to run at REQUEST filter point</description>
<display-name>HTTP Request Sample</display-name>
<protocol-name>HTTP</protocol-name>
<filter-point>RequestReceived</filter-point>
<ordinal>1000</ordinal>
</filter>
</filter-context>
- 將過濾器的已編譯 .class 檔和過濾器描述子,組合成一個 JAR 檔。
- 匯入含有自訂過濾器的構件(JAR 檔)。
- 在管理主控台中,按一下。
- 選取本端檔案系統或遠端檔案系統,以指出 JAR 檔的所在位置。
- 指定 JAR 檔的完整名稱。
JAR 檔的完整名稱包含該檔案所在的目錄路徑以及檔名。如果您不知道 JAR 檔的完整名稱,可以使用瀏覽功能來尋找檔案。
- 建立含有這個構件的商業層次應用程式 (BLA)。
- 在管理主控台中,按一下。
- 在名稱欄位中,為您正在建立的新應用程式指定一個名稱。
您也可以在說明欄位中,指定該應用程式的說明。
- 按一下套用。
- 從構件建立一個 BLA 組合單元 (CU)。
- 在已部署的資產表格中,按一下新增 > 新增資產。
- 選取您在第一個步驟中所匯入的構件名稱,然後按一下繼續。
- 視需要變更組合單元設定,然後按一下修改目標。
- 從可用的部署目標清單中,選取您要在其中部署這個 CU 的 Proxy 伺服器,然後按一下確定。
當您按一下確定時,產品會將組合單元對映至選取的 Proxy 伺服器。
- 指定這個組合單元的關係選項。
- 按一下完成。
如果要驗證產品已順利新增 CU,請按一下application_name。如果產品已順利新增 CU,該 CU 的名稱會顯示在這個 BLA 已部署的資產清單中。
- 啟動 Proxy 伺服器。
- 啟動含有該過濾器的 BLA。
下一步
使用 Proxy 伺服器過濾器 MBean (proxyFilterMbean),驗證該過濾器已安裝在 Proxy 伺服器上,並且相對於部署在 Proxy 伺服器上的其他過濾器,正以正確順序來處理該過濾器。如果您需要變更這個過濾器的處理順序,請對 proxyFilterMbean MBean 執行 modifyOrdinal 指令。