JP2007128507A - アイソレート間でのオブジェクト指向通信 - Google Patents

アイソレート間でのオブジェクト指向通信 Download PDF

Info

Publication number
JP2007128507A
JP2007128507A JP2006289301A JP2006289301A JP2007128507A JP 2007128507 A JP2007128507 A JP 2007128507A JP 2006289301 A JP2006289301 A JP 2006289301A JP 2006289301 A JP2006289301 A JP 2006289301A JP 2007128507 A JP2007128507 A JP 2007128507A
Authority
JP
Japan
Prior art keywords
xlet
exported
remote reference
registry
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006289301A
Other languages
English (en)
Other versions
JP5248761B2 (ja
Inventor
Nedim Fresko
ネディム・フレスコ
Chihiro Saito
チヒロ・サイトウ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2007128507A publication Critical patent/JP2007128507A/ja
Application granted granted Critical
Publication of JP5248761B2 publication Critical patent/JP5248761B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】Xlet間通信(IXC)のために、結合されたオブジェクトのレジストリを管理するためのコンピュータによる方法。
【解決手段】エクスポートされたオブジェクト名をリモート参照と結合する要求が、第1のXletから受信される。第1のXletによってエクスポートされたオブジェクトの数が、最大数と比較される。エクスポートされたオブジェクトの数が、最大数よりも小さい場合には、エクスポートされたオブジェクト名とリモート参照との結合が追加される。エクスポートされたオブジェクトの数が、最大数よりも大きい場合には、要求は拒否される。
【選択図】図3

Description

携帯電話、携帯情報端末(PDA)、テレビ用のセット・トップ・ボックスなどのコネクテッド・デバイスのためのコンピュータシステムは、より柔軟なものになりつつある。最近のシステムでは、ソフトウェアをダウンロードして実行することが可能になっている。ダウンロードされたソフトウェアは、完全に信頼できるとは限らず、既存の信頼できるソフトウェアとリソースを共有する場合もある。したがって、信頼できないソフトウェアのアクセスを制限することにより、そのソフトウェアがシステムの動作を妨害することを防ぐために、様々な技術が提案および実施されている。しかしながら、これらのシステムの目的は、ソフトウェア・コンポーネントが互いに通信することを可能にするという別の目標と対立するものである。
ソフトウェア・コンポーネントが互いに通信することを可能にするための周知の機構の1つとして、リモート・プロシージャ・コール(RPC)が挙げられる。この機構によると、あるホスト上で実行中のコンピュータプログラムが、別のホスト上でコードを実行させて、その結果を第1のプログラムに返させることが可能になる。通例、RPCプロトコルは、分散コンピューティングのクライアントサーバモデルを実装するために用いられる。
様々なエディションのJAVA(登録商標)プラットフォームが、オブジェクト間の通信のために、RPCを実行するためのリモートメソッド呼び出し(RMI)として知られる機構を提供している。RMIでは、リモートJAVA(登録商標)オブジェクトのメソッドは、別のJAVA(登録商標)仮想マシン(場合によっては、別のホスト上のもの)から呼び出し可能である。図1に示すように、RMI 100は、基本的に、JAVA(登録商標)仮想マシン(JVM) A 102およびJVM B 104の間の通信を可能にする。JVM A 102およびJVM B 104は、同じ物理マシンで作動してもよいし、異なるマシンで作動して、ローカルエリアネットワーク(LAN)、インターネットプロトコル(IP)ネットワーク接続、または、その他の通信媒体を介して接続されてもよい。RMI 100を実装するアプリケーショ・プログラム・インターフェース(API)は、仮想マシン間の通信の詳細を取り扱う。
RMIは、異なるプロトコルでの異なるマシン間の通信のために必要なコンポーネントおよびセキュリティ手段をすべて備えるため、複雑になっており、ほとんどのコネクテッド・デバイスでは全く必要のない多くの特徴を提供することから、小型のデバイスにとっては扱いにくい場合がある。したがって、RMI APIは、JAVA(登録商標)2プラットフォームのマイクロエディション(J2ME)のパーソナル・ベイシス・プロファイル(PBP)には含まれていない。
JAVA(登録商標)アプリケーションのための従来のモデルは、所与の仮想マシンで実行中のアプリケーションが1つだけであることを想定しているため、そのアプリケーションは、自身が動作している仮想マシンの強制終了を含めて、自身のライフサイクルを完全に管理する。典型的なコネクテッド・デバイスで利用可能な限られた処理リソースおよびメモリリソースに対応した上で、複数のプログラムを同時に実行させることを可能にするために、JAVA(登録商標)コミュニティプロセス(JCP)は、Xletと呼ばれるプログラミングモデルの利用を提案した。
Xletは、インターネットウェブブラウザによって実行可能なアプレットや、ウェブサーバによって実行可能なサーブレットと同様のものであり、複数のXletが、1つのJVMで同時に実行されることが可能であり、それらのライフサイクルは、他のプログラムによって管理可能である。アプレットの場合には、他のプログラムとは、一般に、ウェブブラウザである。JVMの1つのインスタンスで複数のプログラムを実行すると、仮想マシンの内部データ構造の一部を共有することにより、システム全体の性能および拡張性を向上させることができる。Xletは、スタンドアロンのアプリケーションマネージャによって管理されてよい。
1つのJVMによって複数のXletを作動させることがでるため、ダウンロードされた悪質なXletによる害を受ける可能性のある複数組のXletを保護するための機構が必要となった。そのため、論理仮想マシン(LVM)の概念が生み出された。LVMは、同じリソースまたはオブジェクトを共有する1または複数のプログラムからコードを参照するための機構を提供するリソースコンテキスト構造である。ある特定のLVMに関連スレッドを関連付けることにより、関連スレッドが(例えば、サービス妨害攻撃を起こすことにより)不正な動作をした際に、それらを一緒に終了できるようになる。
しかしながら、複数のXletを別々のLVMに分離することによって保護することは、互いの通信を不可能することを意味するため、望ましくない。したがって、別々のLVM、より一般的には、別々のリソースドメインから、複数のXletが互いに通信することを可能にするためのいくつかの機構が必要になった。2004年12月7日に発行された米国特許6,829,722は、複数のXletが別々のLVMから互いに通信することを可能にするXlet間通信(IXC)と呼ばれる方法を提供しており、この参照によって本明細書に組み込まれる。この特許の出願時には、「Xlet」という用語は、まだ作られていなかったため、その明細書では、Xletを、一般に用いられていた「アプレット」という用語で呼んでいることに注意されたい。
IXC APIは、現在、J2ME PBPの一部である。図2は、別々のLVMにそれぞれ属する2つのXlet(すなわち、Xlet A 112およびXlet B 114)の間のIXC 110を示す図である。しかしながら、このIXC実装は、単一プロセスの複数仮想マシン(MVM)パラダイムと呼ばれるものに限定される。このパラダイムでは、各LVM 116および118は、単一プロセスJVM 120で実行され、共通アドレス空間を共有する。IXC実装(図示せず)は、各LVM間でインスタンスを共有するために共通アドレス空間を利用する。
Xletを実行するための分離コンテキストは、現在、「アイソレート」と呼ばれている。アイソレートの一実施例では、各アイソレートは、自身のプロセス内で実行されるため、自身のアドレス空間を有する。これは、「複数プロセスのMVM」パラダイムと呼ばれてよい。JAVA(登録商標)アプリケーションアイソレートAPIは、JAVA(登録商標)仕様作成要求121(JSR−121)で規定されている。IXCのための以前の機構は、Xlet間で共通アドレス空間を利用していたため、この新しいパラダイムでの実装は構造的に不可能であった。
したがって、サービス妨害攻撃を防止するために必要なセキュリティ手段を提供しつつ、Xlet間のRPCが、共通のJVMにおける別々のアイソレートに配置されることを可能にする新しいIXC機構が必要とされている。この新しい機構は、さらに、信頼性の高いガーベッジコレクションと、効率的な型検査とを提供することが好ましい。さらに、IXC実装は、アイソレート実装に対して最適化されることが好ましく、その場合、複数のアイソレートは、同一のマシン上であるが別々のアドレス空間に存在する。
概して、本発明は、これらの要求を満たすために、アイソレート間でのオブジェクト指向通信を実現する方法およびマシン読み取り可能な媒体を提供する。
本発明は、プロセス、装置、システム、デバイス、方法を含む数多くの態様で実施可能であることを理解されたい。以下では、本発明のいくつかの実施形態について説明する。
一実施形態では、Xlet間通信(IXC)のために、結合されたオブジェクトのレジストリを管理するためのコンピュータによる方法およびマシン読み取り可能な媒体が提供されている。エクスポートされたオブジェクトのオブジェクト名をリモート参照と結合する要求が、第1のXletから受信される。第1のXletによってエクスポートされたオブジェクトの数が、最大数と比較される。エクスポートされたオブジェクトの数が、最大数よりも小さい場合には、エクスポートされたオブジェクトのオブジェクト名とリモート参照との結合が追加される。エクスポートされたオブジェクトの数が、最大数よりも大きい場合には、要求は拒否される。
別の実施形態では、Xlet間通信(IXC)のための方法が提供されており、第1のアイソレート内の第1のXletからエクスポートされたオブジェクトへのリモート参照が、第1のアイソレートの外に位置するオブジェクトレジストリに送信される。オブジェクトレジストリ内で、リモート参照と、エクスポートされたオブジェクトのオブジェクト名とが結合される。オブジェクトレジストリは、エクスポートされたオブジェクトのリモート参照への要求を、第2のアイソレート内の第2のXletから受信する。それに応じて、リモート参照が、第2のXletに転送される。第2のXletのためにスタブオブジェクトが生成され、そのスタブは、エクスポートされたオブジェクトと通信を行う。オブジェクトレジストリは、ある結合数に各Xletを制限する。
さらに別の実施形態では、アイソレート間でのオブジェクト指向のXlet間通信(IXC)のためのプログラム命令を有するコンピュータ読み取り可能な媒体が提供されている。そのコンピュータ読み取り可能な媒体は、第1のXletからオブジェクトをエクスポートするためのプログラム命令であって、そのエクスポートは、エクスポートされたオブジェクトのオブジェクト名をリモート参照と結合する要求を、第1のXletからオブジェクトレジストリに送信する動作を備えるプログラム命令と、エクスポートされたオブジェクトの数が、最大数よりも小さい場合に、エクスポートされたオブジェクトのオブジェクト名とリモート参照との結合をオブジェクトレジストリに追加するためのプログラム命令と、エクスポートされたオブジェクトの数が、選択された最大数以上である場合に、要求を拒否するためのプログラム命令と、を備える。
本発明の利点は、実施例を用いて本発明の原理を示すために添付の図面を参照しつつ行われる以下の詳細な説明から明らかになる。
本発明は、添付の図面を参照した以下の詳細な説明によって容易に理解可能であり、同じ符号は、構造上の同じ要素を示している。
以下の説明では、本発明の完全な理解を促すために、多くの詳細事項が具体的に示されている。しかしながら、これらの具体的な詳細事項の一部またはすべてがなくとも、本発明を実現できることは、当業者にとって明らかである。また、本発明を不必要にわかりにくくすることがないよう、周知のプロセス動作および実装の詳細事項の説明は省略してある。
本発明は、アイソレート間でのオブジェクト指向通信に関する。アイソレートは、コンピュータシステム内の保護されたドメインであり、1または複数のスレッドを、そのシステムで作動する他の悪質なスレッドによる悪影響から保護する。JAVA(登録商標)仕様作成要求121(JSR−121)では、アイソレートは、スレッドとJAVA(登録商標)仮想マシン(JVM)との間の中間構造体として記載されている。より具体的には、JAVA(登録商標)パーソナル・ベイシス・プロファイルのコンテキスト中のアイソレートは、アプリケーションまたはコンポーネントをカプセル化するアイソレートクラスのインスタンスであり、演算処理の分離を開始および停止するための手段を提供する。例えば、アイソレートを用いて、同時実行を開始することができる。JVMのように、アイソレートは、実行中の可能性がある任意の他のJAVA(登録商標)プログラムと無関係に、与えられたクラスの「メイン」メソッドの実行を自身のシステムレベルのコンテキスト内で進めさせる。このように、アイソレートは、スタティックまたはアプリケーションごとのランタイムオブジェクトを共有することから干渉がないことを保証する点でスレッドとは異なり、作成、開始、終了、監視、および、これら独立した動作との通信を行うアプリケーション・プログラミング・インターフェース(API)を提供する点でJVMとは異なる。アイソレートは、それらの中で作動するアプリケーションに対して透過的に作動してよい。本開示では、「アイソレート」という用語は、単に、自身のプロセス内で実行されるために自身のアドレス空間を有する仮想マシン内の保護されたドメインを特定するために用いられてよい。
オブジェクト指向通信とは、ソフトウェアオブジェクト間の通信のことである。ソフトウェアオブジェクトとは、実行可能なコードおよびデータを備えるソフトウェア構造体であり、変数内に保持される。データは、オブジェクト内で保護されており、オブジェクトによって提供されるメソッドを用いてアクセス可能である。それらのメソッドは、プロシージャを実行するために、他のオブジェクトによって呼び出すことが可能である。それらのメソッドは、オブジェクトによって変数に提供されるインターフェースであってもよいし、呼び出し側のオブジェクトの代わりに動作を実行してもよい。このように、オブジェクトメソッドは、プロシージャ言語の機能またはサブルーチンと同様のものである。オブジェクト間の通信は、あるオブジェクトが第2のオブジェクトにメッセージを送って第2のオブジェクトのメソッドを呼び出すことによって起きる。次いで、メソッドからの結果はすべて、呼び出し側のオブジェクトに返される。
図3は、アプリケーションマネージャ(図示せず)によってJVM 140を用いてインスタンスを生成された第1のアイソレートA 130および第2のアイソレートB 132を含む2つのアイソレートの間でのXlet間通信(IXC)のための構成の一例を示す図である。各アイソレート130および132は、その中で実行されるXlet 134および136をそれぞれ備える。各Xletは、1または複数のオブジェクト(図示せず)を備える。JVM 140は、1つのマシン内に存在し、それぞれシステム内の別個のプロセスおよびアドレス空間で作動する各アイソレート130および132のための共通リソースを提供する。JVM 140は、アイソレートを作成および破棄するためのアイソレートAPIや、Xlet A 134とXlet B 136との間のIXC 138を提供するIXC APIなど、複数のAPIを備える。以下で詳細に説明するように、IXC 138は、Xlet Bが、Xlet Aのオブジェクト内のメソッドを呼び出して応答を受け取ることを可能にする。図3は、共通のJVM 140を示しているが、Xlet AとXlet Bとは、別個のJVMに属してもよい。
本発明の様々な実施形態で、特定のJVMおよびJAVA(登録商標)プログラミング言語について言及しているが、本発明は、他のオブジェクト指向プログラミング言語や他の仮想マシンにも適用可能である。したがって、JAVA(登録商標)への限定を意図していないことに注意されたい。さらに、「Xlet」という用語は、保護されたドメインまたは仮想マシンを他のアプリケーションと共有することが可能であり、アプリケーションマネージャなどの外部プログラムによってそのライフサイクルを管理できる種類のオブジェクト指向アプリケーションを示すよう意図されている。本明細書で用いられている「Xlet」という用語は、一般的なものであり、アプレット、サーブレット、および、他の類似のプログラミングモデルを含む。
図4は、本発明を実施できるデバイス150の一例を示す図である。一実施形態では、デバイス150は、コネクテッド・デバイスであり、コネクテッド・デバイスとは、少なくとも時々、外部のネットワークやシステムに接続可能であることを意味する。デバイス150は、少なくとも1つのプロセッサ152と、メモリ154と、ユーザインターフェース156と、入出力システム158とを備え、それらのコンポーネントは、データバス160を介して互いに通信する。意図される用途に応じて、プロセッサ152は、シングルコア・プロセッサでもマルチコア・プロセッサでもよく、複数のプロセッサを備えてもよい。プロセッサ152は、携帯情報端末や携帯電話などの携帯デバイスのために低電力に最適化されてもよいし、コンピュータワークステーションやサーバで見られるように、プロセッサ集中的な動作のために速度に最適化されてもよい。デバイス150は、デバイスの使用方法に応じて、他のコンポーネント(図示せず)を備えてもよい。例えば、デバイス150が携帯電話である場合には、音声通信用のコンポーネントを備えてよい。デバイス150がテレビ用のセット・トップ・ボックスである場合には、受信機とビデオ処理回路とを備えてよい。
メモリ154は、ランダムアクセスメモリ(RAM)の1つのブロックを備えてよく、すなわち、電源を切った際に情報を保持できない揮発性メモリであってよい。あるいは、メモリ154は、揮発性RAM、フラッシュメモリのような不揮発性RAM、および/または、不揮発性の大容量ストレージなど、セグメントメモリまたは多層メモリであってもよい。メモリ154は、さらに、デバイスの基本入出力システム(BIOS)、オペレーティングシステムのコンポーネント、および/または、様々なソフトウェアアプリケーションやユーティリティを格納するための読み出し専用メモリ(ROM)を備えてもよい。メモリ154は、デバイス150内に固定されてもよいし、取り外し可能であってもよい。例えば、メモリ154は、「コンパクトフラッシュ(登録商標)」、「メモリースティック」、「SDカード」という商標で販売されているメモリなど、取り外し可能な記憶装置であってよい。メモリ154が、取り外し可能なメモリを備える場合には、コンピュータやネットワークなどの外部システム162を用いて、新しいソフトウェアをメモリ154に追加してもよい。次いで、新しいソフトウェアは、プロセッサ152上で実行され、さらなる機能をデバイス150に提供してよい。
ユーザインターフェース156は、ユーザへの出力やユーザからの入力を実現するための様々な要素を備えてよい。例えば、出力側では、ユーザインターフェース156は、携帯デバイス用の小型の液晶ディスプレイ(LCD)と、スピーカとを備えてもよいし、コンピュータワークステーション用の高解像度ディスプレイを備えてもよい。セット・トップ・ボックスでは、ユーザインターフェース156は、ビデオおよびオーディオ信号にアプリケーション情報を重ねることができるビデオおよびオーディオ出力を備えてよい。入力側では、ユーザインターフェース156は、キーパッド、タッチスクリーン、フルサイズのキーボード、リモートコントロール、音声駆動、および/または、ユーザに双方向性を提供する任意の数の他のユーザ入力を備えてよい。
一実施形態では、デバイス150は、外部との通信を可能にする入出力システム158を備える。具体的には、デバイス150は、ネットワーク、コンピュータシステム、または、他のデバイスなどの外部システム162に対して、常に接続されてもよいし、時々接続されてもよい。特に、外部システム162は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、または、リモートコンピュータやインターフェースデバイスを含みうる。ネットワークすなわち外部システム162は、実行可能なソフトウェアをデバイス150にダウンロードすることが可能である。
動作中に、JVM 140(図3)は、メモリ154にロードされ(もしくは、メモリ154内にすでに存在し)、プロセッサ152で実行される。JVM 140は、メモリ154内に存在するJAVA(登録商標)バイトコードを実行するための仮想マシンを提供する。JAVA(登録商標)バイトコードは、JVM 140を用いて解釈またはジャスト・イン・タイム(JIT)コンパイルされ、デバイス150に機能を提供する。デバイス150は、例えば、他のJAVA(登録商標)ソフトウェアをダウンロードして実行させるためのJAVA(登録商標)ソフトウェアを備えてよい。一実施形態では、JVM 140は、デバイスに機能を提供するXletをロード、起動、終了するためのアプリケーションマネージャを備える。
図5は、デバイス150上でXletを実行するためのハードウェアおよびソフトウェアの層155の一例を示す図である。一番下のレベルには、コネクテッド・デバイス150が存在し、図4を参照して上述した様々なコンポーネントを備えている。ハードウェア層の上には、BIOS/OS層160が存在する。BIOSおよびOSは、別個のソフトウェア層として存在してもよいし、一体化されてもよい。それらは、一般に、より上位のソフトウェア層による呼び出しに応じて、ユーザインターフェースなどの様々なハードウェアコンポーネントを駆動する機能を有する。BIOS/OS層160の上には、1または複数のJVM層140が存在する。JVM層140は、それぞれ、アプリケーションマネージャ165やXlet134、136などのアプリケーションソフトウェアを解釈および/またはコンパイル(例えばJITコンパイルなど)することにより実行するための独立したプラットフォームを提供する。上述のように、JVM層140は、アイソレート層132のインスタンスを生成して、保護された環境をXlet134および136に提供することもできる。
図6は、アイソレート間のIXCの実装の一例を示す説明図である。このプログラミングモデルは、他のリモートメソッド呼び出しモデルとの共通点を有する。説明のため、2つのアイソレート、すなわち、アイソレートA 172とアイソレートB 174が図示されている。アイソレートA 172は、デバイスで作動する他のXletに特定の機能を提供するXlet A 182を含む。例えば、Xlet A 182は、アドレス帳検索機能を提供してよく、その場合、Xlet B 184は、特定の個人の電話番号やEメールアドレスを探すために、その機能にアクセスする必要がある。Xlet A 182およびXlet B 184は、この通信のためのインターフェースについて合意する。インターフェースは、例えば、クエリのための特定のパラメータと所望の応答のための特定の変数型とを備えた特定のメソッドを有する特定のオブジェクトであってよい。Xlet A 182は、Xlet B 184によって予期されたメソッドを有するオブジェクトOBJ_Cを提供する。
OBJ_Cを他のXletに対して利用可能およびアクセス可能にするために、Xlet A 182は、オブジェクトレジストリ166へのリモート参照を含むメッセージ192を送信する。Xlet 182は、インフラストラクチャを維持するため、エクスポートしたばかりのOBJ_Cへの要求に応じることができる。レジストリは、予期された位置に提供されるか、もしくは、システム上で作動するすべてのXletに利用可能にされる。一実施形態では、レジストリ自体は、別のプロセスに存在するアプリケーションマネージャ165によってエクスポートされたリモートオブジェクトである。この場合、レジストリへのリモート参照は、JVM APIによって定数として定義される。Xlet A 182によってオブジェクトレジストリ166に送信されたリモート参照は、オブジェクト名、オブジェクトへのリモート参照、および、オブジェクト記述を含む。記述は、インターフェースの詳細を含んでもよいし、単に、ハッシュコードなど、これらの詳細の固有識別子を含んでもよい。オブジェクトレジストリ166は、システム上のどこかに配置されたレジストリテーブル176を維持する。レジストリテーブル176は、オブジェクト名とリモートオブジェクト参照とを関連付けたリストを含む。したがって、レジストリテーブルは、エクスポートされたオブジェクトのオブジェクト名を、エクスポートされたオブジェクトへの参照に結合している。
一実施形態では、リモート参照は、4つのデータ要素、すなわち、エクスポート側Xletの識別子と、エクスポート側Xletのエンドポイント識別子と、エクスポートされたオブジェクトの識別子と、インターフェース記述子とを含む。Xletの識別子は、エクスポート側Xletの名前であってよい。Xletのエンドポイント識別子は、どの通信プロセスを用いた場合でも、アドレスのポート番号または他の表現であってよい。ポート番号は、例えば、Xletの識別子と、エクスポートされたオブジェクトの識別子とによって、エクスポートされたオブジェクトへの呼び出しを転送できるエクスポートJVMインスタンスの位置を特定してよい。エクスポートされたオブジェクトの識別子は、エクスポートされたオブジェクトのオブジェクト名であってよい。インターフェース記述子は、例えば、インターフェース名のリストを含み、さらに、各インターフェース名に対して、メソッド名に基づくコードと、メソッドに対するパラメータ型と、メソッドに対する戻り型とのリストを含んでよい。コードは、例えば、ハッシュコードであってよく、ハッシュコードとは、可変調入力を代表する固定長コードである。ハッシュコードの代わりに、メソッド名および型の全体を提供してもよい。別の実施形態では、リモート参照は、インターフェース記述子を含まず、その代わりに、レジストリによって別個に登録されているインターフェース記述子へのアクセスに利用可能なインターフェース識別子を備える。この情報の提供により、インポート側Xletが、予期されたインターフェースの詳細を実際のインターフェースと比較して、リモートオブジェクトとの通信の前に一致を保証することが可能になる。この比較は、本明細書では、「型検査」と呼ぶこととする。これにより、リモート参照がシリアルで送信されるたびに、全部の型情報を送信する必要がなくなる。
Xlet B 174は、OBJ_C 178にアクセスしたい場合には、OBJ_Cのインスタンスを要求するメッセージ194をオブジェクトレジストリ166に送信する。レジストリ166は、レジストリテーブル176にアクセスし、その要求を、結合されたリモート参照と照合する。
Xlet B 184は、リモート参照をインポートすると、スタブオブジェクト188を生成するスタブ生成のプロセスに進む。スタブ生成は、JVMの一部であるIXC APIによってオンザフライで実行される。Xlet B 184から見ると、オブジェクトレジストリ166からリモートオブジェクトのインスタンスが要求されて、オブジェクトレジストリ166によって提供される。しかしながら、実際には、スタブオブジェクト188は、元々のエクスポートされたオブジェクト178のシェルに過ぎず、そのオブジェクトへのプロキシとして動作する。しかし、Xlet B 184が認識している限りは、Xlet B 184は、リモートオブジェクトの完全なインスタンスを有し、そのようにスタブオブジェクト188を扱うことができる。しかしながら、呼び出しを内部で処理する代わりに、スタブオブジェクト188は、元々のエクスポートされたオブジェクト178への呼び出しを転送して、その結果をリモートのエクスポートされたオブジェクト178からXlet B 184に渡す。
一実施形態では、インポートされて、インポートされたオブジェクトの各々についてインポートおよびインスタンス生成された各オブジェクト型に対して、動的にスタブクラスを生成して、元々のエクスポートされたオブジェクトを参照する。したがって、同じ型を有する複数のオブジェクトがインポートされる場合には、そのオブジェクト型に対するスタブクラスが一旦生成されると、その型のオブジェクトがインポートされるたびに、スタブのインスタンスが生成される。スタブ生成の機構に関するさらなる詳細については、William F.Footeらに発行された米国特許6,829,772、Pelegri−Llopartらに発行された米国特許5,999,988、および、Wollrathらに発行された米国特許6,938,263に開示されている。一般的に、リモート・インターフェース・クラスは、インポート側にもエクスポート側にもロード可能である。これは、インターフェース・クラスが、通常のクラスと同様に、「クラスパス上にある」ことを意味する。インターフェース・クラスがロードされる際に、システムは、そのクラスを「イントロスペクト」して、その詳細(すなわち、メソッド、パラメータのリスト、および、戻り型)を見つけることができる。次に、そのシステムは、スタブクラスを生成することができる。この種のイントロスペクトのための機構は、JAVA(登録商標)では「リフレクション」と呼ばれる。このように、インターフェース名から、インターフェース・クラスをロードして、そこから、スタブクラスでのインターフェースの再生に必要な情報をすべて抽出することができるため、リモート参照は、リモート・インターフェース名を含む。
Xlet B 184は、リモートオブジェクトをインポートすることによって新しいスタブを生成する際に、新しいクラス名をオンザフライで生成し、そのインスタンスを生成して、リモートのエクスポートされたオブジェクトを参照させる。スタブオブジェクト188は、オブジェクト記述子によって定義されたインターフェースを実装する。当業者にとって明らかなように、スタブ生成は、様々なRMI実装と同様に、従来のIXC実装において周知のプロセスである。
IXC APIは、スタブオブジェクト188が、実装固有であってよいデータパス180に沿って、エクスポートされたオブジェクト178へのメソッド要求を転送することを保証する。例えば、データパス180は、オペレーティングシステム層およびハードウェア層によって提供された低レベルのプロセス間通信(IPC)機構であってよい。リモート参照は、そのリモートオブジェクトのアドレスに類似するエンドポイント179を定義する。このように、オブジェクトレジストリ166は、そのエンドポイントによって同様にアクセスされる。一実施形態では、エンドポイント179および169が、別々の転送機構(すなわち、別々のIPC機構)の上に実装可能なクラスに抽象化される。別の実施形態では、それらのエンドポイントは、例えば、ポート番号を用いて、オペレーティングシステムに密接に結合される。
一実施形態では、Xlet A 182からレジストリ166に送信されたリモート参照182は、エクスポートされたオブジェクトへの接触が可能なように、エクスポートされたオブジェクトに関する十分な情報を含むオブジェクトである。一実施形態では、リモート参照オブジェクトは、JAVA(登録商標)オブジェクト直列化を用いて、エクスポートXletからレジストリに、レジストリからインポートXletに転送される。オブジェクト直列化とは、JVMによって提供される機構であり、アイソレート間またはJVM間の転送のためにオブジェクトを一連の数(例えば、バイト列)に変換する。別の実施形態では、オブジェクト記述子オブジェクトは、より低レベルのコマンド構造を利用するカスタムコードされたプロシージャを用いて転送される。当業者にとって明らかなように、オブジェクトをデータに変換して、そのデータを仮想マシン(VM)のインスタンス間で送信するための様々な機構が利用可能である。
図7は、Xlet AとXlet Bとの間のIXCを開始するためのプロシージャを示すフローチャート200である。そのプロシージャは、開始ブロック202に示すように始まり、Xlet Aが、オブジェクトのリモート参照をオブジェクトレジストリに送信することによって、オブジェクトをエクスポートする動作204に進む。動作206では、レジストリが、エクスポートされたオブジェクトのオブジェクト名をリモート参照に結合する。
リモート参照は、別のアイソレートのXletが、エクスポートされたオブジェクトに接触することを可能にするのに十分な情報を有する。エクスポートされたオブジェクトのオブジェクト名をリモート参照に結合することで、別のアイソレート内のXletが、以下の動作で示すように、アクセスしたいエクスポートされたオブジェクトのオブジェクト名を提供することにより、リモート参照を取得することができるようになる。別のXletから見ると、エクスポートされたオブジェクトは、リモートオブジェクトである。
動作208ないし212では、Xlet Bが、リモートオブジェクトを「インポート」する。動作208において、Xlet Bは、Xlet Aによってエクスポートされたリモートオブジェクトへのリモート参照に対する要求をレジストリに送信する。動作210において、レジストリは、Xlet Bの要求に応じて、リモート参照を送信する。動作212において、Xlet Bは、リモート参照の型記述子を、予期されたインターフェース型と比較することにより、リモート参照の型検査を行い、それによって、リモートのエクスポートされたオブジェクトの型に関してXlet Bが内部に保持する意向が、リモートのエクスポートされたオブジェクトの実際の型と一致することを保証する。型が一致しない場合には、エラーが生成される。型が一致する場合、Xlet Bは、リモートオブジェクトの型に対応するスタブオブジェクトを生成する。前述のように、スタブオブジェクトは、実際のリモートオブジェクトへのプロキシであり、単に、リモートオブジェクトのインターフェースを実装し、呼び出しをリモートオブジェクトに転送して、リモートオブジェクトから結果を戻す。
動作214において、Xlet Bは、ローカルスタブオブジェクト内のメソッドを呼び出す。そのメソッドは、スタブオブジェクトによってリモートオブジェクトに転送される。すべての結果が、スタブオブジェクトに戻され、次いで、スタブオブジェクトは、それらの結果をXlet Bに送り返す。次いで、プロシージャは、終了ブロック216に示すように終了する。
複数のXletが互いに通信することが可能な場合には、様々なセキュリティの問題が生じる。「背景技術」において上述したように、問題の1つは、サービス妨害(DOS)攻撃の可能性である。システムが、悪質または有害なプログラムによる要求へのサービスに縛られすぎて、他のプログラムからの正当な要求へのサービスが不可能になることがある場合には、そのシステムは、悪質なコードによるDOS攻撃に対して脆弱である。これが、システムの過負荷になり、正常な動作を妨げる場合がある。図6および7を参照して上述したIXC実装では、悪質なXletが、多くのオブジェクトをエクスポートするための多くの要求を作成し、オブジェクトレジストリを飽和させて、他のXletによるオブジェクトレジストリの利用を妨害するという問題がある。
一実施形態では、かかるDOS攻撃は、任意の特定のXletからレジストリにおいて利用可能な結合の数を制限することによって防止される。この方法では、レジストリは、各エクスポートXletに対して、エクスポートされたオブジェクトの数をカウントする。いずれかのXletが、エクスポートされるオブジェクトの最大許容数に到達すると、以後の要求はすべて拒否される。
図8は、各Xletに対する結合の数を制限するためのプロシージャの一例を示すフローチャート220である。そのプロシージャは、開始ブロック222に示すように始まり、エクスポートされたオブジェクトのオブジェクト名をリモート参照と結合するための要求が受信される動作224に進む。動作226において、オブジェクトレジストリは、要求側のXletについての結合オブジェクトのカウント数を、オブジェクトの最大許容結合数と比較する。動作228において、結合されたオブジェクトの数に対するカウンタが、最大許容数未満であるか否かが判定される。カウンタが最大値未満である場合には、プロシージャは動作230に進み、リモート参照およびオブジェクト名がレジストリテーブルに転送されて、カウンタが増分される。次いで、プロシージャは、終了ブロック234に示すように終了する。しかしながら、動作228において、カウンタが最大値以上であると判定された場合には、プロシージャは動作232に進み、要求は拒否される。例えば、エクスポートされたオブジェクトの最大結合数に到達していることを示すエラーメッセージが、要求側のXletに送信される。次いで、プロシージャは、終了ブロック234に示すように終了する。
図8に示したように、悪質なXletが偽の結合要求でオブジェクトレジストリに過負荷を掛けるという問題の起きる可能性は、各Xletにとって利用可能な結合の数を制限することにより排除される。例えば、その制限は、Xlet当たり50または100の結合であってよい。この数は、リソースの制限、および/または、特定の実装に特有の他の要素に応じて変更されてよい。結合の制限は、各Xletに対して定数であってもよいし、ある認証機構を備えることで、さらなる結合を必要とする既知の信頼できるXletが、制限を超えることができるようにしてもよい。また、各Xletでなく、各アイソレートに対して結合数を制限することも可能である。
エクスポート側Xletが停止した場合には、エクスポートされたオブジェクトは、他のXletからの要求の処理に対して利用不可能になる。したがって、レジストリテーブルを更新して、停止したXletに付属するエクスポートされたオブジェクトの喪失を反映することが重要である。また、すべての対応するスタブオブジェクトを破棄できるように、リモートオブジェクトがもはや利用可能ではないことを、停止したXletからインポートしたオブジェクトを有するXletに対して通知することも有用である。この動作により、メモリリソースを必要とする他のプロセスに、メモリリソースを再割り当てすることが可能となり、それは、しばしば、「ガーベッジコレクション」と呼ばれる。Xletプログラミングモデルでは、個々のXletのライフサイクルは、アプリケーションマネージャによって制御されてよく、アプリケーションマネージャは、システム上の様々なXletの状態を認識している。Xletと、それらのXletがインポートしたオブジェクトとのリストを保持することにより、レジストリは、対応するリモートオブジェクトの停止が原因で停止したインポート後のオブジェクトを有するXletに対してアプリケーションマネージャが通知する必要のある情報を、アプリケーションマネージャに提供することができる。
図9は、ガーベッジコレクションのプロシージャの一例を示すフローチャート240である。そのプロシージャは、開始ブロック242に示すように始まり、アプリケーションマネージャが、特定のXletの停止に気付く動作244に進む。Xletは、単に、終了したことによって停止してもよいし、アプリケーションマネージャが、そのXletを強制終了したのであってもよい。アプリケーションマネージャは、例えば、特定のXletが不正動作(例えば、システムリソースの過度の消費など)をしていると判定した場合に、ユーザの要求に応じてアプリケーションを強制終了することができる。アプリケーションマネージャは、Xletが停止したことに気付くと、動作246において、Xletの停止をオブジェクトレジストリに通知するメッセージをオブジェクトレジストリに送信する。一実施形態では、オブジェクトレジストリは、アプリケーションマネージャにとってローカルなオブジェクトであるため、そのメッセージは、単に、このためにオブジェクトレジストリによって提供されたメソッドを呼び出すことによって受け渡し可能である。
動作248において、オブジェクトレジストリは、メッセージに応えて、停止したXletによってエクスポートされたすべてのオブジェクトの結合を削除する。停止したXletによってエクスポートされたオブジェクトは、本明細書では、停止オブジェクトと呼ぶこととする。停止オブジェクトへのすべての結合を削除することに加えて、オブジェクトレジストリは、停止オブジェクトのいずれかをインポートしたXletすべてに対してメッセージを送信する。
動作250において、インポート側Xletは、オブジェクトレジストリからのメッセージに応えて、停止オブジェクトに対応するスタブオブジェクトを破棄する。次いで、プロシージャは、終了ブロック252に示すように終了する。したがって、オブジェクトレジストリは、結合されたオブジェクトの各々について、結合されたオブジェクトをインポートしたXletのリストを保持する。結合されたオブジェクトが停止すると、オブジェクトレジストリは、結合されたオブジェクトをインポートしたXletすべてに通知して、結合を削除することにより、メモリリソースなどのリソースを他のアプリケーションに対して解放することができる。
上述のように、図6ないし9は、中央オブジェクトレジストリを用いたIXCの実装例の様々な態様を示している。レジストリへのDOS攻撃を防ぐために、各Xletは、オブジェクトレジストリによって、エクスポートされたオブジェクトについての選択された最大結合数に制限されてよい。別の実施形態では、レジストリは、各アイソレートが、そのアイソレートからエクスポートされたオブジェクトのためのレジストリを保持するように分散される。
図10は、IXCのための分散レジストリ300の実装の一例を示す説明図である。説明のため、2つのアイソレート、すなわち、アイソレートA 310とアイソレートB 320が図示されている。アイソレートA 310はXlet A 312を有し、アイソレートBはXlet B 322を有する。Xlet B 322がOBJ_Cにアクセスするためには、まず、Xlet A 312が、OBJ_C 316をエクスポートする必要がある。これは、Xlet A 312が、単に、アイソレートA 310内に位置するエクスポート済みアイソレートレジストリA 314にOBJ_Cを追加することによって実現される。各アイソレートは、例えば、アイソレートB 320が、エクスポート済みアイソレートレジストリB 324を含むように、エクスポート済みアイソレートレジストリを含む。エクスポート済みアイソレートレジストリの各々は、そのアイソレート内のXletによってエクスポートされたオブジェクトのリストを含む。したがって、エクスポート済みアイソレートレジストリA 314は、オブジェクトと、それらのオブジェクトに対応して結合されたリモート参照とのリストを含む。Xlet Aは、オブジェクトOBJ_Cをエクスポートするために、それ以上のことをする必要はない。アイソレートAの外側のXletにとって、OBJ_Cはリモートオブジェクトである。
Xlet B 322は、OBJ_Cをインポートするために、まず、レジストリプロキシ332に接触して、リモートオブジェクトOBJ_Cのリモート参照(Xlet B 322はインスタンスとして認識する)を要求する。一実施形態では、レジストリプロキシ332は、1組の特殊なコマンドを用いて実装される。別の実施形態では、レジストリプロキシ332は、アプリケーションマネージャ330によって提供されるリモートオブジェクトであり、Xlet Bを含む他のXleyからIXCによって接触される。したがって、この場合、Xlet Bは、OBJ_Cをインポートするためにそのリモートオブジェクトに接触する前に、レジストリプロキシオブジェクトをインポートする必要がある。Xletが、確実にレジストリプロキシオブジェクトを見つけることができるように、レジストリプロキシへのリモート参照は、JVMによって提供された定数値である。いずれの実施形態でも、Xlet B 324は、OBJ_Cへのリモート参照を取得することを要求するメッセージをレジストリプロキシ332に送信する。この要求を満たすために、レジストリプロキシ332は、アプリケーションマネージャ330が保持するアイソレートテーブル334内のアイソレートのリストを参照し、各アイソレート内のエクスポート済みアイソレートレジストリ各々をポーリングして、求められている特定のオブジェクトが、そのアイソレート内に存在するか否かを判定する。一実施形態では、このアイソレートの検索は、一貫した命名方式を用いて最適化されてよい。例えば、各アイソレートは、エクスポートされたオブジェクトのオブジェクト名に固有のプレフィックスを添付して、求められているリモートオブジェクトと共通のプレフィックスを有するアイソレート内の最初に検索してもよい。
予期しない結果を招く場合があるため、Xletが、検索中にオブジェクトをエクスポートすることを防ぐために、レジストリは、排他ロックを取得する。レジストリプロキシがロックを制御する場合には、個々のXletは、エクスポート済みアイソレートレジストリの修正を防止される。Xlet Aは、オブジェクトOBJ_Cをエクスポートすると、まず、排他ロックを取得して、レジストリプロキシが、そのオブジェクトを入手しないことを保証する。レジストリプロキシ332は、OBJ_Cに結合された検索対象のリモート参照を見つけると、エクスポート済みアイソレートレジストリからその参照を取得し、Xlet B 322に渡して、Xlet Bとのやり取りを完了し、排他ロックを解除する。型検査が上述のように一致すると、Xlet B 322は、リモートオブジェクトOBJ_C 316にインターフェースを提供してOBJ_C 316への呼び出しを受け渡すスタブオブジェクト326を生成する動作に進む。
図11は、Xlet A 312とXlet B 322との間のIXCを実装するためのプロシージャの一例を示すフローチャート350である。そのプロシージャは、開始ブロック352に示すように始まり、Xlet Aが、エクスポート済みアイソレートレジストリ内にOBJ_Cを入れることによりOBJ_Cをエクスポートする動作354に進む。その後、動作356において、Xlet Bが、アプリケーションマネージャによって提供されたレジストリプロキシからリモートオブジェクトを要求する。動作358において、レジストリプロキシは、Xlet Bからの要求に応じて、エクスポート済みアイソレートレジストリ内でOBJ_Cを検索する。レジストリプロキシは、検索中に排他ロックの制御を取得して、エクスポート済みアイソレートレジストリが、検索中に修正されることを防止する。動作360において、アイソレートA内のエクスポート済みアイソレートレジストリは、OBJ_Cに対応するリモート参照で、レジストリプロキシからの要求に応答する。動作362において、レジストリは、リモート参照をXlet Bに転送し、Xlet Bは、リモート参照を型検査して、リモートオブジェクトOBJ_Cに対応するスタブオブジェクトを生成する。
分散レジストリモデルは、様々なアイソレートをポーリングするさらな工程を必要とするが、これは、各アイソレートが同じマシン上に存在する環境では許容可能なことである。これは、レジストリがリモートオブジェクトと同じマシンに位置することができないために分散レジストリの検索が非常に長く掛かるRMIプロトコルと異なる点である。IXCモデルは、同じ物理マシン上のXlet間の通信に限定されているため、検索に関する遅延は、最小限であり、特定のXletが有しうるエクスポートされたオブジェクトの数に、いかなる制限もないという利点も提供する。
分散レジストリモデルは、さらに、ガーベッジコレクションを簡略化する可能性がある。典型的な例では、アイソレートごとに1つのXletのみが存在する。Xletが停止すると、アイソレートが終了して、エクスポート済みアイソレートレジストリは、アイソレートと共に消滅する。したがって、この状況でXletが停止した場合には、レジストリの項目を削除するさらなる動作は必要ない。アイソレート内に2以上のXletが存在する場合には、Xletは、正常に停止すると、自身をシャットオフするプロシージャを呼び出す。そのプロシージャは、シャットダウンされるXletに関連するすべての項目を削除するためのエクスポート済みアイソレートレジストリへの呼び出しを含む。Xletが、ロックした場合(例えば、無限ループに入ってリソースを消費し尽くした場合)には、アイソレート内で動作する他のXletを含めて、アイソレート全体がシャットダウンされる。これは、同様に、エクスポート済みアイソレートレジストリを削除する。
停止したXletまたは停止しかけのXletからオブジェクトをインポートした他のアイソレートのXletへの通知に関しては、2つの方法がある。第1の方法は、図9を参照して上述した方法と同様の積極的な方法であり、アプリケーションマネージャが、停止したXletまたは停止しかけのXletからオブジェクトをインポートした各Xletに対して、リモートオブジェクトがもはや存在しないことを通知して、対応するスタブオブジェクトを破棄するよう指示する。この通知は、すべてのXletへのブロードキャストメッセージであってもよいし、停止したXletまたは停止しかけのXletからオブジェクトをインポートしたXletのみを対象したブロードキャストメッセージであってもよい。別の実施形態では、現存しないインポートされたオブジェクトのガーベッジコレクションのための反応性の方法と呼んでよい方法で、インポート側のXletは、リモートオブジェクトへの接触を試みるまで、リモートオブジェクトの停止を通知されない。
図12は、現存しないインポートされたオブジェクトのガーベッジコレクションのための反応性の方法を示すフローチャート370である。そのプロシージャは、開始ブロック372に示すように始まり、Xlet Bが、そのローカルスタブオブジェクト内のメソッドを呼び出す動作374に進む。動作376において、ローカルスタブオブジェクトは、アイソレートA内のリモートオブジェクトへの呼び出しを転送する。動作378に示すように、リモートオブジェクトが存在するか否かによって、次の動作が決まる。リモートオブジェクトが存在する場合には、プロシージャは、リモートオブジェクトが要求を処理して結果を返す動作380に進む。次いで、動作382において、ローカルスタブオブジェクトは、その結果をXlet Bに渡す。次いで、プロシージャは、終了ブロック388に示すように終了する。
Xletのシャットダウンもしくはアイソレートのシャットダウンのために、リモートオブジェクトがもはや存在しない場合には、動作384において、スタブオブジェクトは、リモートオブジェクトが見つからないことを示すエラーを受信する。このエラーは、IXC APIによって実装された低レベルのIPC機構によって受け渡されてよい。あるいは、そのエラーは、タイムアウト・エラーに応答して生成されてもよい。スタブオブジェクトは、このエラーを受信すると、動作386において、そのエラーをXlet Bに受け渡して、停止する。スタブオブジェクトは、自身を終了してもよいし、Xletがスタブオブジェクトからエラーを受信した時に、Xletによって終了されてもよい。次いで、プロシージャは、終了ブロック388に示すように終了する。
両方のXletが同じマシン上に存在するため、Xlet間で信頼性の高い通信が実現される。したがって、IXCプロトコルは、アイソレートによって提供された保護ドメインによって促進されたセキュリティを損なうことなく、Xlet間の通信での必要性を満たす単純でありながら堅固なIXCインフラストラクチャを提供することにより、この信頼性を活用するよう設計される。
上述の実施形態に関して、本発明は、コンピュータシステムに格納されたデータを含む様々なコンピュータによる動作を用いてよいことを理解されたい。これらの動作は、物理量の物理的な操作を必要とするものである。これらの量は、必ずとは限らないが、格納、転送、結合、比較、および、その他の操作が可能な電気信号または磁気信号の形態をとるのが通常である。さらに、実行される操作は、生成、特定、決定、または、比較などの用語で呼ばれることが多い。
本明細書に記載され、本発明の一部を形成する動作は、有用なマシン動作である。本発明は、また、これらの動作を実行するためのデバイスまたは装置に関する。この装置は、必要とされる目的に応じて特別に構築されてもよいし、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータであってもよい。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に、様々な汎用マシンを使用してもよいし、必要な動作を実行するために、より特殊化された装置を構築する方が好都合な場合もある。
また、本発明は、コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして実施されてもよい。コンピュータ読み取り可能な媒体は、データを格納して、その後に、コンピュータシステムによって読み出し可能である任意のデータ記憶装置である。また、コンピュータ読み取り可能な媒体は、コンピュータコードを具現化した電磁気の搬送波を含む。コンピュータ読み取り可能な媒体の例としては、ハードディスク、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、および、その他の光学的または非光学的なデータ記憶装置が挙げられる。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能なコードを分散的に格納および実行できるように、ネットワークに接続されたコンピュータシステム上に分散されてもよい。
以上では、理解を促す目的で本発明を詳細に説明したが、添付した特許請求の範囲の範囲内で、変更および変形が可能であることは明らかである。したがって、上述した実施形態は、例示を目的としたものであって限定的ではなく、本発明は、本明細書に記載の詳細事項に限定されず、添付した特許請求の範囲および等価物の範囲内で変形されてよい。
リモートメソッド呼び出しのための従来の構成の一例を示す図である。 Xlet間通信(IXC)のための従来の構成の一例を示す図である。 アイソレート間のIXCのための構成の一例を示す図である。 本発明を実施できるデバイスの一例を示す図である。 デバイス上でXletを実行するためのハードウェアおよびソフトウェアの層の一例を示す図である。 アイソレート間のIXCの実装の一例を示す説明図である。 IXCを実装するプロシージャの一例を示すフローチャートである。 各Xletに対する結合の数を制限するためのプロシージャの一例を示すフローチャートである。 ガーベッジコレクションのプロシージャの一例を示すフローチャートである。 IXCのための分散レジストリの実装の一例を示す説明図である。 2つのXletの間のIXCを分散レジストリによって実装するためのプロシージャの一例を示すフローチャートである。 現存しないインポートされたオブジェクトのガーベッジコレクションのための反応性の方法を示すフローチャートである。

Claims (23)

  1. Xlet間通信(IXC)のために、結合されたオブジェクトのレジストリを管理するためのコンピュータによる方法であって、
    エクスポートされたオブジェクトのオブジェクト名をリモート参照と結合する要求を、第1のXletから受信する工程と、
    前記第1のXletによってエクスポートされたオブジェクトの数を、最大数と比較する工程と、
    前記エクスポートされたオブジェクトの数が、前記最大数よりも小さい場合に、前記エクスポートされたオブジェクトの前記オブジェクト名と前記リモート参照との結合を追加する工程と、
    前記エクスポートされたオブジェクトの数が、前記最大数以上である場合に、前記要求を拒否する工程と、を備える、方法。
  2. 請求項1に記載の方法であって、前記要求は、リモート参照オブジェクトを含み、前記受信工程は、JAVA(登録商標)オブジェクト直列化によって前記リモート参照オブジェクトを受信する工程を備える、方法。
  3. 請求項1に記載の方法であって、さらに、
    前記エクスポートされたオブジェクトの前記リモート参照への要求を、第2のXletから受信する工程と、
    前記第2のXletからの前記要求の受信に応じて、前記第2のXletに前記リモート参照を送信する工程と、を備える、方法。
  4. 請求項3に記載の方法であって、前記リモート参照は、別のアイソレートのXletが、前記エクスポートされたオブジェクトに接触することを可能にするのに十分な情報を備える、方法。
  5. 請求項3に記載の方法であって、前記リモート参照は、さらに、前記エクスポートされたオブジェクトの型を示すインターフェース記述子を備える、方法。
  6. 請求項1に記載の方法であって、さらに、
    Xletが停止した場合に、前記停止したXletによってエクスポートされたオブジェクトの結合を削除する工程と、
    前記停止したXletをインポートしたXletを特定する工程と、
    前記停止したXletをインポートした前記Xletに、前記停止したXletによってエクスポートされた前記オブジェクトが停止したことを通知する工程と、を備える、方法。
  7. Xlet間通信(IXC)のためのコンピュータによる方法であって、
    第1のアイソレート内の第1のXletからエクスポートされたオブジェクトへのリモート参照を、前記第1のアイソレートの外に位置するオブジェクトレジストリに送信する工程と、
    前記オブジェクトレジストリ内で前記リモート参照と前記エクスポートされたオブジェクトのオブジェクト名とを結合する工程と、
    前記エクスポートされたオブジェクトの前記リモート参照への要求を、第2のアイソレート内の第2のXletから送信する工程と、
    前記要求に応じて、前記第2のXletに前記リモート参照を転送する工程と、
    前記第2のXletのためのスタブオブジェクトのインスタンスを生成する工程と、を備え、前記スタブオブジェクトは、前記エクスポートされたオブジェクトと通信を行い、
    前記オブジェクトレジストリは、選択された結合数に各Xletを制限する、方法。
  8. 請求項7に記載の方法であって、前記リモート参照は、オブジェクトであり、Xlet間で送信され、前記オブジェクトレジストリは、JAVA(登録商標)オブジェクト直列化を用いる、方法。
  9. 請求項7に記載の方法であって、さらに、
    前記エクスポートされたオブジェクトによって提供されたインターフェースが、前記第2のXletによって予期されたインターフェースと一致することを保証するために、前記リモート参照を型検査する工程と、
    前記予期されたオブジェクトが、以前にインポートされていない型を有する場合に、前記インターフェースのためのスタブクラスを生成する工程と、を備え、前記スタブオブジェクトのインスタンスを生成する工程は、前記スタブクラスのインスタンスを生成する工程を備える、方法。
  10. 請求項7に記載の方法であって、さらに、
    Xletが停止した場合に、前記停止したXletによってエクスポートされたオブジェクトの結合を削除する工程と、
    前記停止したXletによってエクスポートされたオブジェクトをインポートしたXletを特定する工程と、
    前記停止したXletによってエクスポートされた前記オブジェクトに対応するスタブオブジェクトを破棄する工程と、を備える、方法。
  11. 請求項7に記載の方法であって、前記オブジェクトレジストリは、アプリケーションマネージャによってエクスポートされたオブジェクトであり、前記リモート参照を送信する工程は、IXCを用いて前記リモート参照を前記オブジェクトレジストリに送信する工程を備える、方法。
  12. 請求項7に記載の方法であって、前記リモート参照は、エクスポート側Xlet識別子と、エクスポート側Xletエンドポイント識別子と、インターフェース記述子と、を備える、方法。
  13. 請求項12に記載の方法であって、前記インターフェース記述子は、前記エクスポートされたオブジェクトによって提供されたインターフェースの型を示し、前記型は、メソッド名と、各メソッドに対する少なくとも1つのパラメータ型と、各メソッドに対する戻り型と、を備える、方法。
  14. 請求項13に記載の方法であって、さらに、
    以前にインポートされたオブジェクトの中で同じ型を有するオブジェクトがない場合に、前記型に対応するスタブクラスを生成する工程を備え、前記スタブオブジェクトのインスタンスを生成する工程は、前記スタブクラスのインスタンスを生成する工程を備える、方法。
  15. アイソレート間でのオブジェクト指向のXlet間通信(IXC)のためのプログラム命令を有するコンピュータ読み取り可能な媒体であって、
    第1のXletからオブジェクトをエクスポートするためのプログラム命令であって、前記エクスポートは、前記エクスポートされたオブジェクトのオブジェクト名をリモート参照と結合する要求を、前記第1のXletからオブジェクトレジストリに送信する工程を備えるプログラム命令と、
    前記第1のXletによってエクスポートされたオブジェクトの数を、最大数と比較するためのプログラム命令と、
    前記エクスポートされたオブジェクトの数が、前記最大数よりも小さい場合に、前記エクスポートされたオブジェクトの前記オブジェクト名と前記リモート参照との結合を前記オブジェクトレジストリに追加するためのプログラム命令と、
    前記エクスポートされたオブジェクトの数が、前記選択された最大数以上である場合に、前記要求を拒否するためのプログラム命令と、を備える、コンピュータ読み取り可能な媒体。
  16. 請求項15に記載のコンピュータ読み取り可能な媒体であって、前記要求は、リモート参照オブジェクトを備え、前記受信は、JAVA(登録商標)オブジェクト直列化によって前記リモート参照オブジェクトを受信する工程を備える、コンピュータ読み取り可能な媒体。
  17. 請求項15に記載のコンピュータ読み取り可能な媒体であって、さらに、
    前記エクスポートされたオブジェクトの前記リモート参照への要求を、第2のXletから前記オブジェクトレジストリに送信するためのプログラム命令と、
    前記第2のXletからの前記要求に応じて、前記第2のXletに前記リモート参照を送信するためのプログラム命令と、
    前記エクスポートされたオブジェクトに対応するスタブオブジェクトのインスタンスを生成するためのプログラム命令と、を備える、コンピュータ読み取り可能な媒体。
  18. 請求項17に記載のコンピュータ読み取り可能な媒体であって、さらに、
    前記エクスポートされたオブジェクトによって提供されたインターフェースが、前記第2のXletによって予期されたインターフェースと一致することを保証するために、前記リモート参照を型検査するためのプログラム命令を備える、コンピュータ読み取り可能な媒体。
  19. 請求項17に記載のコンピュータ読み取り可能な媒体であって、前記リモート参照は、別のアイソレートのXletが、前記エクスポートされたオブジェクトに接触することを可能にするのに十分な情報を備える、コンピュータ読み取り可能な媒体。
  20. 請求項19に記載のコンピュータ読み取り可能な媒体であって、前記リモート参照は、エクスポート側Xlet識別子と、エクスポート側Xletエンドポイント識別子と、インターフェース記述子と、を備える、コンピュータ読み取り可能な媒体。
  21. 請求項20に記載のコンピュータ読み取り可能な媒体であって、さらに、
    以前にインポートされたオブジェクトの中で同じインターフェース記述子を有するオブジェクトがない場合に、前記インターフェース記述子に対応するスタブクラスを生成するためのプログラム命令を備え、前記スタブオブジェクトのインスタンスを生成するためのプログラム命令は、前記スタブクラスのインスタンスを生成する、コンピュータ読み取り可能な媒体。
  22. 請求項15に記載のコンピュータ読み取り可能な媒体であって、さらに、
    Xletが停止した場合に、前記停止したXletによってエクスポートされたオブジェクトの結合を削除するためのプログラム命令と、
    前記停止したXletをインポートしたXletを特定するためのプログラム命令と、
    前記停止したXletをインポートした前記Xletに、前記停止したXletによってエクスポートされた前記オブジェクトが停止したことを通知するためのプログラム命令と、を備える、コンピュータ読み取り可能な媒体。
  23. 請求項15に記載のコンピュータ読み取り可能な媒体であって、前記オブジェクトレジストリは、アプリケーションマネージャによってエクスポートされたオブジェクトであり、前記リモート参照を送信する動作は、IXCを用いて前記リモート参照を前記オブジェクトレジストリに送信する動作を備える、コンピュータ読み取り可能な媒体。
JP2006289301A 2005-10-26 2006-10-25 アイソレート間でのオブジェクト指向通信 Active JP5248761B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/259,996 US7765560B2 (en) 2005-10-26 2005-10-26 Object oriented communication between isolates
US11/259996 2005-10-26

Publications (2)

Publication Number Publication Date
JP2007128507A true JP2007128507A (ja) 2007-05-24
JP5248761B2 JP5248761B2 (ja) 2013-07-31

Family

ID=37562205

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006289301A Active JP5248761B2 (ja) 2005-10-26 2006-10-25 アイソレート間でのオブジェクト指向通信

Country Status (3)

Country Link
US (1) US7765560B2 (ja)
EP (1) EP1785860A1 (ja)
JP (1) JP5248761B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8260917B1 (en) * 2004-11-24 2012-09-04 At&T Mobility Ii, Llc Service manager for adaptive load shedding
US20070168872A1 (en) * 2006-01-19 2007-07-19 Raytheon Company Multi-monitor, multi-JVM java GUI infrastructure with layout via XML
US8127313B2 (en) * 2008-03-31 2012-02-28 Oracle America, Inc. Method and system for providing services
FR2940695B1 (fr) * 2008-12-30 2012-04-20 Eads Secure Networks Serveur passerelle a micronoyau
US8768979B2 (en) 2011-05-25 2014-07-01 International Business Machines Corporation In-memory data grid hash scheme optimization
US9058225B2 (en) * 2013-03-28 2015-06-16 Red Hat, Inc. Secure and reliable mechanism to provide a single object instance in a clustered system
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10395029B1 (en) * 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
JP6733473B2 (ja) * 2016-09-30 2020-07-29 富士通株式会社 情報処理装置、仕様書作成方法及び仕様書作成プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214924A (ja) * 1992-09-25 1994-08-05 Bull Hn Inf Syst Inc ネットワーク・システムで動作する非分散計算環境(dce)およびdceシステムを連結する関連要素機構
JPH1083308A (ja) * 1996-04-23 1998-03-31 Sun Microsyst Inc スタブ検索及びローディング・サブシステム、スタブ検索及びローディング方法並びにスタブ検索及びローディング用記録媒体
JP2002516006A (ja) * 1997-03-31 2002-05-28 サン・マイクロシステムズ・インコーポレーテッド オブジェクト指向システムにおけるオブジェクトを参照するランタイム生成スタブの生成および使用の方法および装置
JP2003532948A (ja) * 1999-11-30 2003-11-05 サン・マイクロシステムズ・インコーポレイテッド リソースドメイン間で通信するための装置および方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7254817B2 (en) 2001-10-31 2007-08-07 Sun Microsystems, Inc. Apparatus and methods for integrating APIs for program execution management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214924A (ja) * 1992-09-25 1994-08-05 Bull Hn Inf Syst Inc ネットワーク・システムで動作する非分散計算環境(dce)およびdceシステムを連結する関連要素機構
JPH1083308A (ja) * 1996-04-23 1998-03-31 Sun Microsyst Inc スタブ検索及びローディング・サブシステム、スタブ検索及びローディング方法並びにスタブ検索及びローディング用記録媒体
JP2002516006A (ja) * 1997-03-31 2002-05-28 サン・マイクロシステムズ・インコーポレーテッド オブジェクト指向システムにおけるオブジェクトを参照するランタイム生成スタブの生成および使用の方法および装置
JP2003532948A (ja) * 1999-11-30 2003-11-05 サン・マイクロシステムズ・インコーポレイテッド リソースドメイン間で通信するための装置および方法

Also Published As

Publication number Publication date
JP5248761B2 (ja) 2013-07-31
US20070094676A1 (en) 2007-04-26
US7765560B2 (en) 2010-07-27
EP1785860A1 (en) 2007-05-16

Similar Documents

Publication Publication Date Title
US10552208B2 (en) Migrating a virtual machine that owns a resource such as a hardware device
CN112204548B (zh) 应用特定客户端证书的自动生成
US8639492B2 (en) Accelerated execution for emulated environments
US5566302A (en) Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
JP2005327239A (ja) セキュリティ関連プログラミング・インターフェース
CN102460382A (zh) 标注虚拟应用进程
CN1265489A (zh) 用于嵌入设备的java应用程序管理程序
JP2007524896A (ja) カスタマイズされた実行環境および該環境をサポート可能なオペレーティング・システム
JP5248761B2 (ja) アイソレート間でのオブジェクト指向通信
US12500757B2 (en) Trusted computing-based local key escrow method, apparatus, device and medium
EP1461695A2 (en) Modified class loaders and their utilisation method
JP2008535117A (ja) ソフトウェア保護
JP4890569B2 (ja) 実行可能コード変更の防止
CN115362433A (zh) 用于动态代码的影子堆栈强制范围
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
US7941800B2 (en) Transferring data between virtual machines by way of virtual machine bus in pipe mode
US8046773B1 (en) Object oriented communication between isolates
EP1977338B1 (en) External configuration of processing content for script
TW202027477A (zh) 將重定向的生物辨識裝置隔離到遠程會話
CN119917114A (zh) 卸载微码程序的方法、装置以及相关产品
CN116262177A (zh) 云游戏登录方法、装置、计算机、存储介质及程序产品
HK40087921A (zh) 云游戏登录方法、装置、计算机、存储介质及程序产品
CA2312445A1 (en) Method and apparatus for flexible rmi firewall initialization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090918

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120131

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130411

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5248761

Country of ref document: JP

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250