新增 Web 服務廣域處理程式

如果元件需要將 Web 服務處理程式登錄至所有 Web 服務端點,則必須實作 Handler 介面,並將該實作登錄在服務登錄中。

開始之前

廣域處理程式服務是利用 jaxws-2.2、或 jaxrs-1.1jaxrs-2.0,或 jaxrs-2.0 client 來提供,因此您必須在 server.xml 檔中指定下列特性或特性組合:
  • jaxws-2.2
  • jaxrs-1.1
  • jaxrs-2.0
  • jaxrs-2.0 client
  • jaxws-2.2jaxrs-1.1
  • jaxws-2.2jaxrs-2.0
  • jaxws-2.2jaxrs-2.0 client

關於這項作業

處理程式 SPI 提供不同的內容,來指定要啟用處理程式的 ENGINE_TYPE、FLOW_TYPE 及用戶端 (IS_CLIENT_SIDE) 或伺服器端 (IS_SERVER_SIDE)。

您必須實作 Handler 介面,並將實作類別登錄至服務登錄。

每一個 Liberty SPI 的 Java API 文件可在個別的壓縮檔中找到,該檔案位於 ${wlp.install.dir}/dev 目錄的其中一個 Javadoc 子目錄中。

部署處理程式軟體組

您可以使用 WebSphere® Application Server Developer Tools for Eclipse 來部署處理程式軟體組。

程序

  1. 按一下檔案 > 新建 > 其他,然後展開 OSGi
  2. 按一下 OSGi 軟體組專案,然後按下一步。這時會開啟「新建 OSGi 軟體組專案」視窗。
  3. 輸入 MyHandler 作為專案名稱。在目標執行時期清單中,選取 WebSphere Application Server Liberty。如果沒有任何執行時期,請按一下新建執行時期,建立一個 WebSphere(r) Application Server Liberty 執行時期。
  4. 清除將軟體組新增至應用程式圓鈕。
  5. 按兩次下一步,並移至「OSGi 軟體組」頁面。
  6. 在「OSGi 軟體組」頁面上,勾選產生啟動器,這是一個用來控制軟體組生命週期的 Java 類別。保留啟動器名稱 myhandler.Activator,並按一下完成
  7. 按一下視窗 > 喜好設定 > 外掛程式開發 > 目標平台,並選取具有 SPI 的 WebSphere Application Server Liberty
    註: 確定您已在 3 中新增 WebSphere Application Server Liberty 執行時期。
  8. 按一下套用,然後按一下確定
  9. 展開 MyHandler > BundleContent > META-INF,並使用外掛程式資訊清單編輯器來開啟 MANIFEST.MF 檔。
  10. 建立 MyHander 和 MyActivitor 類別:
    ...
    import com.ibm.wsspi.webservices.handler.Handler;
    ...
    
    public class MyHandler implements Handler {
        ...
        public void handleFault(GlobalHandlerMessageContext arg0) {
            ...
        }
        public void handleMessage(GlobalHandlerMessageContext msgctxt) throws Exception {
    
            if (msgctxt.getFlowType().equalsIgnoreCase(HandlerConstants.FLOW_TYPE_OUT)) {
                }
            ...
         }
         ....
    }
    public class MyActivator implements BundleActivator {
        ...
        public void start(BundleContext context) throws Exception {
    
              final Hashtable<String, Object> handlerProps = new Hashtable<String, Object>();
               handlerProps.put(HandlerConstants.ENGINE_TYPE, HandlerConstants.ENGINE_TYPE_JAXWS);
               handlerProps.put(HandlerConstants.FLOW_TYPE, HandlerConstants.FLOW_TYPE_IN);
               handlerProps.put(HandlerConstants.IS_CLIENT_SIDE, true);
               handlerProps.put(HandlerConstants.IS_SERVER_SIDE, true);
               handlerProps.put(org.osgi.framework.Constants.SERVICE_RANKING, 3);
               MyHandler myHandler = new MyHandler();
               context.registerService(Handler.class, myHandler, handlerProps);
               ...
            }
            ...
       }
  11. 按一下檔案 > 新建 > 其他,然後展開 OSGi
  12. 按一下 Liberty 特性專案,然後按下一步。這時會開啟「Liberty 特性專案」視窗。
  13. 指定 MyHandlerFeature 作為專案名稱。
  14. 在目標執行時期清單中,選取 WebSphere Application Server Liberty,然後按下一步。即會開啟「OSGi 軟體組選擇頁面」。
  15. 在「OSGi 軟體組選擇頁面」中,選取 MyHandler 1.0.0 作為包含的軟體組,並按一下完成
  16. 修改 MyHandler 專案中的 Manifest:MyHandler。按一下 MANIFEST.MF 標籤,並將 com.ibm.wsspi.webservices.handler 新增至 Import-pacakge 元素。
  17. 用滑鼠右鍵按一下 MyHandlerFeature 專案,並按一下安裝特性,將特性安裝至 Liberty 執行時期。
  18. 編輯 server.xml 檔來啟用 MyHandlerFeature:
    <featureManager> ......
    <feature>jsp-2.2</feature>
    <feature>jaxws-2.2</feature> // 您也可以使用下列其中一個特性或特性組合:jaxrs-1.1、jaxrs-2.0、jaxrsClient-2.0、jaxws-2.2 和 jaxrs-1.1、jaxws-2.2 和 jaxrs-2.0、jaxws-2.2 和 jaxrsClient-2.0
    <feature>usr:MyHandlerFeature</feature> ......
    </featureManager>

指示主題類型的圖示 作業主題



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