Proxy 支援

IBM® Toolbox for Java™ 包含部分類別的 proxy 支援。Proxy 支援是一種處理程序,IBM Toolbox for Java 需要用它來在非應用程式實際所在的 Java 虛擬機器 (JVM) 上執行作業。

proxy 類別位於 jt400Proxy.jar,隨附於 IBM Toolbox for Java 的其餘部分。proxy 類別與 IBM Toolbox for Java 中的其他類別相同,包含一組與平台無關的 Java 類別,可在含有 Java 虛擬機器的任何一部電腦上執行。proxy 類別分派所有的方法呼叫到伺服器應用程式, 或是 PROXY 伺服器。完整的 IBM Toolbox for Java 類別位於 proxy 伺服器上。當用戶端使用 proxy 類別時,此要求會轉送到建立並管理實際 IBM Toolbox for Java 物件的 proxy 伺服器。

圖 1 顯示標準和 proxy 用戶端連線到伺服器的方式。 Proxy 伺服器可以是包含資料的 IBM i 伺服器。

圖 1:標準用戶端和 proxy 用戶端如何連線到伺服器

標準及 Proxy 連線

使用 proxy 支援的應用程式執行速度要比使用標準的 IBM Toolbox for Java 類別來得慢,這是因為它需要額外的通訊來支援較小的 proxy 類別。執行方法呼叫較少的應用程式,其效能較不會降低。

在提供 proxy 支援之前,包含公用介面的類別、所有需要處理 要求的類別和應用程式本身都在同一部 Java 虛擬機器上執行。 使用 proxy 支援時,公用介面必須和應用程式在一起, 但處理要求用的類別可在另一部 JVM 執行。Proxy 支援並不會變更公用介面。此相同程式可以與 IBM Toolbox for Java 的 proxy 版本或標準版本一起執行。

使用 jt400Proxy.jar 檔案

多重階層的 Proxy 實務範例目標是讓公用介面的 JAR 檔大小盡可能地小,進而使用最少的時間從 Applet 下載此檔案。當您使用 proxy 類別時,並不需要在用戶端上安裝完整的 IBM Toolbox for Java。而是,在 jt400Proxy.jar 檔上使用 AS400JarMaker,只併入必要的元件,讓 JAR 檔盡可能地小。

圖 2 比較 Proxy JAR 檔與標準 JAR 檔的大小:

圖 2:Proxy JAR 檔與標準 JAR 檔的大小比較

Proxy JAR 檔與標準 JAR 檔的大小比較

另外還有一個好處就是,使用 proxy 支援時,須透過防火牆開啟的埠較少。使用標準的 IBM Toolbox for Java,您必須開啟多重的埠。這是因為每項 IBM Toolbox for Java 服務都使用不同的埠與伺服器通訊。例如「指令」呼叫使用非 JDBC 的埠,它使用與列印不同的埠...等等。 每一個埠都必須允許它穿過防火牆。 然而,使用 proxy 支援後,所有的資料流程皆經由相同的埠。

標準 proxy 和 HTTP 通道

經由 proxy 執行有兩種選項可用:標準 proxy 和 HTTP 通道:

IBM Toolbox for Java 使用 proxy 伺服器名稱來判斷使用的是標準 proxy 還是通道 proxy:

執行標準 proxy 時,Socket 連線存在於用戶端與伺服器之間。 如果該連線失敗,伺服器會清除該用戶端的相關資源。

使用 HTTP 通道時,如果使用 HTTP 通訊協定,proxy 無法連線。 亦即為,每一個資料流都會有新的連線。 因為通訊協定無法連線,所以用戶端應用程式不再作用時,伺服器並不知道。 結果伺服器也不知道何時應清除資源。通道伺服器則是依照預定的間隔(基於逾時值)使用執行緒來清除資源, 因此解決了這個問題。

於預定間隔終了時,執行緒就會執行並清除最近未曾使用的資源。 有兩個系統內容支配執行緒:

使用 proxy 伺服器

為了使用 IBM Toolbox for Java 類別的 proxy 伺服器實作,請完成下列步驟:

  1. 於 jt400Proxy.jar 上執行 AS400ToolboxJarMaker, 捨棄不需要的類別。這是選用步驟,但建議使用。
  2. 傳遞 jt400Proxy.jar 到用戶端。若為 Java Applet,您可能可以從 HTML 伺服器下載 JAR 檔。
  3. 決定您要用作 PROXY 伺服器的伺服器。
    • 對 Java 應用程式而言,proxy 伺服器可以是任一部電腦。
    • 對 Java Applet 而言,proxy 伺服器必須在與 HTTP 伺服器相同的電腦上執行。
  4. 確定已將 jt400.jar 置於伺服器上之 CLASSPATH 中。
  5. 啟動 proxy 伺服器或使用 proxy servlet:
    • 若為標準 proxy,使用下列指令來啟動 proxy 伺服器:
                java com.ibm.as400.access.ProxyServer
    • 若為通道 proxy,請將 HTTP 伺服器配置為使用 proxy servlet。servlet 類別名稱是 com.ibm.as400.access.TunnelProxyServer, 包含於 jt400.jar 中。
  6. 在用戶端上,設定一系統內容以識別 proxy 伺服器。IBM Toolbox for Java 使用此系統內容來判斷所使用的是標準 proxy 還是通道 proxy。
    • 若為標準 proxy,內容值是執行 proxy 伺服器的機器名稱。例如:
                com.ibm.as400.access.AS400.proxyServer=myServer
    • 若為通道 proxy,請用 URL 來強制 proxy 用戶端使用通道。例如:
                com.ibm.as400.access.AS400.proxyServer=http://myServer
  7. 請執行用戶端程式。

如果您都要使用 proxy 類別與不在 jt400Proxy.jar 中的類別兩者, 您可以參照 jt400.jar 以代替 jt400Proxy.jar。jt400Proxy.jar 為 jt400.jar 的一個子集,因此所有的 proxy 類別都會內含於 jt400.jar 檔案。

範例:使用 proxy 伺服器

下列三個特定的範例將說明,如何以上述步驟來使用 PROXY 伺服器。

已啟用類別來使用 proxy 伺服器

已啟用部分 IBM Toolbox for Java 類別來使用 proxy 伺服器應用程式。這包括下列各項:

到目前為止,其他類別尚未支援 jt400Proxy。 同時,只使用 Proxy JAR 檔,並無法使用整合檔案系統許可權。然而,您可以使用 JarMaker 類別, 來含括 jt400.jar 檔案的這些類別。