為提升可用性與效能,客戶端常需本地資料儲存(如嵌入式資料庫)。異構資料儲存(伺服端 Oracle、客戶端 HSQLDB/Derby)間的資料同步面臨 ID 映射、變更偵測、衝突解決、傳輸協定等難題。本文提出基於 JDBC + SyncML 的通用複寫方案。
common/lib 與 Sync4J lib。install.properties:設定 Derby JDBC URL/Driver/User/Password、安裝模組 foundation-1.0,pdi-1.1,testsync-1.0。startNetworkServer.bat,用 ij 工具跑 create_table_server.sql 建立 customer1 表(含 cl_op_type, clo_op_time 追蹤欄位)。install.cmd tomcat → sync4j-tomcat.cmd → 啟動 Tomcat。create_table_client.sql 建 customer2,配置 spdssources/testsync.properties JDBC 連線,建置客戶端應用。-- 伺服端 Derby 插入
INSERT INTO customer1 (userid, password, cl_op_type, clo_op_time)
VALUES ('user1', 'pass1', 'N', CURRENT_TIMESTAMP);
-- 客戶端 HSQLDB 插入 (userid 不同)
INSERT INTO customer2 (userid, password, cl_op_type, clo_op_time)
VALUES ('user2', 'pass2', 'N', CURTIME());
-- 執行客戶端同步腳本
TESTSYNC/client/output/testsync.bat
雙向同步完成:customer1 含 user2,customer2 含 user1。
資源輕量的嵌入式 Java 資料庫為分散式應用提供優選。理解複寫流程與挑戰(ID、變更偵測、衝突解決)有助於設計健壯系統。建議擴展:加入衝突解決策略、使用 Trigger 自動記錄變更、支援更多資料庫類型。