クラスタにアプリケーションを配備する最も簡単な方法はファーミングサービスを使用することです。それはいずれかのクラスタメンバーの all/farm/ ディレクトリの中のアプリケーションアーカイブファイル (EAR、 WAR および SAR ファイルなど) をホットデプロイし、そしてアプリケーションは同じクラスタ内の全てのノードを自動的に複製します。もしノードが後にクラスタに加われば、クラスタ内の全てのファームに配備されたアプリケーションを引き入れ、スタートアップ時にそれらをローカルに配備します。もし起動中のクラスタサーバーの1つのノードの farm/ フォルダからアプリケーションを削除したら、アプリケーションはローカルでアンデプロイされ、次に全ての他のクラスタサーバのノードのファームフォルダから削除されます (アンデプロイメントをトリガーする) 。現在クラスタに接続してないサーバーのノードのファームフォルダからはアプリケーションを削除すべきです。
現在のところ、実装のバグにより、ファームデプロイメントサービスはホットデプロイアーカイブのためだけに稼動します。もし、はじめに farm/ ディレクトリにアプリケーションを置いてからサーバーをスタートさせたら、アプリケーションは検知されず、クラスタ側にプッシュされません。現在、この不具合の解決に取り組み中です。
アーカイブファイルを展開されたディレクトリではなく、 farm ディレクトリだけに置くことができます。この方法で、リモートノード上のアプリケーションは全てのアーカイブファイルがコピーされたときにだけ配備されます。そうでなければ、アプリケーションはディレクトリが部分的にだけコピーされたときに配備されます (そして失敗します)。
ファーミングはデフォルトで JBoss AS ディストリビューションの all 設定の中で有効になっているので、自分でセットアップする必要はありません。設定ファイルは、 deploy/deploy.last ディレクトリの中にあります。もしカスタム設定でファーミングを有効にしたい場合は、以下に示してある XML ファイル (farm-service.xml という名前にする)を単に作成し、 それを JBoss デプロイディレクトリ $JBOSS_HOME/server/your_own_config/deploy にコピーしてください。カスタム設定でクラスタが有効になっていることを確認してください。
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.ha.framework.server.FarmMemberService"
name="jboss:service=FarmMember,partition=DefaultPartition">
...
<attribute name="PartitionName">DefaultPartition</attribute>
<attribute name="ScanPeriod">5000</attribute>
<attribute name="URLs">farm/</attribute>
</mbean>
</server>
farm-service.xml を配備したら、使用する準備ができています。設定するのに必要な FarmMemberService MBean 属性は以下に示してあります。
PartitionName は、この配備されたファームのためにクラスタの名前を指定します。このデフォルト値は、 DefaultPartition です。
URLs は、配備されるファイルをデプロイヤが監視するディレクトリに示します。この MBean は、そのディレクトリが存在しない場合はそれを作成します。また、 "." は設定ディレクトリに関連します (すなわち、 $JBOSS_HOME/server/all/) 。
ScanPeriod は、フォルダが変更のためにスキャンされるインターバルを指定します。デフォルト値は、 5000 です。
ファーミングサービスは、 deploy/ ディレクトリでホットデプロイメントをスキャンする URLDeploymentScanner の拡張です。従って、FarmMemberService MBean の中の URLDeploymentScanner MBean で定義された全ての属性を使用することが可能です。実際のところは、上記の URLs と ScanPeriod 属性は URLDeploymentScanner MBean から引き継がれたものです。