210 likes | 351 Views
30 分で解る Jini TM テクノロジー ~えっ、ドラえもん ? ~. 4D Networks, Inc. 大山弘樹 (CTO). Jini の目指すもの. 使いたいときに、使いたい機能を いとも簡単に使える。 環境 使いたいときに、使いたい機能を いとも簡単に使わせる。 枠組み. ドラえもんの 4 次元ポケット. Jini の可能性. デバイスの Plug and Play 家電同士の対話 ( ハード対ハード ) アプリケーションとデバイス ( ハード対ソフト )
E N D
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 Jini連合体 (フェデレーション) Service C Service D Service X
Jiniの基礎の前に • Jiniは • Java2じゃないと動作しない • 立場によってはJava1.1+αでもなんとか。。。 • もっと言うと、Javaじゃなくても。。。。 • ネットワークはrmiでつながっている • 分散環境のインフラを提供する • プログラミングモデル(作法)がある • みんなで動かす(^_^)
Java RMI クライアント メソッド 実装クラス リモート・インタフェイス リモート・インタフェイス スタブ スケルトン サーバ クライアント
RMIの基本動作 実装 ④ SecurityManager + rmiregistry Activatable Naming.rebind(名前,Object) ① ② 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の基礎 • 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)にほしい道具を書いて(Entry)、ポケットの中を探して(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/