2009年9月18日 星期五

javadoc 語法備忘

javadoc -encoding MS950 -docencoding UTF-8
         -d target/javadoc
         -sourcepath src/main/java
         -subpackages base.steven.example

說明

  • -encoding source code 的編碼格式
  • -docencoding 文件的編碼格式
  • -d 輸出的目錄
  • -sourcepath 指定原始碼的路徑
  • -subpackages 以遞迴的方式處理子套件,如果不指定則處理一層

2009年9月1日 星期二

JBoss AS Cluster 設定

在 JBoss server 上開啟 cluster 非常容易,本文章是用來記錄一些備忘。


假設有兩台 AP Server S1、 S2 其相關環境如下


s1 ip 192.168.0.28/24


S2 ip 192.168.0.140/24



在 JBoss AS 下指令如下
run.sh -c all -g CLUSTER_NAME -b IP_ADDRESS -Djboss.mesaging.ServerPeerId=
SERVER_PEER_ID

說明



CLUSTER_NAME : 指 cluster 的名稱,用以區隔不同的 cluster

IP_ADDRESS : 指JBoss AS 綁定 ip 位置

SERVER_PEER_ID : 設定 serverPeerId,預設都會是0,必須指定不同的數字用以區隔。否則啟動第二台 AP 時會引發錯誤


如 run.sh -c all -c c1 -b 192.168.0.28 -Djboss.messaging.ServerPeerId=1

如 run.sh -c all -c c1 -b 192.168.0.140 -Djboss.messaging.ServerPeerId=2


上述兩個 JBoss AS 綁在不同的 IP 上,具有相同的 cluster 名稱, 不同的 ServerPeerId。


jboss.message.ServerPeerID 參數設定以可以設定在 JBOSS_HOME/server/all/deploy/messaging/messaging-servie.xml檔中,修改屬性 ServerPeerId 的預設值即可,如此就不用每次啟動時都指定 serverPeerId 值。


如果要提供 Web cluster 的功能,另外需要設定 Web container 的 server.xml 設定檔, 在JBOSS_HOME/server/all/deploy/jbossweb.sar/server.xml 中 Engine tag 中加入 jvmRoute="node1" 這樣屬性,用以使前端的 apache server 用以辦視是那台 AP 在服務現的連線。



前端 HTTP Server 設定



除了設定 cluster 外尚設定前端 apache server 使其能負責分流的工作。
在這邊我們採用 apache mod_proxy_ajp 模組來擔任 load balancer 的角色
所以在 apache server 必須要 load 進 mod_proxy.so、 mod_proxy_balancer.so、mod_proxy_ajp.so 等3個模組

apache 的設定檔如下



接下來我們寫一個應用範列

web.xml



要注意要設定 <distributable/> 這個 tag 否則 session 不會進行複製。


jsp 內容 :



連線後我們可以看到 header

因為有設 jvmRoute 的關系,連線請求會送至上次所服務的主機,所以我們會看到主機名稱都相同。
我們可以關閉目前服務的 JBoss Server,這時我們可以看到網頁由另一主機繼續提供服務。


透過 Balancer Manager 來關閉與設定主機連機


可以觀察雖然關閉與其中主機連線 counter 的號碼還是繼續進的。
主機1

主機2

或者也可透過 mBean 來觀察

連線方式:開啟 JConsole 以遠端方式連線

service:jmx:rmi://your_ip/jndi/rmi://your_ip:1090/jmxconnector

mBean 路徑: jboss.web:type=Manager,host=localhost,path=/your_contextName