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