JXTA Shell (1)

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