首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J/XFS 入門(一):架構概觀與 FDI 參考實作安裝配置

     編輯:Java 相關知識

隨著金融機構大量引入 Java 平台構建銀行解決方案,控制讀卡機、印表機、ATM 等專用硬體成為剛需。J/XFS (Java Extensions for Financial Services) 為銀行應用開發者提供可靠架構,定義標準 Java 介面支援各類輸入/輸出裝置,賦予應用程式物件導向、獨立於硬體廠商與作業系統的能力,甚至不限定特定通訊拓撲。

本文為兩部分系列之第一部分,介紹 J/XFS 及其參考實作 FDI for J/XFS (Financial Device Interface)。將討論需求、歷史、設計決策,解釋核心組件協作,並示範安裝配置 FDI (可從 J/XFS 論壇免費取得)。閱畢您將理解如何安裝 J/XFS、FDI 如何實作架構,並完成含完整可操作示範的軟體安裝配置,為第二部分(裝置服務開發實作)鋪路。

J/XFS 架構設計決策

核心決策之一:裝置上大多數操作以非同步方式執行。發送訊息給 J/XFS 裝置時,呼叫方法立即回傳識別號,實際結果稍後透過獨立事件回報(圖 1)。

非同步操作序列圖

前身 WOSA/XFS 使用 C 語言定義介面,缺乏物件導向概念且綁定單一作業系統。為便利熟悉 WOSA/XFS 的開發者,J/XFS 基本裝置規格基於 WOSA/XFS,雖使部分規格看似非純物件導向,但促成架構被接受。

網路與通訊受高度重視:J/XFS 裝置獨立於廠商硬體,可分散部署於網路。網路硬體與協定對應用程式完全透明,通訊層可完全交換,支援任意網路技術實作。

核心內部組件

J/XFS 為帶有支援性中介軟體的傳統用戶端/伺服器環境,即核心。核心是 J/XFS 核心,提供基礎設施與安裝所需 Java 類別庫,負責追蹤所有連接裝置、應用程式與裝置間訊息/事件傳遞,並提供持久化儲存、日誌追蹤等支援功能。

核心由兩個獨立 Java API 組成(應用程式端、硬體裝置端),亦作為程式設計框架(圖 2)。

J/XFS 環境組件

識別符體系

每個 Java 應用程式運行於 J/XFS 用戶端。核心管理用戶端清單,以配置鍵區分多用戶端。多用戶端可組成邏輯單元(工作站名),每用戶端屬於一個工作站。「工作站名+配置鍵」唯一識別用戶端。

裝置識別同理:每裝置連接一用戶端,用戶端屬某工作站。同一工作站內裝置 裝置名 唯一。「工作站名+裝置名」唯一識別裝置。工作站名為邏輯概念,不一定對應實體機器。

應用程式介面 (API)

應用程式無需知曉硬體機器細節,只需知曉要使用的裝置類型。J/XFS 標準為每種支援裝置定義 Java 介面,目前涵蓋:

  • 收據/日誌/存摺/文件印表機、掃描器
  • 現金發放/回收機、ATM
  • PIN 鍵盤
  • 晶片卡/磁條卡讀卡機
  • 文字輸入/輸出裝置
  • 警報裝置、庫存單元
  • 支票閱讀器/掃描器、感測器/指示器系統、攝影機

這些介面定義裝置功能,實作由核心提供,稱為裝置控制項,代表應用程式內的裝置句柄與代理。所有裝置相關訊息發送給裝置控制項,核心確保送達實體裝置。操作結果以事件回報,需註冊適當偵聽器物件接收。

裝置介面

核心另一端定義獨立 API 插入硬體,與應用程式 API 完全獨立。核心透過此介面存取裝置,實作稱為裝置服務,負責控制硬體的 J/XFS 相容行為。裝置服務與硬體緊密結合,使用特定硬體必須提供相容裝置服務。核心為裝置服務提供「纖細」介面,允許將事件回送應用程式。

通訊層

核心內部可使用任意通訊類型。J/XFS 定義明確介面允許通訊層完全交換,新類型通常由核心開發團隊整合。應用程式/裝置服務開發者無需知曉實際通訊類型,部署後甚至可不修改代碼切換通訊層。

特殊情況:無需/無法分散部署時,可選 local 通訊類型,在單一 JVM 內交換資訊,行為與網路通訊細微差異,可視為無網路的進程內通訊。

圖 3 整合圖 1 異步模型與上述組件,描繪 J/XFS 異步裝置存取全貌。

伺服器端

J/XFS 為用戶端/伺服器系統,環境中必須有唯一 J/XFS 伺服器,屬核心組件之一,執行三大任務:

  1. 所有 J/XFS 組件的持久化儲存 (配置伺服器為首選位置,為每應用程式/裝置服務提供虛擬空間,運行時需超出生命週期的資訊發送至此)
  2. 動態行為監控:收集用戶端啟動可用性、裝置服務初始化成功資訊,讓應用程式能請求裝置控制項開始使用
  3. 管理任務與系統管理存取點:監控器 API 提供遠端啟動/停止裝置服務、關閉用戶端、修改配置伺服器值等能力

用戶端

運行時 Java 應用程式即 J/XFS 用戶端。首要任務初始化裝置管理器,核心組件負責建立環境與管理運行時行政任務。

從裝置管理器取得裝置控制項:提供唯一裝置識別符(工作站名+裝置名),若識別有效且裝置可用,回傳裝置控制項。不知識別符時可請求裝置清單(所有活動裝置、特定工作站裝置、所有配置裝置等)。

每用戶端含日誌記錄器物件,可發送日誌/追蹤資訊。偵聽器可向日誌記錄器註冊,可加濾波器僅接收關心資訊,支援自訂日誌偵聽器類別靈活處理。

實作:FDI for J/XFS

J/XFS 論壇實作核心,產品稱為 FDI for J/XFS,可免費下載。包含所有定義介面與類別,以及工具與支援類別:

  • 基本配置工具 (BCT):命令列工具,完成基本配置/管理任務(發送配置資訊、查看用戶端清單),支援互動與批次模式
  • 日誌伺服器與日誌偵聽器:透過 RMI 集中收集多用戶端日誌/追蹤
  • 裝置服務啟動器:無業務邏輯的 J/XFS 應用程式,唯一目的啟動用戶端以便遠端存取連接裝置
  • Melange Demo:GUI 範例應用程式,執行所選裝置操作,協助熟悉環境。需 Java 基礎類別庫。提供有限功能裝置服務範例(模擬器,不管理真實硬體),含原始碼,不可作真實裝置服務模板

安裝 FDI for J/XFS

無自動安裝程式,需手動安裝 1.01 版。需求:JVM 1.1.8+,Java 2 平台需關閉安全性。用戶端 100 MHz 工業標準 PC 足夠,伺服器需 200 MHz+。精確需求請參閱文件。

步驟:

  1. 解壓縮 ZIP 至自選目錄,閱讀 readme.html。含 PDF 額外文件與 HTML API 文件 (API 文件另打包為 jxfsapidoc1.01.zip)
  2. 將 JAR 加入系統 CLASSPATH:用戶端 jxfsclient1.01.jar,伺服器 jxfsserver1.01.jar
  3. 伺服器系統建立空目錄儲存持久化資料,例:/home/jxfs/repository

配置 FDI for J/XFS

配置較棘手,請仔細遵循每步驟。

安裝用戶端與伺服器

  • 為每個用戶端邏輯組選定唯一工作站名,至少一個。例:developerWorks
  • 組內每用戶端選定唯一配置鍵。例:用戶端 jxfsClient,伺服器 jxfsServer
  • 兩處涉及 TCP/IP 通訊:用戶端-伺服器、用戶端-用戶端,各需未使用的 TCP/IP 埠號。同一主機多用戶端時,用戶端間通訊埠號必須不同。例:用戶端/伺服器通訊埠 2323,用戶端間通訊埠 2424。工作站名與 TCP/IP 主機名完全獨立(可相同)

配置伺服器

伺服器從 server.cfg 讀取配置(解壓縮目錄中有骨架檔)。編輯填入:

  • workstation_name:伺服器工作站名 (例 developerWorks)
  • config_key:伺服器配置鍵 (例 jxfsServer)
  • sdm_addparm_1:用戶端/伺服器通訊 TCP/IP 埠 (例 2323)
  • sdm_addparm_2:持久化資料目錄位置 (例 /home/jxfs/repository)
  • log_file_name:啟動日誌路徑 (例 /var/log/jxfs/server.log)

其餘值保持預設。使用反斜線作路徑分隔符的系統中,反斜線須轉義為 \\。

啟動伺服器:

java com.jxfs.forum.tools.serverstart.JxfsServer server.cfg

完成此步驟,J/XFS 環境已配置完成並運行。

配置裝置服務範例供 Melange Demo 使用

使用附帶 BCT 批次檔 developerWorks.bct 設定用戶端。編輯檔案替換所有:

  • <device_port>:用戶端間通訊埠 (例 2424)
  • <hostname>:用戶端所在機器 TCP/IP 主機名

配置 BCT

developerWorks.bct 為屬性檔 (鍵值對):

  • workstation_name:用戶端工作站名 (例 developerWorks)
  • config_key:BCT 配置鍵 (可設 BCT)
  • sdm_addparm_1 與 mgmt_addparm_1:用戶端/伺服器通訊埠與伺服器主機名,以分號隔開 (例 2323;serverHost)
  • log_file_name:BCT 啟動日誌 (例 /var/log/jxfs/bct.log)

BCT 屬於系統管理工具,位於 jxfsserver1.01.jar (非用戶端 JAR)。使其可用並啟動:

java com.jxfs.forum.tools.bct.BCT @developerWorks.bct

參數前須冠 @ 符號。

Melange Demo

編輯 demo.cfg:

  • workstation_name:用戶端工作站名 (例 developerWorks)
  • config_key:用戶端配置鍵 (例 jxfsClient)
  • sdm_addparm_1:用戶端/伺服器通訊埠與伺服器主機名,分號隔開 (例 2323;serverHost)
  • log_file_name:用戶端啟動日誌 (例 /var/log/jxfs/jxfsClient.log)

若依步驟操作,現可啟動首個 J/XFS 用戶端。Melange Demo 非核心組件,存於 jxfsdemo1.01.jar。使 JAR 可用並啟動:

java com.jxfs.samples.application.MelangeDemo demo.cfg

需使 JVM 存取 Java 基礎類別庫 (swingall.jar 含 Swing)。圖 4 為 Melange Demo 圖解,操作體驗 J/XFS。

帶裝置清單的 Melange Demo

總結

本文僅為介紹,無法涵蓋所有面向。詳細資訊見 FDI ZIP 文件。建議操作示範並閱讀參考資料文件。第二部分將介紹 J/XFS 框架下裝置服務開發實作,敬請期待!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved