[CentOS6][SOS JobScheduler] jetty で 外部API(XMLコマンド) を使用する


Create: 2013/05/06
LastUpdate: 2013/05/20
[ メニューに戻る ]

下図の環境を使用します。
環境の詳細を知りたい場合は、メニューに戻って構築手順を参照してください。


JobScheduler の外部APIを利用すると、ジョブの実行や登録などの操作を自分のアプリケーションから行うことができます。
ここでは、jetty で 外部API(XMLコマンド) を使用してみます。
jetty は、JobScheduler に組み込まれた Webサーバです。
手順については、「JobSchedulerFAQ 」を参考にしました。

コマンド送信のURL


jetty を利用してXMLコマンドを実行する場合は、以下のURLを使用します。
XMLコマンドは、HTTP GET または POST で指定できます。
  • http://<IPアドレス>:44440/jobscheduler/engine-cpp/
  • https://<IPアドレス>::8443/jobscheduler/engine-cpp/   ※通信を暗号化

HTTP GET でコマンド実行


HTTP GET でXMLコマンドを実行する場合は、以下の形式でリクエストします。
赤字部分が XMLコマンドです。
http://<IPアドレス>:44440/jobscheduler/engine-cpp/<show_state/>
実際にリクエストする場合は、XMLコマンドは、URLエンコードする必要があります。
以下は、curl コマンドを使用した例です。php で URLエンコードしています。
$ curl http://192.168.1.61:44440/jobscheduler/engine-cpp/`php -r 'print urlencode("<show_state/>");'`
HTTP GET は、短いXMLコマンドを実行するときに使用するのがいいと思います。

HTTP POSTでコマンド実行


HTTP POST で以下のジョブ登録用のXMLコマンドを実行してみます。
<add_jobs>
  <job name="myJob" title = "my first job">
    <script language="shell">
    <![CDATA[ echo "myJob is running." ]]>
    </script>  <run_time>
    <period single_start="18:00"/>
    </run_time>
  </job>
</add_jobs>
このコマンドを "xxx.xml" ファイルに保存して、curl コマンドで実行すると以下のようになります。
# curl http://192.168.1.61:44440/jobscheduler/engine-cpp/ -X POST -d @./xxx.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<spooler>
<answer time="2013-05-06 09:59:56.748">
<ok/>
</answer>
</spooler>
下図はJOCで登録されたジョブを見たところです。


XMLコマンドで登録したジョブは、JobSchedulerを再起動すると、消えます。
永続的なジョブ登録をしたい場合は、JOEなど使用してXMLファイルを作成し、liveフォルダに配置します。