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 Service E (フェデレーション) Service C Service D Service X
Jiniの基礎の前に Jiniは Java2じゃないと動作しない ネットワークはrmiでつながっている 分散環境のインフラを提供する プログラミングモデル(作法)がある みんなで動かす(^_^)
Java RMI クライアント メソッド 実装クラス リモート・インタフェイス リモート・インタフェイス スタブ スケルトン クライアント サーバ
RMIの基本動作 ④ 実装 rmiregistry ① ② 実装 Setup ① ② ③ rmid クライアント クライアント ③ ⑤ SecurityManager + rmiregistry Naming.rebind(名前,Object) Activatable ① ② 実装 Naming.rebind() rmi://host:port/名前 Setup ① UnicastRemoteObject ActivationDesc ② ③ rmid Activatable.register() URL file://location Naming.lookup(URL) 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 どこにいるか解らないドラえもんを泣いて呼び出す Unicast Discovery ほぼ、ドラえもんはのび太の部屋の押入にいるので、そこまで行く
ドラえもん的LookupService Join ServiceRegistrar サービスをLookupServiceに登録する 未来デパートから道具を購入する 未来デパートはASP事業者でいろいろなサービス(の利用権)を売っている ServiceRegistrar LookupServiceへの窓口 4次元ポケットのインターフェース ドラえもんの手(ServiceTemplate)にほしい道具を書いて(Entry)、ポケットの中を探して(lookup)使う
ドラえもん的Distributes 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/