Server Settings

Wisdom Server

Wisdom Server は叡智を集約したサーバで、Wisdom Client からの質問に対して適切なアドバイスを検索し、提案するシステムです。これは主に3種類のコンポーネントから構成されます。

Wisdom Server Architecture

  • Wisdom Publisher
    • Wisdom Client からの質問を受け付けるサービスです。受け付けた質問は適切な Wisdom Engine に発行され、そこで計算を行います。
  • Wisdom Engine
    • Wisdom Client からの質問を実際に処理するサービスです。質問の種類ごとにこの Wisdom Engine を用意することで、さまざまな質問に対して適切な提案を用意することができるようになります。Wisdom Engine の処理結果は Wisdom Pool に保管されます。
  • Wisdom Pool
    • Wisdom Engine の提案内容を保管するサービスです。Wisdom Client は質問に対する結果をここに問い合わせることになります。
このドキュメントは、下記の方を対象としています。
  • Yukara Wisdom のサーバ管理者、および Wisdom Engine の開発者
  • Java Application Server を構築したことのある方

このドキュメントの手順通りに進めることで、Wisdom Server の構築、設定、および任意のWisdom Engineの追加を行えます。Wisdom Client の利用方法や、Yukara Wisdom 全体の動作については Getting Start ページを参照してください。

事前準備

Wisdom Server の構築には次のソフトウェアが必要です。

Wisdom Server の配備

まず、Java Application Server である Apache Tomcat 上に、Wisdom Serverのコンポーネント群を配備します。Yukara Downloadページ からそれぞれ下記のファイルをダウンロードします。

  • Wisdom Publisher x.x.x
  • Wisdom Pool x.x.x
  • Wisdom Sample Engines x.x.x

それぞれを解凍し、それぞれのフォルダを Apache Tomcat 上に次のように配備します。

  • ${CATALINA_HOME}/
    • webapps/
      • wisdom-server-publisher/ (Wisdom Publisher)
      • wisdom-server-pool/ (Wisdom Pool)
      • wisdom-sample-engines/ (Wisdom Sample Engines)

なお、Wisdom Sample Engines は Wisdom Engine のサンプル実装である Echo というサービスを含みます。他の Wisdom Engine を利用する場合は、今回と同様の方法で Apache Tomcat 上に配備します。

Wisdom Server の準備と起動

次に、Wisdom Pool が利用するデータベースの起動と初期化を行います。現在のバージョンの Wisdom Pool はデータベースに H2 Database を利用していますので、同ソフトウェアをサーバモードで起動してください。

H2 Databaseはオプションを指定せずに起動すると TCP の 9092 版ポートで待ち受けを行います。別のポートで起動させる場合には、配備したwisdom-server-poolフォルダ下の WEB-INF/classes/jdbc.properties に含まれる、JDBC の接続設定を適切な値に変更してください。

H2 Databaseの起動が完了したら、Wisdom Pool が利用するテーブルの構築を行います。これは、配備したwisdom-server-poolフォルダ下の WEB-INF/classes/init-db.bat または WEB-INF/classes/init-db.sh を実行することで完了します。

以上の設定が終了したら、Wisdom Server のコンポーネント群を配備した Apache Tomcat を起動します。

Wisdom Server の設定

最後に、Wisdom Server の設定を行います。これには次のようなものがあります。

  • 利用可能な Wisdom Pool の一覧
  • 利用可能な Wisdom Engine の一覧

Wisdom Pool や Wisdom Engine は、1つの Wisdom Publisher に対して複数存在することができます。

Wisdom Pool の登録

Wisdom Pool は質問の結果を保管するサービスで、複数用意することで Wisdom Client からの問い合わせを分散することができます。また、Wisdom Publisher, Wisdom Pool, Wisdom Engine はそれぞれ同一のサーバ上に存在する必要はありません。ここでは、利用可能な Wisdom Pool の登録や削除方法について紹介します。

Wisdom Server が起動している環境から、ブラウザで http://localhost:8080/wisdom-server-publisher/pool (<Wisdom Publisher を配備したURL>/pool) を開きます。すると、次のようなページが表示されます。 (初回登録時は、配備したwisdom-server-publisherフォルダ下の WEB-INF/classes/pool.propertiesをデフォルトの設定値を読み込みます。この設定が不要な場合は削除してください。)

Wisdom Pool URLs

ここで、"Pool URL" に対して利用可能な Wisdom Pool のURLを入力し、"Add" ボタンを押すことで対象URL上の Wisdom Pool が利用可能になります。今回は下記のようにします。

Pool URL http://localhost:8080/wisdom-server-pool (<Wisdom Pool を配備したURL>)

このとき、ホスト名に localhost 等、限定されたネットワークで識別されるアドレスを利用すると、Wisdom Client もそのネットワーク内でしか利用できなくなります。今回はlocalhostを利用しているので、Wisdom ServerとWisdom Clientが同一のマシン上で実行されなければなりません。

Wisdom Pool の登録に成功した場合、ページ下部の "Current Pools" には登録されたURLが表示されます。この Wisdom Pool を利用しない場合は、URLの右にあるリンク "Delete" をクリックして削除します。

Added Wisdom Pool URL

ここで登録された値は、<環境変数 YUKARA_HOME のパス>/wisdom/publisher/pool.properites 上に保存されます。環境変数 YUKARA_HOME が未設定である場合は、<VM変数 user.home>/.yukara/wisdom/publisher/pool.properites 上に保存されます。

この変更を反映させるには、Apache Tomcat を再起動させる必要があります。

Wisdom Engine の登録

Wisdom Engine は Wisdom Client からの質問を実際に処理するサービスで、質問の種類ごとに個々に用意する必要があります。このサービスは Wisdom Publisher, Wisdom Pool と同一のサーバ上に存在する必要はありません。

Wisdom Server が起動している環境から、ブラウザで http://localhost:8080/wisdom-server-publisher/engine (<Wisdom Publisher を配備したURL>/engine) を開きます。すると、次のようなページが表示されます。 (初回登録時は、配備したwisdom-server-publisherフォルダ下の WEB-INF/classes/engine.propertiesからデフォルトの設定値を読み込みます。この設定が不要な場合は削除してください。)

Wisdom Engine IDs and URLs

ここで、"Engine ID" に対して Wisdom Engine の ID、"Engine URL" に対して 同エンジンのURLを入力し、"Add" ボタンを押すことで対象URL上の Wisdom Engine が利用可能になります。今回は下記のようにします。

Engine ID echo
Engine URL http://localhost:8080/wisdom-sample-engines/echo (<Wisdom Sample Engines を配備したURL>/echo)

Wisdom Engine の ID は各エンジンごとに決められた文字列が存在しますので、詳しくは個々の Wisdom Engine のマニュアルを参照してください。

Wisdom Engine の登録に成功した場合、ページ下部の "Current Engines" には登録されたIDとURLが表示されます。この Wisdom Engine を利用しない場合は、URLの右にあるリンク "Delete" をクリックして削除します。

Added Wisdom Engine

ここで登録された値は、<環境変数 YUKARA_HOME のパス>/wisdom/publisher/engine.properites 上に保存されます。環境変数 YUKARA_HOME が未設定である場合は、<VM変数 user.home>/.yukara/wisdom/publisher/engine.properites 上に保存されます。

この変更を反映させるには、Apache Tomcat を再起動させる必要があります。

動作の確認

以上で Wisdom Server の構築は終了です。今回構築した Wisdom Server は Echo エンジンしか利用できないため、Java サンプルコード検索エンジン等を利用する場合には、個々のページを参照してください。

今回構築した Wisdom Server の動作を確認するには、Wisdom Client が導入された Eclipse を起動し、メニューバーの "Window" (Mac OSX の場合は "Eclipse") メニューから "Preferences" を選択します。すると、"Preferences" ウィンドウが開きますので、ウィンドウ左部の項目から Wisdom Client の設定画面 "Yukara" > "Wisdom" を開きます。 このページの "Server Settings" グループを下記のように編集してください。

項目名 設定内容 備考
Server URL http://localhost:8080/wisdom-server-publisher 質問を発行する先のURL
Check Limit Count 10 (規定値) 結果を問い合わせる最大回数
Check Interval(seconds) 1 (規定値) 結果を問い合わせる間隔 (秒単位)

Yukara < Wisdom in Preferences

上記設定で、Echo エンジンが正しい値を返したら成功です。