我將 Snipsnap 原有的 mckoidb 轉換到 PostgreSQL 之後,現在已經可以很方便地增修、搬移或升級 Snipsnap 的內容和套件而不用同時考慮資料庫設定和備份的問題,也不用擔心因斷電或不正常關閉程式而造成崩壞。在資料庫出現問題時,我也能夠藉由 PostgreSQL 的工具來檢查、設定和修復,而不用對 mckoidb 頭大。並且,至少,我對 PostgreSQL 的信心和熟練度比 mckoidb 多上數倍。
現在 Snipsnap 已經很單純地變成一個 blog server,所以接下來我就打鐵趁熱,準備實現我之前一直想做的事:整合 server。目前我的電腦已經有 resin 當 web server,PostgreSQL 為 db server。因此跑 Snipsnap 等於各多了一個(jetty 與 mckoidb),而且也使得我的 blog 無法使用 80 做為預設 port,必須使用 8080,老實說我一直覺得那個 8080 很礙眼。所以在 Snipsnap 本體只剩下 jetty 後,我就無後顧之憂地開始進行整合。
之前遇到整合的問題主要是在中文編碼的部份。更明確地說,是在 utf-8 在頁面之間的轉換出了問題。因為當時電腦還沒升級,每次修改完後測試都得花上一小段時間,再加上後來開始做中文化,所以整合一事就擱下來了,現在換電腦後重新測試果然就快了不少。
頁面編碼出問題的原因是 Snipsnap 0.4.2a 的做法是將所有的 JSP 轉譯成 Servlet 後包成 jar 放到 /WEB-INF/lib 之下,並在 web.xml 設定 servlet mapping。這之中每個頁面都是 iso-8859-1 的編碼類型,並且 <c:import>
進來的檔案也沒有指定編碼,所以英文沒問題,但中文會吐血吐的很嚴重。因此我狠心把相關 jar 刪除後,直接將所有的 JSP 放到目錄下,修改 web.xml ,並在 JSP 中加上編碼部份的程式碼,整合的工作就完成了。詳細的步驟和檔案日後會補上以供大家參考。