發表文章

目前顯示的是有「JAVA」標籤的文章

金財通電子發票測試記錄

金財通有一只程式可以用來與她們的主機進行上/下傳交換檔(只能在Window裡運作),對於 使用Linux開發的人是非常的不便,一開始只好用cifs+autofs把Window的目錄mount進來, 後來臨上線才知道這只程式,只是和她們的FTPs主機(FileZilla)進行檔案同步,所以我得以 排除Window的不便利,首先想到的就是把遠端的FTPs主機跟Linux的目錄(/SCM)進行同步 首先取得測試憑證 $ echo | sudo openssl s_client -connect 61.57.test.ip:990 | sudo openssl x509 -out /tmp/bankpro.pem 若是要mount 遠端目錄到本地 /ftp 目錄,並同步資料下到 /SCM後unmount #以CentOS 7為例 $ yum -y install curlftpfs rsync msmtp $ chcon -t sendmail_exec_t /usr/bin/msmtp #取回憑證 $ echo | sudo openssl s_client -connect 61.57.test.ip:990 | sudo openssl x509 -out /tmp/bankpro.pem $ mkdir /ftp /SCM $ cat ftp.sh #!/bin/bash curlftpfs -o ssl,cacert=/root/bankpro.pem,no_verify_peer,user=帳號:密碼 -f ftps://61.57.test.ip:990/ /ftp & COUNTER=10 #檢查是否已 mount /ftp mountpoint /ftp > /dev/null while  [ $? != 0 -a $COUNTER > 0 ];do    sleep 1    let COUNTER-=1    mountpoint /ftp > /dev/null done mountpoint /ftp ...

以Hazelcast + Spring Session建立Cluster Web

Hazelcast 就像她首頁講的: 分散式計算的記憶體網格 ,簡單來說就是把資料分散放在各個伺服器的記憶體中;像 Hazelcast 類似的架構還有像 Redis 、 memcached 、 Infinispan …(網路上也可以找到很多的比較),那為什麼我選 Hazelcast 呢?很簡單,因為像 Redis 可以在伺服器單獨建置而無須Java,而 Hazelcast 則是採用Java開發,所以程式在單元測試開始時可以一併建置 Hazelcast ,而無須確認記憶體網格伺服器啟動後後再來進行測試,而且因為可隨程式一起建置,更方便開發者在不同的環境內進行測試(比如您下載我的程式,就可以直接執行了,除了Java環境外不須要再建置任何系統)。另外, Hazelcast 有Atomic與Transaction的機制,可適用於開發一些特殊的系統,例如:搶票系統( Hazelcast 支援AWS)。 由於記憶體網格的特性,所以Java Web程式有機會在不同的電腦中複製Session資料,從而實質上達到 Cluster Web。 以前要用Java 建立Cluster Web無疑是煩瑣與費用高昂,而現今仍然也是需要一些成本(近來像 Nginx 這種反向代理伺服器可以用Sticky的方式建立叢集,也就是把用戶各自分配到不同的機器,然後從此用戶就黏著到特定的機器,當然,除非您自己結合 nginx-sticky-module 來編譯 Nginx ,否則也是要花錢買她的商業版本才有提供,而社群版只提供Round Robin的方式將來自用戶的存取分配到各伺服器,但這樣就沒法Keep Session了); Hazelcast 的商業版本目前有提供Tomcat Cluster,而 Redis 目前也只提供Tomcat7的solution,那麼其它的 Web Server咋辦呢(JBoss有,但設定煩瑣)?所以 Spring Session 實做了各種不同Cluster儲存機制的Session Cluster,最棒的是我們根本不用改變我們的程式寫法,因為當我們使用 Session.setAttribute() 時, Spring Session 在背後已經將資料寫入到Cluster Memories了。 後面我要來實做Web Cluster,前提是在開發編譯要先有 Maven...