分散オブジェクト環境を学ぶ
連載:HORBと遊ぼう(5)
コンフィグレーションファイルで遊ぼう
(3)コンフィグレーションファイルを使ったさまざまな起動法 |
次は、HORBServerスレッドを2つ立ち上げてみましょう。ポート番号は8000番と9000番です。6行目のdebugはHORBサーバがどのように動いているか詳細情報を出力します。
17行目の「object」キーワードは、このオブジェクトはポート9000にしか接続できないという意味です(リスト4参照)。
行 | 記述 | 説明 |
01 |
# |
コメント行 |
リスト4 testconf2.conf |
■起動してみよう
ではリスト4のコンフィグレーションファイルを使ってHORBサーバを起動してみましょう。
●HORBサーバの起動
図5のようにHORBServerが2つ起動されたことが表示されます。
prompt>horb -conf testconf2.conf |
図5 testconf2.confを使用したHORBサーバの立ち上げ |
●クライアントプログラムの起動
以下に3つの起動例を示します。結果の「○」は正常に起動されるパターン、「×」は異常終了するパターンです。
結果 | 起動パラメータ |
○ | prompt>java RemoteTest localhost:9000/testObj1 localhost:8000/testObj2 |
○ | prompt>java RemoteTest localhost:9000/testObj1 localhost:9000/testObj2 |
× | prompt>java RemoteTest localhost:8000/testObj1 localhost:8000/testObj2 |
図6 クライアントの立ち上げ |
うまくいったら、HORBサーバを起動した画面に、リモートオブジェクトが出力した結果とHORBServerが出力した詳細情報が表示されます(図7)。
prompt>horb -conf testconf1.conf |
図7 HORBサーバの実行結果 |
■動作イメージ
動作イメージは図8のようになります。ポート9000とポート8000のHORBServerスレッドが起動されていることが分かります。「testObj1」デーモンオブジェクトは、ポート9000のみ接続要求を受け付けます(リスト4の17行目)。「testObj2」デーモンオブジェクトは、ポート指定がありませんので、どちらのポートからでも接続できます。
図8 動作イメージ |
■そのほかの設定情報
「horbServer」キーワードには、プロトコルを変更するprotocoltype指定があります。例えば、デフォルトのプロトコル「horb」を変更するには、次のように指定します。
horbServer[0].name=HORBServer1(9000) horbServer[0].port=9000 horbServer[0].protocoltype=dataio object[0].className=Test2 object[0].objectID=testObj1 object[0].port=9000 |
図9 プロトコルを変更する(testconf3.conf) |
このように指定されたhorbServerに接続するには、クライアントから次のようにプロキシを作成します。こうすることで、testObj1デーモンオブジェクトは、ポート番号9000番に割り付けられ、dataioプロトコルを使ってメッセージの送受信を行うように限定されます。
dataioとは、HORBから提供されているDataStream形式(オブジェクトシリアライザを使用しない)のプロトコルです。
new Test2_Proxy("detaio://localhost:9000/testObj1"); |
図10 クライアントコード |
「マルチクライアント・マルチスレッドからの利用」 |
Index | |
(1)接続モデルのおさらい (2)コンフィグレーションファイルの使い方 起動してみよう 動作イメージClientの起動 |
|
(3)コンフィグレーションファイルを使ったさまざまな起動方法 起動してみよう 動作イメージ そのほかの設定情報 代理オブジェクトの引数 |
|
(4)HORB実験室「マルチクライアント・マルチスレッドからの利用」 コンパイル 動作イメージ マルチクライアントからの利用 動作イメージ |
|
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|