本エントリーではUnion Serverに焦点を合わせます。UnionのバージョンはUnion alpha3を使用します。
Union Serverはtryunion.comを利用して試すことが出来ますが、ローカルにもUnion Serverをインストールすることで快適な開発環境を整備しましょう。
システム要件
System Requirementsに記載されています。JAVAの実行環境があれば、大抵は動くと思います。
Union Serverのインストール
Union ServerはJAVAの実行環境があれば、実行出来ます。Windows、Mac OS X、各種Linuxへインストールが可能です。
Union Serverを実際にインストールして、管理ツールから接続を確認してみましょう。
- Union Serverをダウンロードする
- Admin接続用swfクライアントUnionAdmin.swfをダウンロードする
- ダウンロードしたUnion Serverのアーカイブを解凍する
- 解凍したフォルダにある、startserver.bat(startserver.sh)を実行する
- UnionAdmin.swfを実行する
- 接続先は、localhostとし、パスワードはpasswordで管理ツールが起動する
- UnionAdmin.swfからUnion Serverを停止することも出来る
Windows上での上記操作をキャプチャしてみました。あっという間にUnion Serverを操作出来きるようになることが分かると思います。
[swfobj src="http://fla.la/wp-content/uploads/2009/09/union_platform006_001.swf?startingPlaybackMode=1" alt="Union Serverインストール" align="center" width="512" height="312"]
localhostのUnion Serverを試す
では、もう一度startserver.bat(startserver.sh)を実行して、Union Serverが起動しましょう。この状態で、Reactorから接続が可能な状態となります。
localhostへ繋ぐサンプル
起動時のログ
2009-09-05 12:47:31,175 WARN - *** Starting Union Alpha 1.0.0 (build 283) *** 2009-09-05 12:47:31,175 WARN - ********************************************** 2009-09-05 12:47:31,175 WARN - UPC Version: 1.3.0 2009-09-05 12:47:31,470 WARN - Using CharSet [UTF-8] 2009-09-05 12:47:31,474 INFO - ContextManager initialized. 2009-09-05 12:47:31,545 WARN - UNION_HOME set to [/path/to/union/.] 2009-09-05 12:47:31,649 WARN - Gateway [IOGateway] bound to port [9100] on all local IP addresses. 2009-09-05 12:47:31,650 INFO - Gateway [IOGateway] added to the Server. 2009-09-05 12:47:31,869 WARN - Gateway [NIOGateway] bound to port [9101] on all local IP addresses. 2009-09-05 12:47:31,869 INFO - Gateway [NIOGateway] added to the Server. 2009-09-05 12:47:31,871 INFO - Loaded module type [class] with code [net.user1.union.servermodule.ServerStatsServerModule] 2009-09-05 12:47:31,872 WARN - Server module [serverStatsServerModule] loaded. 2009-09-05 12:47:31,882 WARN - POLICY_FILE attribute missing for Gateway [_ADMIN_GATEWAY_]. Using default [policy.xml]. 2009-09-05 12:47:31,882 WARN - Gateway [_ADMIN_GATEWAY_] bound to port [9110] on all local IP addresses. 2009-09-05 12:47:31,883 INFO - Gateway [_ADMIN_GATEWAY_] added to the Server. 2009-09-05 12:47:31,924 WARN - Banned list file [banned.txt] not found. Banned list not initiated. 2009-09-05 12:47:31,924 WARN - Admin Gateway Started. 2009-09-05 12:47:31,924 INFO - ContextManager started. 2009-09-05 12:47:31,924 WARN - Union Alpha 1.0.0 (build 283) Started....OK 2009-09-05 12:47:31,983 WARN - ----------------- SERVER STATS ------------------------------------------------------------------------- Memory Usage [init = 0(0K) used = 11201888(10939K) committed = 83230720(81280K) max = 85393408(83392K)] Thread Usage [9] -------------------------------------------------------------------------
connect時のログ
2009-09-05 12:53:54,928 INFO - Gateway [IOGateway] accepted a connection. 2009-09-05 12:53:54,981 INFO - Gateway [IOGateway] accepted a connection. 2009-09-05 12:53:55,030 INFO - Client [1] connected to the server. UID [0:0:0:0:0:0:0:1%0] 2009-09-05 12:53:55,030 DEBUG - Server received from client [1] message [u65ReactorFlash Player WIN 10,0,32,18 PlugIn (debug, remote); 1.0.0 (Build 247)1.3.0] 2009-09-05 12:53:55,049 DEBUG - Server sending to client [1] message [u66Union Alpha 1.0.0 (build 283)1.3.0true] 2009-09-05 12:53:55,049 DEBUG - Server sending to client [1] message [u291] 2009-09-05 12:53:55,096 DEBUG - Server sending to client [1] message [u81SUCCESS] 2009-09-05 12:53:55,096 DEBUG - Server sending to client [1] message [u81SUCCESS] 2009-09-05 12:53:55,097 DEBUG - Server sending to client [1] message [u63] 2009-09-05 12:53:55,120 DEBUG - Server received from client [1] message [u24] 2009-09-05 12:53:55,141 DEBUG - Room [test] initialized. 2009-09-05 12:53:55,142 DEBUG - Room [test] started. 2009-09-05 12:53:55,142 INFO - Room [test] initialized and started. 2009-09-05 12:53:55,142 DEBUG - Server sending to client [1] message [u32SUCCESS]
wonderflの投稿で試す
wonderflのunionタグのついた投稿を探して、forkしてみましょう。そして、Union Serverのホストをtryunion.comからlocalhostに変更します。すると、ローカルのUnion Serverへ接続するログが出力される事が確認出来ます。
もちろん、Union ServerのURLをlocalhostとした作品は自身のPCからしか正常に動作しないので注意して下さい。
設定の確認
Union Serverの設定はXMLファイルで行います。
policy.xml
Union ServerはFlash PlayerのSocket接続機能を利用します。Flash PlayerからSocket接続を行うためには、ソケット接続のポリシーファイルを用意する必要がありますので、Union Serverはソケット接続のポリシーファイルを自動で配布するようになっています。
policy.xmlではUnion Serverで利用するソケット接続のポリシーを設定します。
以下の例では、すべてのドメインに配置してあるswfからの接続を許可します。外部に公開するサーバでは必ず適切な設定に変更しましょう。特に管理用ポートからのアクセスは塞ぐと良いです。
union.xml
Union Serverの動作を設定するファイルです。
9110 password 30 9100 policy.xml 9101 policy.xml serverStatsServerModule net.user1.union.servermodule.ServerStatsServerModule 300
最低限、管理用のパスワードは変更しておきましょう。その他モジュールの設定などを行うことができます。
管理用パスワード変更時の注意点
stopserver.bat(.sh)には、管理用のパスワードを記述する必要があります。
Windows環境の場合
stopserver.batを編集します。SET PASSWORDの値を変更します。管理用サーバのportを変更した際にはSET PORTの値を変更します。
SET HOST=localhost SET PORT=9110 SET PASSWORD=yourpassword java -cp libunion.jar;libmariner.jar net.user1.union.core.UnionMain %HOST% %PORT% %PASSWORD% a5
Mac OS X, Linux環境の場合
stopserver.shを編集します。PASSWORDの値を変更します。管理用サーバのportを変更した際にはPORTの値を変更します。
#!/bin/sh HOST=localhost PORT=9110 PASSWORD=password java -cp lib/union.jar:lib/mariner.jar net.user1.union.core.UnionMain $HOST $PORT $PASSWORD a5
その他の設定
Configurationに詳しく記載されています。
ポートの確認
前述のとおり、Union Serverではソケット接続を行うので、ソケット接続のポリシーファイルを配布します。Flash Playerはソケット接続のポリシーファイルの取得時、ソケット接続先のサーバの843ポートに接続します。(このポートは変更することも可能)
また、union.xmlに指定したようにUnion Serverはデフォルトで9100ポートを使用します。
よって、Union Serverを外部に公開するような際には、ソケット接続のポリシーファイル配布用のポート(デフォルトで843)と、Union ServerのGatewayのポート(デフォルトで9100)のポートを開けておくのを忘れないようにしましょう。すでに843ポートで別のポリシーファイルを配布しているサーバでは、Union Serverのpolicy.xmlを設定してもその設定が反映されずに、動作しないということがあるので気をつけましょう。
Module
Moduleを使う事でUnion Serverの機能を拡張する事が出来ます。具体的には、サーバ側の各種イベント送出時のハンドラを登録することで、独自の挙動を追加出来ます。
また、Union Serverからの送信するMessage機能を使ってチャットボットのような機能を作成することも可能となります。
Server Module
Server Moduleはサーバ全体に影響を及ぼすモジュールです。
Room Module
Room Moduleは特定のRoomに影響を及ぼすモジュールです。
まとめ
さて、Union Serverをローカルにインストールする事でUnion Platformを使ったアプリケーション開発をローカルで行う事が出来るようになりました。
次回は、eclipseをインストールして、公式サイトのサンプルにあるようなモジュールを動かすまでの手順を紹介します。