オープンソースのジョブ管理システム「SOS JobScheduler」ですが、動作させるには今のところ32bit環境が必要です。OSはWindowsでもLinuxでもなんですけどね。(Linuxの64bit版はベータテストに入っているので、そのうちリリースされるものと思います。)
JobSchedulerのサーバ側はどうしても32bit版のJavaを準備しないと動作しないようです。SOS社が公式で出しているAmazon EC2(64bit環境)へのインストールマニュアルを見ても、Javaは32bit版をインストールするように書いてありますので、やはりそういうことなのでしょう。
ただ、ジョブをGUIで作成するJOE(JobScheduler Object Editor)は、64bit版のWindows7及びCentOS6.3で動作させることに成功しました。ここでは、その方法についてまとめておこうと思います。
64bit版のOSで動作させるなら、JavaとSWTを64bit版で揃えよう
JOEはJavaのSWTを使って実装されています。SWTというのはEclipseでも使われているのですが、JavaでOSネイティブのユーザインタフェースを作る際に使われるライブラリです。そのため、JOEはJavaアプリでありながらOSネイティブのユーザインタフェースネイティブに近い見た目を有しています。操作性の向上にも役立っていることでしょう。
ただ、SWTはOSごと、さらには32bitと64bitではそれぞれ別のバイナリが提供されているので、それがずれてしまうとアプリが起動しなくなるのです。
JOEのインストール時(JobSchedulerのフルインストール時に導入されるJOEを含む)に、swt.jar(SWTライブラリの実体)は同梱されているのですが、Windows版でもLinux版でも32bit版のものになっています。
ここで、
32bit版のJava + 32bit版のSWT + 32ビット版のWindows/Linux
であれば、問題なく動作するわけです。
しかし、
64bit版のJava + 32bit版のSWT + 64bit版のWindows/Linux
では、JavaからSWTのロード時にエラーになってしまい、JOEの起動に失敗します。
動作させるには、
64bit版のJava + 64bit版のSWT + 64bit版のWindows/Linux
という環境にして、さらにJOEの起動スクリプトを修正する必要があります。JOEなら、これで動作しました。
つまり、やるべきことは2つ。
64bit版のSWTを準備することと、JOEの起動スクリプトを修正することです。
Windowsの場合
Javaは64bit版のJDKをインストールします。最新(執筆時点)のJDK1.7.0_10で正常に動作しました。
64bit版のSWTは、http://www.eclipse.org/swt/ からダウンロード出来ます。moreのリンクからx86_64版をダウンロードしましょう。
C:Program Filessos-berlin.comjoelibにあるswt.jarを、ダウンロードしたswt.jarで置き換えます。
Windowsは基本的にはこれでJOEが動作するようになります。
CentOS 6.3の場合
Javaは64bit版のJDKをインストールします。yumでインストールできるOpenJDK1.7で正常に動作しました。
64bit版のSWTは、http://www.eclipse.org/swt/ からダウンロード出来ます。moreのリンクからx86_64/GTK2版をダウンロードしましょう。
yumからEclipseをインストールしたりしていれば、/usr/lib64/eclipse配下にswt.jarがあります。
ln -s /your/64bit/swt/path/swt.jar /opt/sos-berlin.com/jobscheduler/scheduler/lib/swt64.jar
ホームディレクトリの.swt配下にx86_64ディレクトリを作成し、libswt-*に向けたシンボリックリンクを作ります。
mkdir ~/.swt/lib/linux/x86_64
ln -s /your/64bit/swt/path/libswt-* .
jobeditor.shとjobscheduler_environment_variables.shの64bit版を作ります。
cd /opt/sos-berlin.com/jobscheduler/scheduler/bin
cp jobeditor.sh jobeditor64.sh
cp jobscheduler_environment_variables.sh jobscheduler_environment_variables64.sh
jobeditor64.sh
#64bit版のjobscheduler_environment_variablesを見るようにする
if [ -x "`dirname $0`/jobscheduler_environment_variables64.sh" ]
then
. "`dirname $0`/jobscheduler_environment_variables64.sh"
fi
#64bit版のJavaを使うようにする
test -z "$JAVA_HOME" && JAVA_HOME="/usr/lib/jvm/jre-1.7.0-openjdk.x86_64"
#swt.jarをswt64.jarに書き換える
CP="trilead-ssh2-build211.jar:jce-jdk13-129.jar:jdom.jar:swt64.jar:xercesImpl.jar:xml-apis.jar:jaxen-1.1.1.jar:commons-net-2.2.jar:log4j-1.2.16.jar:saxon9he.jar"
jobscheduler_environment_variables64.sh
#64bit版のJavaを使うようにする
test -z "$JAVA_HOME" && JAVA_HOME="/usr/lib/jvm/jre-1.7.0-openjdk.x86_64"
あとはJOEを起動します。
/opt/sos-berlin.com/jobscheduler/scheduler/bin/jobeditor64.sh
CentOS6.3でもJOEが起動しました。
(2013/4/29追記)
この記事では紹介していないJobScheduler Information Dashboard(JID)を64bit環境で動作させる記事を書きました。こちらもご参照下さい。