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 支援的應用程式執行速度要比使用標準的 IBM Toolbox for Java 類別來得慢,這是因為它需要額外的通訊來支援較小的 proxy 類別。執行方法呼叫較少的應用程式,其效能較不會降低。
在提供 proxy 支援之前,包含公用介面的類別、所有需要處理 要求的類別和應用程式本身都在同一部 Java 虛擬機器上執行。 使用 proxy 支援時,公用介面必須和應用程式在一起, 但處理要求用的類別可在另一部 JVM 執行。Proxy 支援並不會變更公用介面。此相同程式可以與 IBM Toolbox for Java 的 proxy 版本或標準版本一起執行。
多重階層的 Proxy 實務範例目標是讓公用介面的 JAR 檔大小盡可能地小,進而使用最少的時間從 Applet 下載此檔案。當您使用 proxy 類別時,並不需要在用戶端上安裝完整的 IBM Toolbox for Java。而是,在 jt400Proxy.jar 檔上使用 AS400JarMaker,只併入必要的元件,讓 JAR 檔盡可能地小。
圖 2 比較 Proxy JAR 檔與標準 JAR 檔的大小:
圖 2:Proxy JAR 檔與標準 JAR 檔的大小比較
另外還有一個好處就是,使用 proxy 支援時,須透過防火牆開啟的埠較少。使用標準的 IBM Toolbox for Java,您必須開啟多重的埠。這是因為每項 IBM Toolbox for Java 服務都使用不同的埠與伺服器通訊。例如「指令」呼叫使用非 JDBC 的埠,它使用與列印不同的埠...等等。 每一個埠都必須允許它穿過防火牆。 然而,使用 proxy 支援後,所有的資料流程皆經由相同的埠。
經由 proxy 執行有兩種選項可用:標準 proxy 和 HTTP 通道:
java com.ibm.as400.access.ProxyServer -port 1234
IBM Toolbox for Java 使用 proxy 伺服器名稱來判斷使用的是標準 proxy 還是通道 proxy:
com.ibm.as400.access.AS400.proxyServer=myServer
com.ibm.as400.access.AS400.proxyServer=http://myServer
執行標準 proxy 時,Socket 連線存在於用戶端與伺服器之間。 如果該連線失敗,伺服器會清除該用戶端的相關資源。
使用 HTTP 通道時,如果使用 HTTP 通訊協定,proxy 無法連線。 亦即為,每一個資料流都會有新的連線。 因為通訊協定無法連線,所以用戶端應用程式不再作用時,伺服器並不知道。 結果伺服器也不知道何時應清除資源。通道伺服器則是依照預定的間隔(基於逾時值)使用執行緒來清除資源, 因此解決了這個問題。
於預定間隔終了時,執行緒就會執行並清除最近未曾使用的資源。 有兩個系統內容支配執行緒:
為了使用 IBM Toolbox for Java 類別的 proxy 伺服器實作,請完成下列步驟:
java com.ibm.as400.access.ProxyServer
com.ibm.as400.access.AS400.proxyServer=myServer
com.ibm.as400.access.AS400.proxyServer=http://myServer
如果您都要使用 proxy 類別與不在 jt400Proxy.jar 中的類別兩者, 您可以參照 jt400.jar 以代替 jt400Proxy.jar。jt400Proxy.jar 為 jt400.jar 的一個子集,因此所有的 proxy 類別都會內含於 jt400.jar 檔案。
下列三個特定的範例將說明,如何以上述步驟來使用 PROXY 伺服器。