1時間で解るJiniプログラミング

30分で解るJiniTM テクノロジー
~えっ、ドラえもん?~
4D Networks, Inc.
大山弘樹(CTO)
Jiniの目指すもの
使いたいときに、使いたい機能を
いとも簡単に使える。
環境
使いたいときに、使いたい機能を
いとも簡単に使わせる。 枠組み
ドラえもんの4次元ポケット
Jiniの可能性
デバイスのPlug and Play



家電同士の対話(ハード対ハード)
アプリケーションとデバイス(ハード対ソフト)
アプリケーション同士(ソフト対ソフト)
ネットワーク全体をサービスの集合体に


ハードのサービス化
ソフトのサービス化
Jiniの提供するサービス
今までのサービスの提供
Service 1
Service 2
Service 3
Service X
利用者1
利用者2
利用者3
利用者n
Jiniの提供するサービス
Service F
Service A
Service A
Service B
Jini連合体
(フェデレーション)
Service C
Service E
Service D
Service X
Jiniの基礎の前に
Jiniは

Java2じゃないと動作しない
 立場によってはJava1.1+αでもなんとか。。。
 もっと言うと、Javaじゃなくても。。。。




ネットワークはrmiでつながっている
分散環境のインフラを提供する
プログラミングモデル(作法)がある
みんなで動かす(^_^)
Java RMI
クライアント
メソッド
実装クラス
リモート・インタフェイス
リモート・インタフェイス
スタブ
スケルトン
クライアント
サーバ
RMIの基本動作
④
SecurityManager +
Naming.rebind(名前,Object)
rmiregistry
①
実装
②
Naming.rebind()
①
rmid
クライアント
Activatable
rmi://host:port/名前
UnicastRemoteObject
Naming.lookup(URL)
実装
②
③
③
⑤
Setup
ActivationDesc
Activatable.register()
URL file://location
Naming.lookup(URL)
クライアント
Jiniの基本動作
サービスの提供
Lookup Service
代理人
サービスの登録(提供)
クライアント
サービスプロバイダ
Jiniの基本動作 2
サービスの取得
Lookup Service
代理人
サービスの取得
代理人
サービスプロバイダ
Jiniの基本動作 3
サービスの行使
Lookup Service
サービスの行使
代理人
クライアント
サービス
サービスプロバイダ
Jiniのアーキテクチャ
Jiniの基礎
JiniTM discovery & join
JiniTM distributed lease
JiniTM distributed event
JiniTM entry
JiniTM lookup
JiniTM transaction
JavaSpacesTM
ドラえもん的Jini technology
ドラえもんの道具

どこでもドア
 分子直列化電送サービス

スモールライト
 一時的分子縮小サービス

たけコプター
 反重力及び慣性コントロールサービス
Jiniは4次元ポケットを提供する技術
ドラえもん的Discovery
Discovery

Multicast Discovery
 どこにいるか解らないドラえもんを泣いて呼び出す

Unicast Discovery
 ほぼ、ドラえもんはのび太の部屋の押入にいるの
で、そこまで行く
ドラえもん的LookupService
Join

サービスをLookupServiceに登録する
 未来デパートから道具を購入する

未来デパートはASP事業者でいろいろなサービス(の利用権)を
売っている
ServiceRegistrar

LookupServiceへの窓口
 4次元ポケットのインターフェース
 ドラえもんの手(ServiceTemplate)にほしい道具を書いて(E
ntry)、ポケットの中を探して(lookup)使う
ドラえもん的Distributes Lease
Lease : 賃貸契約

ネットワーク上のリソースは全てリースをもつ
 どこでもドアを使いっぱなしにしたり、置き忘れてく
ると意図していないところに出てしまう

リースは延長契約できる
 スモールライトを使用中に、のび太くんのおなかの
中でスモールライトのリースが切れると、のび太君
は間違いなく死んでしまう
ドラえもん的Distributed Event
分散イベント


ネットワーク的に離れたところでもイベントの
確実な伝搬が行える
ネットワークの状態でイベント順が変わっても
シーケンス番号を持っている
 サービスを使っているのび太君がむちゃくちゃな操
作をしてドラえもんに文句を言ってものび太君が悪
いと一括できる
ドラえもん的Transaction
Jiniはトランザクション処理のフレームワー
クを提供している

2フェーズコミットのフレームワーク
 どこでもドアを使っている最中に分子の転送ホスト
がネットワークの異常を検知し転送処理をロール
バック処理した
 この機構がないと、別な場所に体が半分だけ行っ
てしまい半人前になってしまう
Jiniへ参加するプログラム
class Sample implements DiscoveryListener {
private ServiceRegstrar[] sRegistrar;
public Sample(){
LookupDiscovery lookupDisc =
new LookupDiscovery(LookupDiscovery.ALL_GROUP);
lookupDisc.addDiscoveryListener(this)
WAIT!!
Entry[] attr = new Entry[] { new ServiceInfo(…..)}
ServiceItem sItem = new ServiceItem(null, OBJECT, attr);
for( i = 0; sRegistrar.length 回; i++){
ServiceRegistrar r = sRegistrar[i];
ServiceRegistration regt = r.register(sItem,leaseTime);
Lease lease = regt.getLease();
new LeaseRenewer(lease).start();
}
}
public void discovered(DiscoveryEvent e){
sRegistrarr = e.getRegistrars();
}
public void discarded(DiscoveryEvent e){
}
}
リソース
www.jini.org
Java.sun.com/jini
Java.sun.com/docs/books/jini/

The Jini Specification
www.java-conf.gr.jp www.iaj.or.jp

Jini BOF(www.java-conf.gr.jp/wg_bof/jini/