SOS JobSchedulerを64bit環境で動かす

オープンソースのジョブ管理システム「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環境で動作させる記事を書きました。こちらもご参照下さい。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。