2013.01.11 · 技術と道具

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があります。

BASH
ln -s /your/64bit/swt/path/swt.jar /opt/sos-berlin.com/jobscheduler/scheduler/lib/swt64.jar

ホームディレクトリの.swt配下にx86_64ディレクトリを作成し、libswt-*に向けたシンボリックリンクを作ります。

BASH
mkdir ~/.swt/lib/linux/x86_64
ln -s /your/64bit/swt/path/libswt-* .

jobeditor.shとjobscheduler_environment_variables.shの64bit版を作ります。

BASH
cd /opt/sos-berlin.com/jobscheduler/scheduler/bin
cp jobeditor.sh jobeditor64.sh
cp jobscheduler_environment_variables.sh jobscheduler_environment_variables64.sh

jobeditor64.sh

BASH
#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

BASH
#64bit版のJavaを使うようにする
test -z "$JAVA_HOME" && JAVA_HOME="/usr/lib/jvm/jre-1.7.0-openjdk.x86_64"

あとはJOEを起動します。

BASH
/opt/sos-berlin.com/jobscheduler/scheduler/bin/jobeditor64.sh

CentOS6.3でもJOEが起動しました。

(2013/4/29追記)
この記事では紹介していないJobScheduler Information Dashboard(JID)を64bit環境で動作させる記事を書きました。こちらもご参照下さい。

2013/01/11 09:06
← フリーランスとして開業するときにやること(その2・これからや…
SOS JobSchedulerでジョブを作ってみよう →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。