本文將介紹HTTP://www.aliyun.com/zixun/aggregation/7155.html">開發人員如何利用此框架將他們在 IBM® WebSphere® Application Server 上部署的 J2EE™ 應用程式與這些 C++ 庫相集成。
IBM® WebSphere® Application Server 是一個相容 JAVA® EE 6 的、健壯且高度可用的中介軟體環境,它提供了一個平臺來託管和管理各種不同的企業應用程式。 一些使用者可能遇到過這樣的場景,他們需要將基於 JAVA 的應用程式與基於 C/C++ 的原生實現相集成。 例如,涉及國防、航空、天氣預報的應用程式以及其他科學應用程式包含某些演算法,這些演算法只能使用這些原生語言實現,並且在 JAVA 中實現起來太複雜、太困難或風險太高。
要將這些基於 C 的實現與 JAVA 程式相集成,您需要以某種方式在兩種程式設計語言 API 之間建立連接。 JAVA 原生介面 (JNI) 提供了這種銜接方式在 JAVA 與 C/C++ API 之間交換資料。 要實現此解決方案,您需要在 JAVA 中使用您希望向其他 JAVA 類公開的方法定義該介面,從該介面的已編譯代碼生成標頭檔,然後將此標頭檔導入到原生的共用庫模組中,比如針對 Windows® 的動態連結程式庫 (.dll) 和針對基於 UNIX® 的系統的共用物件 (.so) 庫。 這些模組可通過多家供應商提供的各種工具來創建。
本文介紹的步驟將簡化通過 JAVA 原生介面 (JNI) 將部署在 WebSphere Application Server 上的基於 JAVA 的應用程式與基於 C 的實現相集成的過程。 掌握本文的內容之後,您就能夠為 WebSphere Application Server 創建、配置和調用共用庫。
這裡包含的資訊適用于 IBM WebSphere Application Server V6.1、V7 和 V8,並且假設您熟悉相應的 IBM Rational® 工具。 請注意,這裡提供的示例非常基本,僅用於演示所涉及的高級開發過程,不包含典型的應用程式開發中通常包含的資料驗證或其他優秀實踐。
創建原生的共用庫
打開 IBM Integration Designer 並創建一個獨立 JAVA 專案(參見圖 1)。
圖 1. 創建獨立專案
創建一個 JAVA 類,其中包含您希望與原生訪問相關聯的方法(參見圖 2)。 方法聲明將依賴于您希望調用的 C 方法的簽名。 在本例中,假設一個協力廠商 C API 需要簡單類型和一個資料陣列(在本例中,為一個雙精度陣列)。 (要調用另一個原生庫,您需要通過在標頭檔實現期間導入它的標頭檔,將該檔與您的 DLL 相關聯。 )
圖 2. 創建 JAVA 類