以Java 1.4解決UTC以及SQL 2008連接

作者/陳柏宇

前言 本身在安裝Windows 2008和SQL Server 2008原本想說就只是灌個機器這麼簡單,但沒想到當這兩系統碰上java的jdk1.4版本時遇到很多問題,因此本文章將針對遇到的幾個問題來討論。 當初發現此問題是因為剛好有專案使用的軟體Tibco 5.2是搭在jdk1.4版,且無法更改其jdk版本,因此才發現其實可以透過一些設定來解決這樣的問題。 JDK的簡單介紹 Java Development Kit (JDK) 是Sun公司針對Java開發人員發布的免費軟體開發工具包(SDK,Software development kit)。自從Java推出以來,JDK已經成為使用最廣泛的Java SDK。由於JDK的一部分特性採用商業許可證,而非開源。因此,2006年Sun公司宣布將基於GPL協議的開源JDK,使JDK成為自由軟體。在去掉了少量閉源特性之後,Sun公司最終促成了GPL協議的OpenJDK的發布。 jdk1.4安裝到Windows 2008時發生時區問題 windows 2008設定在台灣的預設時間為UTC+8,而當Tibco版本太舊使用jdk1.4會無法判斷UTC時區,所以自行設定時區為GMT+0而造成程式所有時間顯示錯誤的問題。 而什麼是GMT?什麼是UTC?以下跟大家做個解說 .格林威治標準時間GMT 十七世紀,格林威治皇家天文臺為了海上霸權的擴張計畫而進行天體觀測。1675年舊皇家觀測所(Old Royal Observatory)正式成立,到了1884年決定以通過格林威治的子午線作為劃分地球東西兩半球的經度零度。觀測所門口牆上有一個標誌24小時的時鐘,顯示當下的時間,對全球而言,這裡所設定的時間是世界時間參考點,全球都以格林威治的時間作為標準來設定時間,這就是我們耳熟能詳的「格林威治標準時間」(Greenwich Mean Time,簡稱G.M.T.)的由來,標示在手錶上,則代表此錶具有兩地時間功能,也就是同時可以顯示原居地和另一個國度的時間。 .世界協調時間UTC 多數的兩地時間錶都以GMT來表示,但也有些兩地時間錶上看不到GMT字樣,出現的反而是UTC這3個英文字母,究竟何謂UTC?事實上,UTC指的是Coordinated UniversalTime- 世界協調時間(又稱世界標準時間、世界統一時間),是經過平均太陽時(以格林威治時間GMT為準)、地軸運動修正後的新時標以及以「秒」為單位的國際原子時所綜合精算而成的時間,計算過程相當嚴謹精密,因此若以「世界標準時間」的角度來說,UTC比GMT來得更加精準。其誤差值必須保持在0.9秒以內,若大於0.9秒則由位於巴黎的國際地球自轉事務中央局發佈閏秒,使UTC與地球自轉週期一致。所以基本上UTC的本質強調的是比GMT更為精確的世界時間標準,不過對於現行錶款來說,GMT與UTC的功能與精確度是沒有差別的。 jdk安裝到Windows 2008時發生時區問題的解決方法 透過手動強制設定jdk時區為GMT+8即可解決,設定方式如下: 在tibco的template以及.tra的設定檔中jdk設定檔加入以下設定 java.property.user.timezone=GMT+8 JDK 1.4如何連線SQL Server 2008? JDK 1.4連線JDBC無法支援連線SQL Server 2008 上網找到jtds可以連線SQL Server2008的模組 http://sourceforge.net/projects/jtds/files/latest/download?source=files Driver設定用法範例如下: jdbc:jtds:sqlserver://%%SqlFetcIP%%;databaseName=Fetc 結語 安裝win2008時,發現公司某些基於JDK1.4的項目在本地跑有些許問題,其中之一就是用Tibco獲得的時間問題。通過多次實驗,發現是win2008使用UTC導致的問題,但是JDK1.6沒有這些問題,估計是1.4的小bug吧,在本機,1.4獲得的時間慢了8小時,其實它獲得的時間實際上也沒有問題,為什麼這麼說呢,因為他顯示是如Mon Oct 25 03:00:29 GMT 2010,而GMT是英國格林威治時間,所以比現在慢8小時也是正確的,注意,我們是GMT+08:00,後來查找網路文章發現可以使用Timezone設定GMT+8解決此問題,此外jdk1.4因版本太舊在連線SQL Server2008時也還沒支援的jdbc驅動包。 參考資料 http://sriksolutions.wordpress.com/2011/02/23/setting-time-zone-in-tibco-bw/ http://commandos.blog.51cto.com/154976/259261