JXTA Shell (2) P2P特論 (ソフトウェア特論) 第5回 / 2005-05-18
JXTA Shell
JXTAのアーキテクチャ (3 Layer Cake)
JXTA Shell JXTAのプロトコル上で動くアプリケーション Unix の Shell のように、コマンドを利用して P2P を使った情報の公開、転送などを行う。 コマンドは自分で新規作成可能 Java言語を用いる
JXTA Shell の起動 -- ひとつめの Peer を起動 --
ディレクトリの移動 (1) "jxta-shell-2.3.3" ディレクトリに移動 サブディレクトリが2つある lib ... JXTA Shell の動作に必要な Jar ファイルがある shell ... JXTA Shell の起動スクリプト・実行ファイルなどがある
ディレクトリの移動 (2) shell ディレクトリ (およびディレクトリ中の全ファイル) を shell2 にコピーする lib ディレクトリ、shell ディレクトリのほかに shell2 ディレクトリができた shell2 ディレクトリは、もうひとつの Peer の起動に使う shell ディレクトリに移動
JXTA Shell の起動 JXTA Shell を起動する (Windowsでは) jxta.exe あるいは run.bat を起動 (Unix系OSでは) run.sh を起動
“JXTA Configurator” ウィンドウが表示される
JXTA Configurator の設定 "Peer Name" に適当な名前 (ここでは tomoharu-peer1) "Password" には適当なパスワード "Verify Password" は、"Password" 欄に入力したものを再度入力 "OK" ボタンを押す
“Initialize JXTA Keystore” ウィンドウ "Identity" が "tomoharu-peer1" であることを確認 "Identity Password" では、"JXTA Configurator" で設定したパスワードを入力する
ひとつめの Peer が起動されて、"JXTA Shell" が使えるようになる
“.jxta” ディレクトリ 設定情報・キャッシュなどは、起動ディレクトリの ".jxta" ディレクトリに保管される 2度目に起動したときは、”.jxta” ディレクトリの情報を読み出すので、”JXTA Configurator” ウィンドウは表示されない。
コマンドの実行
プロンプトの表示 ウィンドウの “JXTA>” というプロンプトにコマンドを入力する
whoami コマンド (1) プロンプトに対して “whoami” と入力する JXTA>whoami <Peer>tomoharu-peer1</Peer> <Description>Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator</Description> <PeerId>urn:jxta:uuid-59616261646162614A7874615032503316B8DAE33952487E95978C43004EA73E03</PeerId> ...... JXTA>
(正確には Peer の告知 (Advertisement) の一部) whoami コマンド (2) JXTA>whoami <Peer>tomoharu-peer1</Peer> <Description>Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator</Description> <PeerId>urn:jxta:uuid-59616261646162614A7874615032503316B8DAE33952487E95978C43004EA73E03</PeerId> ...... JXTA> Peer に関する情報が出力された (正確には Peer の告知 (Advertisement) の一部)
man コマンド whoami コマンドの使い方は、man コマンドで調べることができる。 JXTA>man whoami -g と -l という2つのオプションがあることがわかる。
whoami コマンド (3) JXTA>whoami -l <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PA> <jxta:PA xmlns:jxta="http://jxta.org"> <PID>urn:jxta:uuid-59616261646162614A7874615032503316B8DAE33952487E95978C43004EA73E03 </PID> <GID>urn:jxta:jxta-NetGroup</GID> <Name>tomoharu-peer1</Name> <Desc> Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator </Desc> ......
whoami コマンド (4) -l オプションを使った。 このPeerに関する告知 (Advertisement) が表示される。 JXTA>whoami -l <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PA> <jxta:PA xmlns:jxta="http://jxta.org"> <PID>urn:jxta:uuid-59616261646162614A7874615032503316B8DAE33952487E95978C43004EA73E03 </PID> <GID>urn:jxta:jxta-NetGroup</GID> <Name>tomoharu-peer1</Name> <Desc> Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator </Desc> ...... -l オプションを使った。 このPeerに関する告知 (Advertisement) が表示される。
Peer告知 PID 要素は Peer ID を表す。 GID 要素は、このPeerが属している Peer Group JXTA>whoami -l <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PA> <jxta:PA xmlns:jxta="http://jxta.org"> <PID>urn:jxta:uuid-59616261646162614A7874615032503316B8DAE33952487E95978C43004EA73E03 </PID> <GID>urn:jxta:jxta-NetGroup</GID> <Name>tomoharu-peer1</Name> <Desc> Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator </Desc> ...... PID 要素は Peer ID を表す。 GID 要素は、このPeerが属している Peer Group Name 要素は、JXTA Configurator で指定した Peer の名前
whoami コマンド (5) -g オプションで、所属している Peer Group の情報を出力する。 JXTA>whoami -g <PeerGroup>NetPeerGroup</PeerGroup> <Description>default Net Peer Group</Description> <PeerGroupId>urn:jxta:jxta-NetGroup</PeerGroupId> JXTA> -g オプションで、所属している Peer Group の情報を出力する。 JXTA では、デフォルトで NetPeerGroup という Peer Group に参加している
2つめの Peer を起動
JXTA Shell の起動 別のターミナルで "jxta-shell-2.3.3/shell2" に移動 JXTA Shell を起動する (Windowsでは) jxta.exe あるいは run.bat を起動 (Unix系OSでは) run.sh を起動
“JXTA Configurator” ウィンドウが表示される
JXTA Configurator の設定 "Peer Name" に適当な名前 (ここでは tomoharu-peer2) "Password" には適当なパスワード "Verify Password" は、"Password" 欄に入力したものを再度入力
ポート番号の設定 (1) "Advanced" タブを選択する
ポート番号の設定 (2) "TCP Settings" で "9701" となっているポート番号を "9702" に変更する 同一ホストで複数の Peer を立ち上げるとき、ポート番号を変更する必要がある "OK" ボタンを押す
Peerの起動 "Initialize JXTA Keystore" ウィンドウが表示される "Identity" が "tomoharu-peer2" であることを確認 "Identity Password" では、"JXTA Configurator" で設定したパスワードを入力する ひとつめの Peer が起動されて、"JXTA Shell" が使えるようになる
Peer ID の確認 whoami -l コマンドを実行して、Advertisement 中の PID 要素をチェックしよう。 PID 要素は、Peer ID を表す。 tomoharu-peer1 と tomoharu-peer2 で Peer ID が違うことを確認しよう。
入力パイプの生成と公開
パイプ告知を用いた通信
newpipe コマンド JXTA>tomoharuPipeAdv = newpipe -n tomoharuPipe
env コマンド (1) JXTA>env ...... tomoharuPipeAdv = "Pipe Advertisement" [net.jxta.impl.protocol.PipeAdv] JXTA>
env コマンド (2) 現在の環境変数を一覧できるコマンド “tomoharuPipeAdv” という環境変数は “Pipe Advertisement” (=パイプ告知) であることがわかる。 tomoharuPipeAdv = "Pipe Advertisement" [net.jxta.impl.protocol.PipeAdv]
cat コマンド 環境変数の値を出力するコマンド tomoharuPipeAdvはパイプ告知なので、告知のXMLファイルが出力される。 JXTA>cat tomoharuPipeAdv <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PipeAdvertisement> <jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"> <Id> urn:jxta:uuid-59616261646162614E50472050325033E104B85EE4B641EEBAA8C28A49556DA204 </Id> <Type>JxtaUnicast</Type> <Name>tomoharuPipe</Name> </jxta:PipeAdvertisement> JXTA> 環境変数の値を出力するコマンド tomoharuPipeAdvはパイプ告知なので、告知のXMLファイルが出力される。
パイプ告知 Id 要素、Type 要素、Name 要素がある。 Name 要素の内容は、newpipe コマンドで指定した名前 JXTA>cat tomoharuPipeAdv <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PipeAdvertisement> <jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"> <Id> urn:jxta:uuid-59616261646162614E50472050325033E104B85EE4B641EEBAA8C28A49556DA204 </Id> <Type>JxtaUnicast</Type> <Name>tomoharuPipe</Name> </jxta:PipeAdvertisement> JXTA> Id 要素、Type 要素、Name 要素がある。 Name 要素の内容は、newpipe コマンドで指定した名前
mkpipe コマンド JXTA>tomoharuInputPipe = mkpipe -i tomoharuPipeAdv
publish コマンド JXTA>publish tomoharuPipeAdv
出力パイプの生成と ファイルの送受信