JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 / 2005-05-25 1 JXTA Shell 2 JXTAのアーキテクチャ (3 Layer Cake) 3 JXTA Shell JXTAのプロトコル上で動くアプリケーション Unix の Shell のように、コマンドを利用し て P2P を使った情報の公開、転送などを 行う。 コマンドは自分で新規作成可能 Java言語を用いる 4 JXTA Shell の起動 -- ひとつめの Peer を起動 -- 5 ディレクトリの移動 (1) "jxta-shell-2.3.3" ディレクトリに移動 サブディレクトリが2つある lib ... JXTA Shell の動作に必要な Jar ファイ ルがある shell ... JXTA Shell の起動スクリプト・実行 ファイルなどがある 6 ディレクトリの移動 (2) shell ディレクトリ (およびディレクトリ中の 全ファイル) を shell2 にコピーする lib ディレクトリ、shell ディレクトリのほかに shell2 ディレクトリができた shell2 ディレクトリは、もうひとつの Peer の起 動に使う shell ディレクトリに移動 7 JXTA Shell の起動 JXTA Shell を起動する (Windowsでは) jxta.exe あるいは run.bat を 起動 (Unix系OSでは) run.sh を起動 8 “JXTA Configurator” ウィンドウが表示さ れる JXTA Configurator 9 JXTA Configurator の設定 "Peer Name" に適当な名前 (ここでは tomoharupeer1) "Password" には適当なパスワード "Verify Password" は、"Password" 欄に入力したものを 再度入力 "OK" ボタンを押す 10 “Initialize JXTA Keystore” ウィンドウ "Initialize JXTA Keystore" ウィンドウが表示される "Identity" が "tomoharupeer1" であることを確認 "Identity Password" では、 "JXTA Configurator" で設 定したパスワードを入力す る 11 Peer が起動した ひとつめの Peer が起動 されて、"JXTA Shell" が 使えるようになる 12 “.jxta” ディレクトリ 設定情報・キャッシュなどは、起動ディレク トリの ".jxta" ディレクトリに保管される 2度目に起動したときは、”.jxta” ディレクト リの情報を読み出すので、”JXTA Configurator” ウィンドウは表示されない。 13 コマンドの実行 14 プロンプトの表示 ウィンドウの “JXTA>” というプロンプトにコ マンドを入力する 15 whoami コマンド (1) プロンプトに対して “whoami” と入力する JXTA>whoami <Peer>tomoharu-peer1</Peer> <Description>Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator</Description> <PeerId>urn:jxta:uuid59616261646162614A7874615032503316B8DAE33952487 E95978C43004EA73E03</PeerId> ...... ...... 16 JXTA> whoami コマンド (2) JXTA>whoami <Peer>tomoharu-peer1</Peer> <Description>Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator</Description> <PeerId>urn:jxta:uuid59616261646162614A7874615032503316B8DAE33952487E95978C430 04EA73E03</PeerId> ...... ...... JXTA> Peer に関する情報が出力された (正確には Peer の告知 (Advertisement) の一部) 17 man コマンド whoami コマンドの使い方は、man コマンドで 調べることができる。 JXTA>man whoami -g と -l という2つのオプションがあることがわ かる。 18 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:uuid59616261646162614A7874615032503316B8DAE33952487E95978C43004EA73E 03 </PID> <GID>urn:jxta:jxta-NetGroup</GID> <Name>tomoharu-peer1</Name> <Desc> Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator </Desc> ...... 19 ...... 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:uuid59616261646162614A7874615032503316B8DAE3 3952487E95978C43004EA73E03 </PID> <GID>urn:jxta:jxta-NetGroup</GID> <Name>tomoharu-peer1</Name> <Desc> Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator </Desc> ...... ...... 20 Peer告知 PID 要素は Peer ID を表す。 GID 要素は、この Peerが属している Peer Group Name 要素は、 JXTA Configurator で指定した Peer の 名前 JXTA>whoami -l <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PA> <jxta:PA xmlns:jxta="http://jxta.org"> <PID>urn:jxta:uuid59616261646162614A7874615032503316B8DAE33952 487E95978C43004EA73E03 </PID> <GID>urn:jxta:jxta-NetGroup</GID> <Name>tomoharu-peer1</Name> <Desc> Platform Config Advertisement created by : net.jxta.impl.peergroup.DefaultConfigurator </Desc> ...... ...... 21 whoami コマンド (5) 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 に参加している 22 2つめの Peer を起動 23 JXTA Shell の起動 別のターミナルで "jxta-shell2.3.3/shell2" に移動 JXTA Shell を起動する (Windowsでは) jxta.exe あるいは run.bat を 起動 (Unix系OSでは) run.sh を起動 24 “JXTA Configurator” ウィンドウが表示さ れる JXTA Configurator 25 JXTA Configurator の設定 "Peer Name" に適当な名前 (ここでは tomoharu-peer2) "Password" には適当なパスワード "Verify Password" は、"Password" 欄に 入力したものを再度入力 26 ポート番号の設定 (1) "Advanced" タブを選択する 27 ポート番号の設定 (2) "TCP Settings" で "9701" となっているポート番 号を "9702" に変更する 同一ホストで複数の Peer を立ち上げるとき、 ポート番号を変更する必要がある "OK" ボタンを押す 28 Peerの起動 "Initialize JXTA Keystore" ウィンドウが表示される "Identity" が "tomoharu-peer2" であることを確認 "Identity Password" では、"JXTA Configurator" で設定したパスワードを入力する ひとつめの Peer が起動されて、"JXTA Shell" が使 えるようになる 29 Peer ID の確認 whoami -l コマンドを実行して、 Advertisement 中の PID 要素をチェックし よう。 PID 要素は、Peer ID を表す。 tomoharu-peer1 と tomoharu-peer2 で Peer ID が違うことを確認しよう。 30 入力パイプの生成と公開 31 パイプ告知を 用いた通信 32 newpipe コマンド JXTA>tomoharuPipeAdv = newpipe -n tomoharuPipe JXTA> newpipe は、新しいパイプ告知を作成するコマン ド パイプの名前は “tomoharuPipe” “tomoharuPipeAdv” という「環境変数」をもつパ イプ告知を作成する 33 env コマンド (1) JXTA>env ...... tomoharuPipeAdv = "Pipe Advertisement" [net.jxta.impl.protocol.PipeAdv] ...... JXTA> 34 env コマンド (2) 現在の環境変数を一覧できるコマンド “tomoharuPipeAdv” という環境変数は “Pipe Advertisement” (=パイプ告知) であることが わかる。 tomoharuPipeAdv = "Pipe Advertisement" [net.jxta.impl.protocol.PipeAdv] 35 cat コマンド 環境変数の値を 出力するコマンド tomoharuPipeAd vはパイプ告知な ので、告知のXML ファイルが出力さ れる。 JXTA>cat tomoharuPipeAdv <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PipeAdvertisement> <jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"> <Id> urn:jxta:uuid59616261646162614E50472050325033E104 B85EE4B641EEBAA8C28A49556DA204 </Id> <Type>JxtaUnicast</Type> <Name>tomoharuPipe</Name> </jxta:PipeAdvertisement> JXTA> 36 パイプ告知 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:uuid59616261646162614E50472050325033E104 B85EE4B641EEBAA8C28A49556DA204 </Id> <Type>JxtaUnicast</Type> <Name>tomoharuPipe</Name> </jxta:PipeAdvertisement> JXTA> 37 mkpipe コマンド JXTA>tomoharuInputPipe = mkpipe -i tomoharuPipeAdv -i オプションで、tomoharuPipeAdv から入 力パイプを作成する。 入力パイプには tomoharuInputPipe とい う名前をつける。 38 publish コマンド JXTA>publish tomoharuPipeAdv tomoharuPipeAdv (=パイプ告知) を公開 する 39 出力パイプの生成と ファイルの送受信 40 search コマンド (1) 公開された告知を探 索するためのコマンド “search -r” で、ほか の Peer から新しい告 知を見つけ出す JXTA>search -r JXTA>search JXTA>search -a Name -v tomoharuPipe JXTA Advertisement adv0 [jxta:PipeAdvertisement ] (Search criteria: Attribute="Name" Value="tomoharuPipe") 41 search コマンド (2) “search” で、ローカル にキャッシュされた告 知をリスト表示する。 “search -a Name -v tomoharuPipe” タグ名が “Name” 内容が “tomoharuPipe” である告知を探索する JXTA>search -r JXTA>search JXTA>search -a Name -v tomoharuPipe JXTA Advertisement adv0 [jxta:PipeAdvertisement] (Search criteria: Attribute="Name" Value="tomoharuPipe") 42 search コマンド (3) 目的の告知が見つ かった! 告知の名前は adv0 JXTA>search -r JXTA>search JXTA>search -a Name -v tomoharuPipe JXTA Advertisement adv0 [jxta:PipeAdvertisement] (Search criteria: Attribute="Name" Value="tomoharuPipe") 43 adv0 の確認 ひとつめのPeerで 作成した tomoharuPipeAd v と同じであること を確認しよう JXTA>env JXTA>cat adv0 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jxta:PipeAdvertisement> <jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"> <Id> urn:jxta:uuid59616261646162614E50472050325033E104 B85EE4B641EEBAA8C28A49556DA204 </Id> <Type>JxtaUnicast</Type> <Name>tomoharuPipe</Name> </jxta:PipeAdvertisement> JXTA> 44 mkpipe コマンド JXTA>tomoharuOutputPipe = mkpipe -o adv0 -o オプションで、adv0 から出力パイプを作 成する。 出力パイプには tomoharuOutputPipe と いう名前をつける。 45 importfile コマンド JXTA>myfile = importfile hello.xml hello.xml という XML ファイルを myfile と いう環境変数に読み込む 46 myfile 環境変数の中身 JXTA>env JXTA>cat myfile <?xml version="1.0" encoding="UTF-8"?> <greeting> Hello, world ! </greeting> JXTA> 47 mkmsg コマンド JXTA>tomoharuMsg = mkmsg mkmsg は、パイプで送受信するメッセージ を作成するためのコマンド tomoharuMsg を作成した 48 put コマンド JXTA>put tomoharuMsg tomoharuTag myfile mkmsg で作ったメッセージに、インポートした ファイルを追加する このとき、”tomoharuTag” というタグをつける 49 recv コマンド JXTA>tomoharuNewMsg = recv tomoharuInputPipe ひとつめのShellに移る tomoharuInputPipe (入力パイプ) から、デー タを読み込む準備をする 待機モードになる 50 send コマンド JXTA>send tomoharuOutputPipe tomoharuMsg 2つめのShellに戻る tomoharuOutputPipe という出力パイプに、 tomoharuMsg を送信する。 51 そのときひとつめのShellでは JXTA>tomoharuNewMsg = recv tomoharuInputPipe recv has received a message JXTA> 入力パイプがメッセージを受信した メッセージは tomoharuNewMsg に格納 52 tomoharuNewMsg の中身 JXTA>cat tomoharuNewMsg Message Element # 1 name : / tomoharuTag type : text/xml;charset=UTF-8 body : (78 bytes) JXTA> tomoharuTag というものがある 53 get コマンド JXTA>tomoharuNewFile = get tomoharuNewMsg tomoharuTag 受け取ったメッセージからデータを取り出す。 データは tomoharuNewFile に格納 タグとして “tomoharuTag” を指定 54 tomoharuNewFile の中身 JXTA>cat tomoharuNewFile <?xml version="1.0" encoding="UTF-8"?> <greeting> Hello, world ! </greeting> JXTA> 55 exportfile コマンド JXTA>exportfile received.xml tomoharuNewFile tomoharuNewFile の中身を received.xml ファイルに保存する 56 パイプ告知を 用いた通信 57
© Copyright 2024 ExpyDoc