JP2003076563A - 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム - Google Patents

分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム

Info

Publication number
JP2003076563A
JP2003076563A JP2002174417A JP2002174417A JP2003076563A JP 2003076563 A JP2003076563 A JP 2003076563A JP 2002174417 A JP2002174417 A JP 2002174417A JP 2002174417 A JP2002174417 A JP 2002174417A JP 2003076563 A JP2003076563 A JP 2003076563A
Authority
JP
Japan
Prior art keywords
server
relay
remote
client
class
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.)
Pending
Application number
JP2002174417A
Other languages
English (en)
Other versions
JP2003076563A5 (ja
Inventor
Yasunori Hatsutori
易憲 服部
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.)
NTT Software Corp
Original Assignee
NTT Software Corp
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 NTT Software Corp filed Critical NTT Software Corp
Priority to JP2002174417A priority Critical patent/JP2003076563A/ja
Priority to AU2002349514A priority patent/AU2002349514A1/en
Priority to PCT/JP2002/012338 priority patent/WO2003107205A1/ja
Publication of JP2003076563A publication Critical patent/JP2003076563A/ja
Publication of JP2003076563A5 publication Critical patent/JP2003076563A5/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】 クライアント側ORBとサーバ側ORBが異なる場
合であっても、それらORB製品を自動的に連携させ、簡
易にリモートオブジェクトを利用可能とする。 【解決手段】 クライアントとサーバとの間に設けられ
た中継計算機において実行される方法において、リモー
ト参照の取得を中継するリモート参照取得中継オブジェ
クトと、リモートメソッド呼び出しを中継するリモート
メソッド呼び出し中継オブジェクトのクラスとを備え、
前記リモート参照取得中継オブジェクトがクライアント
からサーバ側オブジェクトに関するリモート参照の取得
要求を受け付けたとき、その要求をサーバに送信し、サ
ーバから前記サーバ側オブジェクトのリモート参照を受
信し、そのサーバ側オブジェクトに対応するリモートメ
ソッド呼び出し中継オブジェクトを起動するように構成
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分散オブジェクト
ミドルウェア連携技術に係り、特に、異なる通信プロト
コルを用いた分散オブジェクトミドルウェア間を接続す
るための技術に関する。
【0002】
【従来の技術】分散オブジェクト技術は、ネットワーク
上に分散されているプログラム資源(オブジェクト)を
他のロケーションから利用可能とする技術である。分散
オブジェクトを利用する分散型アプリケーションの開発
効率を向上させる等の目的で、異なる計算機に存在する
サーバオブジェクトのメソッドを、同じ計算機に存在す
る場合と同じコーディング方法により呼び出せるように
している分散オブジェクトミドルウェアが提供されてい
る。
【0003】分散配置されたオブジェクト間での通信に
は、同期型通信(例:RPC)と非同期型通信(例:メッ
セージ交換)がある。従来からORB(Object Request Br
oker)として知られている分散オブジェクトミドルウェ
アは同期型通信を行う。ここで、近年、話題とされてい
るWebサービス技術では、非同期型/同期型の両タイプ
があり、オブジェクト間でXML記述されたメッセージ通
信を行う方法が良く知られている。以下、ORBを例にと
って分散ミドルウェアの機能等を詳しく説明する。
【0004】ORBには、PCやワークステーションのJava(登録商
標)実行環境であるJ2SE(Java(登録商標)2 Platform,
Standard Edition)に標準として付属する Java(登録
商標) RMIや、OMG(Object Management Group)によって
策定された標準仕様であるCORBA(Common Object Reques
t Broker Architecture)に準拠したBorland社のvisibro
ker等の製品がある。また、NTTソフトウェア株式会
社が開発した製品であるBLUEGRID(登録商標)-ORBは、携
帯電話やPDAなど小型機用のJava(登録商標)実行環境で
あるJ2ME CLDC(Java(登録商標)2 Platform, Micro Ed
ition / ConnectedLimited Device Configuration)に適
合した ORB製品である。このように複数のORB製品が開
発されている。
【0005】ORBは、通信処理とリモートオブジェクト
の呼出し手順を提供しており、リモート参照取得機能
と、リモートメソッド呼び出し機能から構成される。こ
れらの機能の処理方法を図1に示す。
【0006】同図に示すシステムは、クライアント計算
機10とサーバ計算機20からなる。同図に示す状態に
おいては、クライアント計算機10には、クライアント
オブジェクト11とスタブオブジェクト12があり、サ
ーバ計算機20には、ネーミングサービス21、スケル
トンオブジェクト22、サーバオブジェクト23があ
る。
【0007】ORBのリモート参照取得機能は、クライア
ントオブジェクトが利用したいサーバオブジェクトを探
し出し、サーバオブジェクトにアクセスするための環境
設定をすると共に、クライアントオブジェクト11に対
してアクセスに必要な情報を提供する。一般的に、ORB
はネーミングサービスを用いてリモート参照取得機能を
提供している。クライアント計算機10は、予めネーミ
ングサービス21に登録(ステップ101)されている
サーバオブジェクト23の名前に基づきサーバオブジェ
クト23のリモート参照を取得することができる(ステ
ップ102、ステップ103)。リモート参照の取得の
過程では、リモート参照取得機能により、予め用意され
ているスタブ、スケルトンオブジェクトのクラス定義か
ら、スタブオブジェクト及びスケルトンオブジェクトが
生成され、クライアントオブジェクト11にアクセスす
べきスタブオブジェクト情報が提供される。なお、以下
では特にことわらない場合、「オブジェクトを生成す
る」、「オブジェクトを起動する」は、オブジェクトの
クラス定義からそのオブジェクトのインスタンスを生成
する意味で用いる。
【0008】リモート参照取得機能について、具体的な
例を用いて更に説明する。まず、サーバ計算機20の”
sayHellow”と”calculate”メソッドを有するサーバオ
ブジェクト”Hellow”をネーミングサービスに登録す
る。例えば、Java(登録商標)RMIではJava(登録商標)
言語が提供するNamingクラスのbindメソッドを使うこと
で登録できる(ステップ101)。サーバ計算機20上
のネーミングサービスは、オブジェクトの名前”Hello
w”とサーバ計算機20のORBが採番したオブジェクトI
D(例えば10とする)、メソッドID(例えば、”sa
yHellow”メソッドを1、”calculatye”メソッドを2
とする)を関連づけて記憶しておく(図2)。次に、ク
ライアント計算機10は、サーバ計算機20のネーミン
グサービス21に対してサーバオブジェクト”Hellow”
のリモート参照の取得を依頼する。例えば、Java(登録
商標)RMIではJava(登録商標)言語が提供するNamingク
ラスのlookupメソッドを使って取得を依頼する。(ステ
ップ102)。クライアント計算機10はサーバ計算機
20に、サーバオブジェクトの名前”Hellow”を含むリ
モート参照取得に必要な情報(図3)を送る。
【0009】ここで、クライアント計算機10は、サー
バ計算機20のホスト名(例えば”XXX”とする)、ポ
ート番号(例えば100とする)を、事前に設定、記憶
してあるものとする。サーバ計算機20は、送られたサ
ーバオブジェクトの名前を基にネーミングサービスに記
憶してあるサーバオブジェクトの名前に関連づけられた
オブジェクトID、メソッドIDを取得して、クライア
ント計算機10に対して取得したオブジェクトID、メ
ソッドIDを送る。クライアント計算機10のORBは、
サーバオブジェクトの名前に関連づけられたオブジェク
トID、メソッドIDをクライアントオブジェクトのリ
モートメソッド呼び出しに備え記憶しておく(ステップ
103)。
【0010】次に、リモートメソッド読出し機能につい
て説明する。
【0011】リモートメソッド読出し機能は、クライア
ントオブジェクト11が呼び出したサーバオブジェクト
23のメソッド呼び出しの戻り値を、クライアントオブ
ジェクト11に返す機能である。
【0012】リモート参照により一対のスタブオブジェ
クトとスケルトンオブジェクトが生成され、クライアン
トオブジェクト11とサーバオブジェクト23間の通信
は、クライアント計算機10に配置されたスタブオブジ
ェクト12と、サーバ計算機20に配置されたスケルト
ンオブジェクト22を仲介して行われる。
【0013】一般的なORB製品におけるリモートメソッ
ド呼び出し機能の内部処理を図1を用いて説明する。
【0014】まず、クライアントオブジェクト11がリ
モート参照を取得した結果として得たスタブオブジェク
ト12のメソッドを呼び出すと(ステップ104)、スタ
ブオブジェクト12は、メソッド呼び出し引数のシリア
ライズデータと、リモート参照のオブジェクトID、呼
び出されたメソッドに対応するメソッドIDを、スケル
トンオブジェクト22に送信する(ステップ105)。ス
ケルトンオブジェクト22は、受け取ったオブジェクト
IDから実際のオブジェクトを特定し、そのオブジェク
トの、メソッドIDに対応するメソッドを呼び出す。メ
ソッド呼び出しの際には、受け取った引数のシリアライ
ズデータをデシリアライズして目的のオブジェクトに渡
す(ステップ106)。次に、スケルトンオブジェクト2
2は、メソッド呼び出しの結果得られた戻り値データ
(ステップ107)をシリアライズし、スタブオブジェク
ト12に返す(ステップ108)。スタブオブジェクトは
受け取った戻り値シリアライズデータをデシリアライズ
してクライアントオブジェクトに返す(ステップ10
9)。
【0015】このように、クライアントのプログラムは
スタブオブジェクト12とスケルトンオブジェクト22
を介してリモートオブジェクト23にアクセスする。
【0016】JAVA(登録商標) RMIの場合、図4に示す
ようにスタブオブジェクト12とスケルトンオブジェク
ト22のクラス定義は、RMIが提供するツールによっ
て、呼び出し対象のサーバクラスから自動生成され、ク
ライアント計算機10とサーバ計算機20に配置され
る。このように、ツールにより自動生成されたスタブ/
スケルトンが煩雑な通信処理を隠蔽するため、アプリケ
ーション開発者は、分散アプリケーションの開発を効率
化することができる。
【0017】リモート参照取得機能、リモートメソッド
呼び出し機能におけるネーミングサービスとの通信プロ
トコルや、スタブ/スケルトン間の通信プロトコル、メ
ソッドの引数、戻り値の型は、利用する通信プロトコル
(JRMP、IIOP、SOAP、HTTP等)や、実装されるORB製品
毎に異なる。本発明は、このような異なる通信プロトコ
ルを実装するORB製品間の接続技術に関する。
【0018】
【発明が解決しようとする課題】ある通信プロトコル、
ORB製品に準拠して開発されているサーバアプリケーシ
ョンのオブジェクトを、新たな通信プロトコルで動作す
るクライアントプログラムオブジェクトから利用する場
合、クライアントに目的のサーバと同じORB製品を移植
する、あるいは、クライアントとサーバ間にプロトコル
変換機構を設ける等の対処が必要となる。
【0019】しかし、クライアントのハードウェア条件
等に対応させるため、クライアントプログラム(オブジ
ェクト)の実行環境が新たに開発された場合、目的とす
るオブジェクトを保有しているサーバに実装されている
ORB製品がその実行環境向けに必要とされる時期までに
移植されるとは限らない。また、モバイル機器などハー
ドウェア資源(搭載メモリサイズの制約など)が限られ
たクライアントプログラムの実行環境においては、サー
バで動作しているORB製品を移植できないことがある。
【0020】このように、クライアントが用いるORB製
品と、サーバが用いるORB製品が異なる場合、それぞれ
の通信プロトコルが異なる等のため、クライアントに用
意されたリモート参照取得機能から、サーバ側のネーミ
ングサービスを利用することができない。また、クライ
アントに配置されたスタブオブジェクトと、サーバに配
置されたスケルトンオブジェクトは、直接通信できな
い。
【0021】このような問題を解決するために、図5に
示すような、クライアント、サーバそれぞれのORB製品
で用いられている通信プロトコルをゲートウエイプログ
ラムにより相互変換する方法がある。これにより異なる
ORB製品間の通信は可能となるが、この方式では、各通
信プロトコル毎に定義されている多数の状態・遷移パタ
ーンの変換など複雑な通信処理の変換が必要で(即ち、
ゲートウェイプログラムに多大の開発工数が必要とな
る)、且つ、利用するクライアント、サーバ各々のORB
の組合せ毎にゲートウエイプログラムの開発が必要とな
る。従って、ゲートウェイ方式では、リモートオブジェ
クトを利用することによるソフトウェアの開発の効率向
上や、ORBを実装することによるリモートオブジェクト
利用のアプリケーション開発の容易化といった効果を低
減させることになる。
【0022】また、クライアント/サーバ間にFirewall
などの物理的要因によりクライアントからサーバに直接
通信できない場合に、Firewall上で中継プログラムを稼
働させて通信を中継するシステムが特開平11-282661号
公報、特開2000-99476号公報に開示されている。このシ
ステムは、Firewall上にサーバのクラス定義から自動生
成して配置した中継プログラムによって、クライアント
オブジェクトのリモートメソッド呼び出しを可能にする
方法を示している。しかし、これらの文献には、クライ
アント/サーバ間の通信プロトコルの違い、メソッドの
引数、戻り値の型の違いを解決する方法は示されていな
いため上記課題を解決することはできない。また、上記
のシステムには、中継プログラムを常時起動しておくた
めFirewallコンピュータのメモリを無駄に消費されてい
るという問題もある。
【0023】本発明は上述の事情を鑑みてなされたもの
で、その目的とするところは、クライアントが利用可能
なORBとサーバが利用可能なORBが異なる場合であって
も、それらORB製品を自動的に連携させ、簡易にリモー
トオブジェクトを利用可能とすることにある。
【0024】
【課題を解決するための手段】上記の目的は次のような
構成を有する本発明により達成できる。
【0025】本発明は、クライアント側分散オブジェク
トミドルウエアとサーバ側分散オブジェクトミドルウエ
アの通信プロトコルが異なる場合に、クライアント側オ
ブジェクトからサーバ側オブジェクトのメソッド呼出し
を実現する方法であって、クライアント側分散オブジェ
クトミドルウェアとサーバ側分散オブジェクトミドルウ
ェアとの間に、リモート参照の取得を中継するリモート
参照取得中継オブジェクトと、リモートメソッド呼び出
しを中継するリモートメソッド呼び出し中継オブジェク
トのクラスとを備え、前記方法は、前記リモート参照取
得中継オブジェクトがクライアントからサーバ側オブジ
ェクトに関するリモート参照の取得要求を受け付けたと
き、その要求をサーバに送信するステップと、前記リモ
ート参照取得中継オブジェクトがサーバから前記サーバ
側オブジェクトを利用するための情報を受信し、そのサ
ーバ側オブジェクトに対応するリモートメソッド呼び出
し中継オブジェクトを起動するステップとを有し、更
に、前記リモート参照取得中継オブジェクトが前記リモ
ートメソッド呼出し中継オブジェクトを呼出すための情
報をクライアントに送信するステップと、前記リモート
メソッド呼び出し中継オブジェクトが、クライアントか
ら前記サーバ側オブジェクトに対応するリモートメソッ
ド呼び出しを受信し、前記サーバ側オブジェクトに対し
てそのリモートメソッド呼び出しを行うステップとを有
する。
【0026】本発明によれば、クライアントが用いるOR
Bと、サーバが用いるORBの間に、リモート参照取得中継
オブジェクトと、リモートメソッド呼び出し中継オブジ
ェクトを配置する。リモートメソッド呼び出し中継オブ
ジェクトはサーバオブジェクト毎に必要であるがそのク
ラス定義はサーバオブジェクトのクラス定義から自動生
成することができ、また、リモート参照取得中継オブジ
ェクトは1つあればよく、サーバオブジェクト毎には必
要ない。従って、連携に必要なプログラム開発の負担を
無くすことができる。
【0027】また、リモート参照取得中継オブジェクト
が、クライアントからの要求に応じて、サーバオブジェ
クトのリモート参照を取得するときに、対応するリモー
トメソッド呼び出し中継オブジェクトを自動起動するの
で、リモートメソッド呼び出し中継機能を常時活性化さ
せておく必要がない。
【0028】すなわち、本発明によれば、通信プロトコ
ルが異なるORB間であっても、自動的な相互運用を容易
に達成することができ、種々のプログラム実行環境に存
在するオブジェクトが連携する分散型アプリケーション
を、効率よく開発することが可能となる。
【0029】また、本発明は、上記のリモート参照取得
中継オブジェクトのクラスを格納したコンピュータ読み
取り可能な記録媒体、及びリモート参照取得中継オブジ
ェクトのクラスを定義するプログラムとしても提供でき
る。そのクラスのファイルを中継計算機に相当するコン
ピュータに格納し、インスタンス化し、その他必要に応
じて他のファイルをコンピュータに格納することによ
り、本発明の分散オブジェクト連携を実現することがで
きる。
【0030】
【発明の実施の形態】図6は、本発明の一実施の形態に
おける異なる分散オブジェクトミドルウェアの連携シス
テムを説明するための図である。
【0031】同図に示す分散オブジェクトミドルウェア
連携システムは、クライアント計算機100、中継計算
機200、サーバ計算機300から構成される。
【0032】クライアント計算機100では、クライア
ントオブジェクト110、ORB(製品A)ツールにより
生成した、リモート参照取得中継オブジェクトのスタブ
オブジェクト120、ORB(製品A)ツールにより生成
した、リモートメソッド呼び出し中継オブジェクトのス
タブオブジェクト130が使用される。
【0033】中継計算機200では、ORB(製品A)の
ネーミングサービス210、ORB(製品A)ツールによ
り生成した、リモート参照取得中継オブジェクトのスケ
ルトンオブジェクト220、リモート参照取得中継オブ
ジェクト230、ORB(製品A)ツールにより生成し
た、リモートメソッド呼び出し中継オブジェクトのスケ
ルトンオブジェクト240、リモートメソッド呼び出し
中継オブジェクト250、ORB(製品B)ツールにより
生成したサーバオブジェクトのスタブオブジェクト26
0が使用される。
【0034】なお、リモートメソッド呼び出し中継オブ
ジェクト250のスタブオブジェクト130と、リモー
トメソッド呼び出し中継オブジェクト250のスケルト
ンオブジェクト240は、ORB(製品A)ツールにより
生成されたので、ORB(製品A)すなわちクライアント
側オブジェクトミドルウェアの通信プロトコルに基づき
動作する。
【0035】サーバ計算機300では、ORB(製品B)
のネーミングサービス310、ORB(製品B)ツールに
より生成した、サーバオブジェクトのスケルトンオブジ
ェクト320、サーバオブジェクト330が使用され
る。
【0036】なお、サーバオブジェクト330のスタブ
オブジェクト260と、サーバオブジェクト330のス
ケルトンオブジェクト320は、ORB(製品B)ツール
により生成されたので、ORB(製品B)すなわちサーバ
側オブジェクトミドルウェアの通信プロトコルに基づき
動作する。
【0037】なお、上記の各オブジェクトは、予め各計
算機に格納したクラスから所定の契機に生成(インスタ
ンス化)されるものである。クラスの生成方法等は図9
以降で説明する。
【0038】以下に、上記の構成において、ORB(製品
A)を用いているクライアント計算機100が中継計算
機200を介して、ORB(製品B)を用いているサーバ
計算機300と連携する場合の処理の例を説明する。
【0039】中継計算機200では、リモート参照取得
中継オブジェクト230が動作し、ORB(製品A)プロ
トコルによるクライアントオブジェクト110から目的
とするサーバオブジェクト330のリモート参照取得要
求を受け付け、ORB(製品B)プロトコルによりサーバ
計算機300のネーミングサービス310に要求を伝え
る。
【0040】また、中継計算機200では、リモートメ
ソッド呼び出し中継オブジェクト250が動作し、ORB
(製品A)によるクライアントオブジェクト110から
サーバオブジェクト330のリモートメソッド呼び出し
を受け付け、ORB(製品B)によりサーバオブジェクト
330のリモートメソッドを呼び出す。
【0041】以下、上記の処理方式について詳細な動作
を説明する。
【0042】まず、事前準備として、従来の方式同様、
他の計算機からのアクセスを許可するサーバオブジェク
ト330を、サーバ計算機300で稼働しているORB
(製品B)のネーミングサービスに、任意の名前で登録
しておく(ステップ401)。また、クライアント計算
機100からリモート参照取得中継オブジェクト230
にアクセスできるよう、中継計算機200で稼働するOR
B(製品A)のネーミングサービス210に、リモート
参照取得中継オブジェクト230を、任意の名前で登録
しておく(ステップ402)。
【0043】クライアント計算機100上に起動したク
ライアントオブジェクト110は、中継計算機200上
のネーミングサービス210に接続し、リモート参照取
得中継オブジェクト230のリモート参照を要求する
(ステップ403)。中継計算機200上のネーミング
サービス210は、事前に登録されていたリモート参照
取得中継オブジェクト230のリモート参照を、クライ
アントオブジェクト110に提供する(ステップ40
4)。クライアントオブジェクト110のリモート参照
提供にあたっては、ORB(製品A)により、リモート参
照取得中継オブジェクト230に対応するスケルトンオ
ブジェクト220、スタブオブジェクト120がそれぞ
れ中継計算機200、クライアント計算機100上に生
成される。クライアントオブジェクト110に提供され
るリモート参照の実体は、このスタブオブジェクト12
0にアクセスするための情報である。
【0044】リモート参照取得中継オブジェクト230
は、サーバオブジェクト330のリモート参照取得メソ
ッドを提供し、クライアントオブジェクト110からサ
ーバ計算機300への接続要求を受け付け、ORB(製品
B)のネーミングサービスから該当するサーバオブジェ
クト330を探し、接続する。そうした連携動作の詳細
を次に説明する。
【0045】クライアントオブジェクト110は、スタ
ブオブジェクト120のリモート参照取得メソッドを呼
び出し、目的とするサーバオブジェクト330への接続
を、サーバオブジェクト330のネーミングサービス3
10への登録名をもとに要求する(ステップ405)。
【0046】当該要求の内容は、ORB(製品A)に実装
されている通信プロトコルに基づくスタブ/スケルトン
(クライアント計算機100のスタブオブジェクト12
0と中継計算機200のスケルトンオブジェクト22
0)間のネットワーク通信処理により、中継計算機20
0のスケルトンオブジェクト220に伝えられ(ステッ
プ406)、スケルトンオブジェクト220が、実際の
リモート参照取得中継オブジェクト230のリモート参
照取得メソッドを呼び出す(ステップ407)。リモー
ト参照取得メソッドを呼び出されたリモート参照取得中
継オブジェクト230は、サーバ計算機300上のネー
ミングサービス310に、上記登録名に該当するサーバ
オブジェクト330のリモート参照を要求する(ステッ
プ408)。
【0047】サーバ計算機300上のネーミングサービ
ス310は、該当するサーバオブジェクト330のリモ
ート参照を返す(ステップ409)。ステップ404の
場合と同様に、リモート参照の結果として、ORB(製品
B)によりサーバオブジェクト330に対応するスケル
トンオブジェクト320、スタブオブジェクト260が
それぞれサーバ計算機300、中継計算機200に生成
される。リモート参照中継オブジェクト230に提供さ
れるリモート参照の実態は、目的とするサーバオブジェ
クト330に対応するスタブオブジェクト260にアク
セスするための情報である。
【0048】クライアントオブジェクト110から要求
されたサーバオブジェクト330に対応するリモート参
照を受け取った中継計算機200のリモート参照取得中
継オブジェクト230は、リモート参照の型を調べ、対
応するリモートメソッド呼び出し中継オブジェクト25
0を起動する(ステップ410)。さらに、起動したリ
モートメソッド呼び出し中継オブジェクト250に対応
するスケルトンオブジェクト240をORB(製品A)に
より起動し、その結果が、スケルトンオブジェクト22
0を介して、ORB(製品A)の通信プロトコルによりク
ライアント計算機100のスタブオブジェクト120に
伝えられる(ステップ411、ステップ412)。これ
により、クライアント計算機100では、スタブオブジ
ェクト130が起動される。この起動されたスタブオブ
ジェクト130へのアクセス情報が、サーバオブジェク
ト330のリモート参照取得結果としてクライアントオ
ブジェクト110に返される(ステップ413)。
【0049】クライアントオブジェクト110は、目的
とするサーバオブジェクト330に対応して起動された
リモートメソッド呼び出し中継オブジェクト250をOR
B(製品A)を使って呼び出すことができ、リモートメ
ソッド呼び出し中継オブジェクト250を介して、サー
バオブジェクト330のメソッドを自由に呼び出すこと
ができる。前述のステップ410で作成したリモートメ
ソッド呼び出し中継オブジェクト250は、ORB(製品
A)を使ったクライアントオブジェクト110からのメ
ソッド呼び出しと、ORB(製品B)を使ったサーバオブ
ジェクト330に対するメソッド呼び出しを中継する。
そうした連携動作の詳細を以下に説明する。
【0050】クライアント計算機100のクライアント
オブジェクト110は、中継計算機200のリモートメ
ソッド呼び出し中継オブジェクト250のスタブオブジ
ェクト130に対して、サーバオブジェクト330の呼
び出したいメソッドに対応するメソッドを呼び出す(ス
テップ414)。
【0051】スタブオブジェクト130がクライアント
オブジェクト110から呼出されると、スタブ/スケル
トン(クライアント計算機100のスタブオブジェクト
130と中継計算機200のスケルトンオブジェクト2
40)間のネットワーク通信処理により、中継計算機2
00のスケルトンオブジェクト240に目的のサーバオ
ブジェクトに関する情報が伝えられ(ステップ41
5)、スケルトンオブジェクト240が、実際のリモー
トメソッド呼び出し中継オブジェクト250の該当する
メソッドを呼び出す(ステップ416)。
【0052】呼び出されたリモートメソッド呼び出し中
継オブジェクト250は、リモート参照取得中継オブジ
ェクト230から起動時に受け取ったサーバオブジェク
ト330のスタブオブジェクト260に対して、スケル
トンオブジェクト240から呼び出されたメソッドと同
じ名称のメソッドを呼び出す(ステップ417)。この
内容は、スタブ/スケルトン間(中継計算機200のス
タブオブジェクト260とサーバ計算機300のスケル
トンオブジェクト320間)のネットワーク通信処理に
よりサーバ300のスケルトンオブジェクト320に伝
えられ(ステップ418)、スケルトンオブジェクト3
20が実際のサーバオブジェクト330の該当するメソ
ッドを呼び出す(ステップ419)。
【0053】サーバオブジェクト330からのメソッド
の呼び出しの戻り値、即ち、メソッドの実行結果(ステ
ップ420)は、スケルトン/スタブ間(サーバ計算機
300のスケルトンオブジェクト320と中継計算機2
00のスタブオブジェクト260間)のネットワーク通
信により、中継計算機200のスタブオブジェクト26
0に伝えられ(ステップ421)、リモートメソッド呼
び出し中継オブジェクト250に返される(ステップ4
22)。
【0054】ステップ422により戻り値を受け取った
リモートメソッド呼び出し中継オブジェクト250は、
スケルトンオブジェクト240に戻り値を返す(ステッ
プ423)。その内容は、スケルトン/スタブ間(中継
計算機200のスケルトンオブジェクト240とクライ
アント計算機100のスタブオブジェクト130間)の
ネットワーク通信処理によりクライアント計算機100
のスタブオブジェクト130に伝えられる(ステップ4
24)。スタブオブジェクト130はクライアントオブ
ジェクト110からのメソッドの戻り値としてステップ
424でスケルトンオブジェクト240から受信した戻
り値の内容をクライアントオブジェクト110に返す
(ステップ425)。
【0055】こうした方式により、クライアント計算機
100側のORB(製品A)とサーバ計算機300側のORB
(製品B)の間に中継計算機200を置き、リモート参
照取得中継オブジェクト230と、リモートメソッド呼
び出し中継オブジェクト250とを配置することによっ
て、煩雑なプロトコル変換を必要とせず、クライアント
オブジェクト110と任意のサーバオブジェクト300
を連携させることが可能となる。
【0056】次に、上記のリモート参照取得中継オブジ
ェクト230の動作について詳細に説明する。
【0057】図7は、本発明の一実施の形態におけるリ
モート参照取得中継オブジェクトの動作を示すフローチ
ャートである。
【0058】リモート参照取得中継オブジェクト230
が起動すると、自身をネーミングサービス(製品A)に
登録し、クライアント計算機100から利用できるよう
にする(ステップ501)。
【0059】次に、目的のサーバオブジェクト330の
リモート参照を取得可能とするために、サーバ計算機3
00で起動しているネーミングサービス(製品B)31
0に接続し(ステップ502)、クライアントオブジェ
クト110からの接続を待つ。リモート参照取得中継オ
ブジェクト230がクライアント計算機100からの接
続を受け、リモート参照取得メソッドが呼び出されたと
き(ステップ503)、メソッド引数としてサーバオブ
ジェクト登録名を受け取り、この登録名をネーミングサ
ービス310に送信して、サーバ計算機300のネーミ
ングサービス310より、該当するサーバオブジェクト
330のリモート参照を取得する(ステップ504)。
【0060】該当するサーバオブジェクト330がネー
ミングサービス310に登録されておらず、リモート参
照を取得できない場合は、その旨をエラーとしてクライ
アントオブジェクト110に返却する(ステップ50
5)。サーバオブジェクト330のリモート参照の取得
に成功したとき、その型を調べ、対応するリモートメソ
ッド呼び出し中継オブジェクト250を起動する(ステ
ップ506)。
【0061】対応するリモートメソッド呼び出し中継オ
ブジェクトのクラス定義が存在しない場合は、その旨
を、クライアントオブジェクト110にエラーとして返
却する(ステップ507)。
【0062】リモートメソッド呼び出し中継オブジェク
ト250が起動されたら、そのオブジェクトに、サーバ
計算機300のネーミングサービス310から取得した
サーバオブジェクト330のリモート参照を設定する
(ステップ508)。
【0063】最後にそのリモートメソッド呼び出し中継
オブジェクト250に対応するスタブオブジェクト13
0、スケルトンオブジェクト240を各々起動し、その
リモートメソッド呼び出し中継オブジェクト250のリ
モート参照、すなわち対応するスタブオブジェクト13
0へのアクセス情報をクライアント計算機100に返し
(ステップ509)、次のリモート参照取得要求を待
つ。この様に、クライアントオブジェクト110が目的
とするサーバオブジェクト330のリモート参照を取得
した状態では、目的のサーバオブジェクト330にアク
セスするための、リモートメソッド呼び出し中継オブジ
ェクト250、スタブオブジェクト130、スケルトン
オブジェクト240、スタブオブジェクト260、スケ
ルトンオブジェクト320が一対として生成される。
【0064】次に、リモートメソッド呼び出し中継オブ
ジェクト250の動作について詳細に説明する。
【0065】図8は、本発明の一実施の形態におけるリ
モートメソッド呼び出し中継オブジェクトの動作を示す
フローチャートである。
【0066】リモートメソッド呼び出し中継オブジェク
ト250はクライアントから利用するサーバオブジェク
トの各々に対応してクラスファイルとして予め用意さ
れ、クライアントオブジェクト110から対応するサー
バオブジェクトのリモート参照の取得要求がある都度リ
モート参照取得中継オブジェクト230から起動され
る。起動されるとリモート参照取得中継オブジェクト2
30から対応するサーバオブジェクト330のリモート
アクセスのための情報(対応するスタブオブジェクト2
60へのアクセス情報)を受け取り、内部変数に保持し
て(ステップ601)、クライアントオブジェクト11
0からのリモートメソッド呼び出しを待つ。クライアン
ト計算機100からリモートメソッドが呼び出されたと
き(対応するスタブオブジェクト130、スケルトンオ
ブジェクト240を中継して、リモートメソッド呼び出
し中継オブジェクト250のメソッドが呼出されたと
き)(ステップ602)、保持していたサーバオブジェ
クト330のリモート参照を使って対応するメソッドを
呼び出し(対応するスタブオブジェクト260、スケル
トンオブジェクト320を中継してサーバオブジェクト
330のメソッドを呼び出し、)(ステップ603)、
呼び出しとは逆のルートでサーバオブジェクト330の
メソッド呼び出しの結果を戻り値としてクライアントオ
ブジェクトに返す。
【0067】次に、リモートメソッド呼び出し中継クラ
ス自動生成ツールによる、リモートメソッド呼び出し中
継クラス生成処理について説明する。
【0068】リモートメソッド呼び出し中継オブジェク
トは、予め準備されたリモートメソッド呼び出し中継ク
ラスから生成されるものである。図9は、そのリモート
メソッド呼び出し中継クラスの生成処理を示すフローチ
ャートである。なお、この処理は、ツールを用いて自動
生成することができる。
【0069】リモートメソッド呼び出し中継クラスは、
中継対象のサーバオブジェクトのクラス定義から自動生
成する。まず、目的とするサーバオブジェクトのクラス
の定義内容を全て読み込む(ステップ701)。
【0070】次に、リモートメソッド呼び出し中継クラ
スの出力ファイル(以下、「中継クラスファイル」とい
う)を開き(ステップ702)、クラス名宣言など定型
的な定義を中継クラスファイルに出力する。この際、使
用するORBのサーバオブジェクトの識別に必要なインタ
フェースを実装する(ステップ703)。
【0071】リモート参照取得中継オブジェクト230
は、サーバオブジェクト330のリモート参照を取得
し、リモートメソッド呼び出し中継オブジェクト250
を起動するときに、そのサーバオブジェクトへのアクセ
ス情報を渡す。そのため、リモート参照取得中継オブジ
ェクトから、サーバオブジェクトへのアクセス情報を受
け取るメソッド定義と、そのリモート参照を保持するた
めの変数の定義も中継クラスファイルに出力される(ス
テップ704)。
【0072】次に、サーバクラスに定義されているすべ
てのメソッドを抽出する(ステップ705)。リモート
メソッド呼び出し中継クラスファイルには、サーバメソ
ッドと同じメソッド宣言を出力する。この際、メソッド
の引数、戻り値において、クライアント環境で使用でき
ない型を使用している場合は、その型と相互変換可能で
且つ、クライアント環境で使用可能な型に置き換えて出
力する(ステップ706)。そのメソッドの処理内容とし
て、ステップ704のメソッドを用いて受け取ったサー
バオブジェクト330のリモート参照(サーバオブジェ
クト330へのアクセス情報)を使って、サーバオブジ
ェクト330の同じメソッドを呼び出す処理を出力す
る。なお、(ステップ706)工程で型を置き換えたと
き、引数の場合はサーバオブジェクト呼び出しの前に、
戻り値の場合はサーバオブジェクト呼出し後に、型変換
処理を出力する。変換すべき型がユーザ定義クラスの場
合は、ユーザ定義の変換処理を組み込み、変換する(ス
テップ707)。サーバクラスに定義されているメソッ
ドすべてについて上記の処理を繰り返す(ステップ70
8)。
【0073】次に、リモート参照取得中継関連クラスの
作成処理について説明する。
【0074】図10は、本発明の一実施の形態における
リモート参照取得中継クラスに関連するクラスの作成工
程を示す図である。
【0075】リモート参照取得中継クラスは、ORB(製
品A)のオブジェクトとして動作する形式として図7の
フローチャートに示す処理を実装する。
【0076】このリモート参照取得中継クラス801
は、実行時に備え、中継計算機200に配置する。ま
た、このリモート参照取得中継クラスをORB(製品A)
のスタブ/スケルトン自動生成ツール802に入力し、
スタブクラス803とスケルトンクラス804を生成す
る。実行時に備え、リモート参照取得中継クラスのスタ
ブクラスは、クライアント計算機100に配置し、スケ
ルトンクラスは、中継計算機200に配置する。
【0077】次に、リモートメソッド呼び出し中継クラ
スに関連するクラスの作成処理について図11を用いて
説明する。
【0078】サーバクラス901は、ORB(製品B)の
サーバオブジェクト330として動作する形式として実
装されている。当該サーバクラス901は、サーバ計算
機300に配置される。また、このサーバクラスをORB
(製品B)のスタブ/スケルトン自動生成ツール902
に入力し、スタブクラス903とスケルトンクラス90
4を生成する。実行時に備え、サーバクラス901のス
タブクラス903は、中継計算機200に配置し、スケ
ルトンクラス904は、サーバ計算機300に配置す
る。さらに、このサーバクラス901を本発明のリモー
トメソッド呼び出し中継クラス自動生成ツール905に
入力し、図9で説明した手順によってリモートメソッド
呼び出し中継クラス906を生成する。このクラス90
6は、実行時に備え、中継計算機200に配置する。最
後に、生成したリモートメソッド呼び出し中継クラス
を、ORB(製品A)のスタブ/スケルトン自動生成ツー
ル907に入力し、スタブクラス908とスケルトンク
ラス909を生成する。実行時に備え、リモートメソッ
ド呼び出し中継クラスのスタブクラスは、クライアント
計算機100に配置し、スケルトンクラスは、中継計算
機200に配置する。
【0079】(実施例)次に、本発明における分散オブ
ジェクトミドルウェア連携方法を用いた実施例として、
(1)リモートアクセスを許可するオブジェクトのサー
バへの追加、(2)サーバ、中継機での環境設定、
(3)スタブ/スケルトンオブジェクト等の起動処理、
の各処理について具体的に説明する。 (1)リモートアクセスを許可するオブジェクトのサー
バへの追加 図12を用いて、サーバコンピュータにオブジェクトC
を追加する場合について説明する。
【0080】(ステップ1)追加するサーバオブジェク
トのクラスファイル(図中のクラスファイル名"C.jav
a")をサーバに配置してオブジェクトを起動(インスタ
ンス化)すると共に、ネーミングサービスにオブジェク
トCを登録する。
【0081】(ステップ2)追加するサーバオブジェク
トのクラスファイル"C.java"を基に自動生成ツールを使
いリモートメソッド呼び出し中継オブジェクトのクラス
ファイル(クラスファイル名“CBridge.java”)を生成
する。図12では、リモートメソッド呼び出し中継オブ
ジェクトのクラスファイル名をサーバオブジェクトのク
ラスファイル名の後にBridgeを付与する規則を用いて表
現している。
【0082】(ステップ3)生成したリモートメソッド
呼び出し中継クラスファイルを中継計算機上に配置す
る。
【0083】このように、サーバ側へのリモートアクセ
ス可能なオブジェクトの追加(サーバの追加も同様)に
際してリモート参照取得中継オブジェクトは変更されな
い。 (2)クライアントからの利用に先立つ、サーバ、中継
機での環境設定 次に、クライアントからリモートオブジェクトを利用で
きるようにするためのサーバ、中継機での環境設定につ
いて図13〜図15を用いて説明する。
【0084】この環境設定は、クラスファイルの格納
(ステップ1)、サーバオブジェクトの起動、ネーミン
グサービスへの登録(ステップ2)、リモート参照取得
中継オブジェクトの起動、ネーミングサービスへの登録
(ステップ3)の順で行なうことができる。以下、この
順で説明する。
【0085】(ステップ1)クラスファイルの格納 まず、図13に示すように、各クラスファイルを該当す
る計算機に格納する。
【0086】サーバ計算機に格納するファイル: ・各サーバオブジェクトのクラスファイル(サーバob
jA,B,C) ・各サーバオブジェクト対応スケルトンのクラスファイ
ル(サーバスケルトンA,B,C) 中継計算機に格納するファイル ・各サーバオブジェクト対応スタブのクラスファイル
(サーバスタブA,B,C) ・各リモートメソッド呼び出し中継オブジェクトのクラ
スファイル(呼出しobjA,B,C) ・各リモートメソッド呼び出し中継オブジェクト対応ス
ケルトンのクラスファイル(呼出しobjA,B,
C): ・リモート参照取得中継オブジェクトのクラスファイル
(参照取得obj) ・リモート参照取得中継オブジェクト対応スケルトンの
オブジェクト(参照取得スケルトン) クライアントに格納するファイル: ・各リモートメソッド呼び出し中継オブジェクト対応ス
タブのクラスファイル(呼出しスタブA,B,C) ・リモート参照取得中継オブジェクト対応スタブのオブ
ジェクト(参照取得スタブ) (ステップ2)サーバオブジェクトの起動、ネーミング
サービスへの登録 次に、図14に示すようにサーバオブジェクトを起動
(インスタンス化)すると共に、サーバのネーミングサ
ービスに登録する。 (ステップ3)リモート参照取得中継オブジェクトの起
動、ネーミングサービスへの登録 続いて、図15に示すように、リモート参照取得中継オ
ブジェクトを起動(インスタンス化)すると共に、中継
計算機のネーミングサービスにリモート参照取得中継オ
ブジェクトを登録する。クライアント上にクライアント
オブジェクトを起動(インスタンス化)する。 (3)クライアントからサーバオブジェクトをアクセス
する場合の、スタブ/スケルトンオブジェクト等が起動
される状況 クライアントからサーバオブジェクトをアクセスする場
合におけるスタブ/スケルトンオブジェクト等の起動
は、リモート参照取得中継オブジェクトのリモート参照
の取得(ステップ1)、サーバオブジェクトのリモート
参照の取得(ステップ2)、リモートメソッド呼び出し
中継オブジェクトの起動(ステップ3)、リモートメソ
ッド呼び出し中継オブジェクトのリモート参照の返却
(ステップ4)、サーバオブジェクトのメソッド呼び出
し(ステップ5)の順で行われる。以下、この順に説明
を行なう。
【0087】(ステップ1)リモート参照取得中継オブ
ジェクトのリモート参照の取得 図16に示すように、クライアントオブジェクトは、中
継計算機のネーミングサービスからリモート参照取得中
継オブジェクトのリモート参照を取得する。リモート参
照取得時に、中継計算機にリモート参照取得中継オブジ
ェクトのスケルトンがORBによって起動(インスタンス
化)され、クライアントにリモート参照取得中継オブジ
ェクトのスタブがクライアント側のORBによって起動さ
れる。
【0088】リモート参照取得の結果として、起動(イ
ンスタンス化)されたスタブオブジェクトへのアクセス
情報がクライアントオブジェクトに返却される。
【0089】(ステップ2)サーバオブジェクトのリモ
ート参照の取得 次に、図17に示すように、中継計算機のリモート参照
取得中継オブジェクトは、クライアントオブジェクトか
らの要求をスタブ、スケルトンオブジェクトを介して受
け、サーバオブジェクト(図はサーバオブジェクトBを
指定した場合の例)のネーミングサービスからサーバオ
ブジェクトのリモート参照を取得する。リモート参照取
得中継オブジェクトによるサーバオブジェクトのリモー
ト参照取得時に、サーバ計算機にサーバオブジェクトの
スケルトンがORBによって起動され、中継計算機にサー
バオブジェクトのスタブがORBによって起動される。リ
モート参照取得中継オブジェクトでは、リモート参照取
得結果として、サーバオブジェクトに対するスタブオブ
ジェクトへのアクセス情報を保持する。
【0090】(ステップ3)リモートメソッド呼び出し
中継オブジェクトの起動 次に、図18に示すように、中継計算機のリモート参照
取得中継オブジェクトは、サーバ計算機から取得したサ
ーバオブジェクトのリモート参照から対応するリモート
メソッド呼び出し中継オブジェクトを判定し起動(イン
スタンス化)する。
【0091】(ステップ4)リモートメソッド呼び出し
中継オブジェクトのリモート参照の返却 続いて、図19に示すように、リモート参照取得中継オ
ブジェクトは、起動したリモートメソッド呼び出し中継
オブジェクトに対応するリモート参照(すなわち、以下
で起動するスタブオブジェクトへのアクセス情報)をク
ライアントオブジェクトに返却する。リモート参照取得
中継オブジェクトはリモートメソッド呼び出し中継オブ
ジェクトのリモート参照取得時に、中継計算機にリモー
トメソッド呼び出し中継オブジェクトのスタブを起動
し、クライアントにリモートメソッド呼び出し中継オブ
ジェクトのスケルトンを起動する。
【0092】(ステップ5)サーバオブジェクトのメソ
ッド呼び出し そして、図20に示すように、クライアント計算機は、
ステップ2〜ステップ4で起動したリモートメソッド呼
び出し中継オブジェクト、スタブ、スケルトンを使って
サーバオブジェクトBのメソッドを呼び出す。
【0093】(Java(登録商標)プログラムソースコー
ド例)次に、より具体的な実施例として、クライアント
が用いるORBを市販されているある製品(仮にCLIENT-OR
Bと呼ぶ)とし、サーバが用いるORBをJava(登録商標)R
MIとした場合を例に、これらの異なるORB製品を連携さ
せるためのJava(登録商標)プログラムソースコードの
例を示す。
【0094】図21(a)にリモート参照取得中継オブ
ジェクトのインタフェース定義例:INamingBridge.java
を示す。プログラムの内容は次の通りである。
【0095】1〜2行目: 使用するクラスをインポート
する。
【0096】4行目: CLIENT-ORBのサーバインタフェー
スとして識別するために、CLIENT-ORBが提供するIorbRe
moteインタフェースを継承する。
【0097】5行目: リモート参照取得を中継するため
のlookup()メソッドを定義する。CLIENT-ORBを用いてリ
モートメソッド呼び出しするため、CLIENT-ORBのIorbRe
moteException例外が発生する可能性があることを定義
する。
【0098】図21(b)にリモート参照取得中継オブ
ジェクトのクラス定義例: NamingBridge.javaを示す。
プログラムの内容は次の通りである。
【0099】1〜3行目: 使用するクラスをインポート
する。
【0100】5行目: CLIENT-ORBのサーバクラスとして
使用するために、上記のインタフェースを実装する。
【0101】7〜11行目: コンストラクタの引数にサ
ーバ計算機のホスト名を設定可能にする。
【0102】13行目: リモート参照取得を中継するた
めのlookup()メソッドを定義する。CLIENT-ORBを用いて
リモートメソッド呼び出しをするため、CLIENT-ORBのIo
rbRemoteException例外が発生する可能性があることを
定義する 15行目:引数で指定された名前を用いて、Java(登録商
標) RMIのRMIレジストリ(ネーミングサービス)を検索
し、該当するサーバオブジェクトのリモート参照を得
る。
【0103】16行目: 得られたリモート参照のクラス
名を得る。
【0104】17-18行目: リモート参照のクラス名
からリモートメソッド呼び出し中継オブジェクトのクラ
ス名を組み立てる。
【0105】19〜20行目: リモートメソッド呼び出
し中継オブジェクトをインスタンス化する。
【0106】21行目: リモートメソッド呼び出し中継
オブジェクトにサーバオブジェクトのリモート参照を設
定する。
【0107】22行目: リモートメソッド呼び出し中継
オブジェクトのリモート参照をクライアントに返す。
【0108】23〜28行目: Java(登録商標) RMI関
連の例外をキャッチした場合、CLIENT-ORBの例外に置き
換えてクライアントに通知する。
【0109】31〜38行目: 上記で定義したリモート
参照取得中継オブジェクトをインスタンス化し、CLIENT
-ORBに"naming"という名前で登録するためのmain()メソ
ッドを定義する。
【0110】図22(a)にサーバオブジェクトのイン
タフェース定義例: IHello.javaを示す。内容は次の通
りである。
【0111】1〜2行目: 使用するクラスをインポート
する。
【0112】4行目: Java(登録商標) RMIのサーバイ
ンタフェースとして識別するために、Java(登録商標)
RMIが提供するRemoteインタフェースを継承する。
【0113】5〜7行目: クライアントから呼び出すメ
ソッドを定義する。Java(登録商標) RMIを用いてリモ
ートメソッド呼び出しするため、Java(登録商標) RMI
のRemoteException例外が発生する可能性があることを
定義する。
【0114】図22(b)にサーバオブジェクトのクラ
ス定義例: Hello.javaを示す。内容は次の通りである。
【0115】1〜3行目: 使用するクラスをインポート
する。
【0116】5行目: Java(登録商標) RMIのサーバオ
ブジェクトとして機能するために、UnicastRemoteObjec
tクラスを継承する。
【0117】7〜9行目: Java(登録商標) RMIの規約
に従い、コンストラクタではスーパクラスのコンストラ
クタを呼び出す。
【0118】11〜18行目: クライアントから呼び出
すメソッドを定義する。Java(登録商標) RMIを用いて
リモートメソッド呼び出しするため、Java(登録商標)
RMIのRemoteException例外が発生する可能性があること
を定義する。
【0119】19〜26行目: 上記で定義したサーバオ
ブジェクトのクラス定義をインスタンス化し、Java(登
録商標) RMIのRMIレジストリに登録するmain()メソッ
ドを定義する。
【0120】次に、リモートメソッド呼び出し中継オブ
ジェクトのインタフェース出力例:IHelloBridge.javaを
図23(a)に示す。このインタフェース定義は、上記
のようにして定義したサーバクラスから自動生成する。
内容は次の通りである。
【0121】1〜2行目: 使用するクラスをインポート
するよう出力する。
【0122】4行目: インタフェース名は、入力したサ
ーバオブジェクトのクラス定義から文字列を組み立て出
力する。この例における組み立て方法は、"I"+サーバ
クラス名+"Bridge"とする。CLIENT-ORBのサーバインタ
フェースとして識別するために、CLIENT-ORBが提供する
IorbRemoteインタフェースを継承する。
【0123】5〜7行目:入力したサーバクラスに定義
されているメソッドと同じメソッドを出力する。この
際、メソッドの引数、戻り値において、calculate()メ
ソッドのfloat型のように、クライアント側(J2ME CLDC
環境)では使用できない型を使用している場合は、使用
可能で且つfloat型と相互変換可能な型に置き換えて出
力する。この例ではString型で出力している。また、こ
れらのメソッドは、CLIENT-ORBを用いてリモートメソッ
ド呼び出しするため、CLIENT-ORBのIorbRemoteExceptio
n例外が発生する可能性があることを出力する。
【0124】図23(b)にリモートメソッド呼び出し
中継オブジェクトのクラス出力例:HelloBridge.javaを
示す。このクラス定義も、サーバクラスから自動生成す
る。内容は以下の通りである。
【0125】1〜4行目: 使用するクラスをインポート
するよう出力する。
【0126】6行目: クラス名は、入力したサーバオブ
ジェクトのクラス定義から文字列を組み立て出力する。
この例における組み立て方法は、サーバクラス名+"Bri
dge"としている。上記にようにして定義したリモートメ
ソッド呼び出し中継オブジェクトのインタフェース定義
を実装するよう出力する。
【0127】8〜12行目: サーバオブジェクトのリモ
ート参照を保持するための変数と、それを設定するため
のメソッドを出力する。
【0128】14行目: サーバクラスに定義されている
メソッドsayHello()と同じメソッドを出力する。このメ
ソッドは、CLIENT-ORBを用いてリモートメソッド呼び出
しするため、CLIENT-ORBのIorbRemoteException例外が
発生する可能性があることを出力する。
【0129】16〜17行目: 保持しているサーバオブ
ジェクトへのリモート参照を用いて、対応するメソッド
sayHello()を呼び出すよう出力する。また、呼び出し結
果をクライアントに返すよう出力する。
【0130】18〜23行目: サーバオブジェクトのリ
モートメソッドを呼び出す際、Java(登録商標) RMI関
連の例外が通知される可能性があるためcatchし、CLIEN
T-ORBの例外IorbRemoteExceptionに置き換えてクライア
ントに通知するよう出力する。
【0131】26行目: サーバクラスに定義されている
メソッドcalculate()と同じメソッドを出力する。この
際、メソッドの引数、戻り値において、float型などク
ライアント側(J2ME CLDC環境)では使用できない型を使
用している場合は、使用可能で且つfloat型と相互変換
可能な型に置き換えて出力する。この例ではString型で
出力している。また、これらのメソッドは、CLIENT-ORB
を用いてリモートメソッド呼び出しするため、CLIENT-O
RBのIorbRemoteException例外が発生する可能性がある
ことを出力する。
【0132】28行目: 上記の引数定義で置き換えたSt
ring型から、本来のfloat型に変換する処理を出力す
る。
【0133】29行目: 保持しているサーバオブジェク
トへのリモート参照を用いて、対応するメソッドcalcul
ate()を呼び出すよう出力する。
【0134】30行目: サーバオブジェクトのメソッド
呼び出しの結果を、float型から上記の戻り値定義で置
き換えたString型に変換する処理を出力する。
【0135】31行目: 変換結果をクライアントに返す
よう出力する。
【0136】32〜37行目: サーバオブジェクトのリ
モートメソッドを呼び出す際、Java(登録商標) RMI関
連の例外が通知される可能性があるためcatchし、CLIEN
T-ORBの例外IorbRemoteExceptionに置き換えてクライア
ントに通知するよう出力する。
【0137】図24にクライアントのクラス定義例: Cl
ient.javaを示す。内容は次の通りである。この例は、J
2ME CLDC環境で動作するクライアントとしての携帯電話
のアプリケーションから、本方式によりサーバオブジェ
クトの機能を呼び出す例である。
【0138】1〜7行目: インポート、クラス宣言など
定型的な部分を定義する。
【0139】8行目: 中継計算機に接続する。
【0140】9行目: "naming"という名前をキーに、CL
IENT-ORBに登録されているリモート参照取得中継オブジ
ェクトへのリモート参照を得る。
【0141】10行目: "hello"という名前をキーに、
リモート参照取得中継オブジェクトより、サーバオブジ
ェクトに対応するリモートメソッド呼び出し中継オブジ
ェクトへの参照を取得する。
【0142】11〜12行目: サーバオブジェクトのsa
yHello()メソッドを呼び出し結果を出力する。
【0143】13〜14行目: サーバオブジェクトのca
lculate()メソッドを呼び出し結果を出力する。
【0144】(本発明の特徴について)以下、特開平11
-282661号公報と対比した場合における本発明の特徴に
ついて説明する。
【0145】利用できるサーバオブジェクトを事前にサ
ーバのネーミングサービスに登録しておく点と、クライ
アントとサーバの中間に中継オブジェクトを配置する点
は、特開平11-282661号の技術と本発明とで共通してい
る。本発明では中継計算機のネーミングサービスにリモ
ート参照取得オブジェクトが登録され、特開平11-28266
1号の技術ではサーバオブジェクトのリモート参照取得
とサーバオブジェクトのメソッド呼び出しを中継する機
能を実現している中継オブジェクトが登録されている。
【0146】サーバオブジェクトにアクセスする場合
に、最初にクライアントオブジェクトは、中継コンピュ
ータのネーミングサービスからアクセスすべきオブジェ
クトに関する情報を取得する。このとき、本発明では、
リモート参照取得プログラムをアクセスするための情報
(リモート参照取得オブジェクへのアクセス情報;対応
するスタブオブジェクトID)を取得する。これに対し
て、特開平11-282661号の技術では、中継オブジェクト
へのアクセス情報を取得する。
【0147】そのため、本発明では、リモート参照中継
オブジェクトおよびこのオブジェクトのスタブ/スケル
トンオブジェクトを常時活性化しておけばよく、リモー
トメソッド呼び出し中継オブジェクト及びこれに関連す
るクライアント側、サーバ側のスタブ/スケルトンオブ
ジェクトは常時活性化されている必要がない。すなわ
ち、本発明では、クライアントからサーバオブジェクト
にアクセスを開始する都度、リモート参照取得中継オブ
ジェクトが、そのサーバオブジェクトに対応したリモー
トメソッド呼び出し中継オブジェクトを起動する(図6
の(ステップ409)、(ステップ410)の処理)。
【0148】本発明は上記のような構成としているた
め、サーバオブジェクトのリモート参照取得用のオブジ
ェクトを複数サーバオブジェクトに対して共用すること
ができ、また、リモートアクセス可能なサーバプログラ
ム(オブジェクト)を安易に追加、削除することができ
る。
【0149】一方、特開平11-282661号の技術では、リ
モートメソッド呼び出し機能を含めたオブジェクト(中
継オブジェクト)を常時活性化しておく必要がある。ま
た、中継オブジェクトは個々のサーバオブジェクト対応
に用意しておく必要がある。更に、特開平11-282661号
の技術では、リモートアクセス可能なサーバオブジェク
ト数に比例して中継サーバにメモリが必要となる。
【0150】なお、本発明は、上記の実施例に限定され
ることなく、特許請求の範囲内において種々変更・応用
が可能である。例えば、図6で、ORB(製品B)のネーミ
ングサービスを「UDDIサービス」に、ORB(製品B)ツー
ルにより生成したサーバ側のスタブオブジェクト(26
0)をSOAP仕様における「JAVA(登録商標)プロキシ」
に対応させることにより、Webサービスの場合にも、上
記実施例と同様にして本発明を適用できる。
【0151】
【発明の効果】以上、詳細に説明した如く、本発明によ
れば、クライアント/サーバ間で通信プロトコル、メソ
ッドの引数、戻り値の型が異なるORB製品を接続する場
合において、通信プロトコルの煩雑な通信プロトコル変
換プログラムを必要とすることなくクライアント/サー
バ間で連携することができ、また、リモートメソッド呼
び出し中継クラスに型変換機能を備えることでメソッド
の引数、戻り値の型を変換できるようになる。さらに、
特開平11-282661号公報の技術における中継計算機上の
メモリを無駄に消費するという問題に対して、本発明で
は、リモートメソッド呼び出し中継オブジェクトをクラ
イアントオブジェクトのメソッド呼び出し前に動的に起
動し、実行後消滅させることによって中継計算機上のメ
モリを無駄に消費しない新たな効果を奏するものであ
る。
【図面の簡単な説明】
【図1】一般的な分散オブジェクトミドルウェアの処理
方式である。
【図2】サーバ計算機上のネーミングサービスの登録情
報の例を示す図である。
【図3】リモート参照取得要求時の送信情報を示す図で
ある。
【図4】一般的な分散オブジェクトミドルウェアにおけ
るスタブクラスとスケルトンクラスの生成工程である。
【図5】異なる分散オブジェクトミドルウェア間連携の
ために一般的に用いられるゲートウェイプログラムによ
るプロトコル変換方式である。
【図6】本発明の一実施の形態における異なる分散オブ
ジェクトミドルウェアの連携システムを説明するための
図である。
【図7】本発明の一実施の形態におけるリモート参照取
得中継オブジェクトの動作を示すフローチャートであ
る。
【図8】本発明の一実施の形態におけるリモートメソッ
ド呼び出し中継オブジェクトの動作を示すフローチャー
トである。
【図9】本発明の一実施の形態におけるリモートメソッ
ド呼び出し中継クラス生成ツールの動作を示すフローチ
ャートである。
【図10】本発明の一実施の形態におけるリモート参照
取得関連クラスの作成工程を示す図である。
【図11】本発明の一実施の形態におけるリモートメソ
ッド呼び出し関連クラスの作成工程を示す図である。
【図12】リモートアクセスを許可するオブジェクトを
サーバに追加する処理を説明するための図である。
【図13】環境設定におけるクラスファイルの格納を示
す図である。
【図14】サーバオブジェクトのネーミングサービスへ
の登録を示す図である。
【図15】リモート参照取得中継オブジェクトのネーミ
ングサービスへの登録を示す図である。
【図16】リモート参照取得中継オブジェクトのリモー
ト参照の取得を示す図である。
【図17】サーバオブジェクトのリモート参照の取得を
示す図である。
【図18】リモートメソッド呼び出し中継オブジェクト
の起動を示す図である。
【図19】リモートメソッド呼び出し中継オブジェクト
のリモート参照の返却を示す図である。
【図20】サーバオブジェクトのメソッド呼び出しを示
す図である。
【図21】リモート参照取得中継オブジェクトのインタ
フェース定義例及びクラス定義例を示す図である。
【図22】サーバオブジェクトのインタフェース定義例
及びクラス定義例を示す図である。
【図23】リモートメソッド呼び出し中継オブジェクト
のインタフェース出力例及びクラス出力例を示す図であ
る。
【図24】クライアントのクラス定義例を示す図であ
る。
【符号の説明】
100 クライアント計算機 110 クライアントオブジェクト 120 ORB(製品A)ツールにより生成したリモート
参照取得中継オブジェクトのスタブオブジェクト 130 ORB(製品A)ツールにより生成したリモート
メソッド呼び出し中継オブジェクトのスブオブジェクト 200 中継計算機 210 ORB(製品A)のネーミングサービス 220 ORB(製品A)ツールにより生成したリモート
参照取得中継オブジェクトのスケルトンオブジェクト 230 リモート参照取得中継オブジェクト 240 ORB(製品A)ツールにより生成したリモート
メソッド呼び出し中継オブジェクトのスケルトンオブジ
ェクト 250 リモートメソッド呼び出し中継オブジェクト 260 ORB(製品B)ツールにより生成した、サーバ
オブジェクトのスタブオブジェクト 300 サーバ計算機 310 ORB(製品B)のネーミングサービス 320 ORB(製品B)ツールにより生成したサーバオ
ブジェクトのスケルトンオブジェクト 330 サーバオブジェクト 901 サーバクラス 902 ORB(製品B)のスタブ/スケルトン自動生成
ツール 903 ORB(製品B)ツールによるサーバクラスのス
タブクラス 904 ORB(製品B)によるサーバクラスのスケルト
ンクラス 905 リモートメソッド呼び出し中継クララス自動生
成ツール 906 リモートメソッド呼び出し中継クラス 907 ORB(製品A)のスタブ/スケルトン自動生成
ツール 908 ORB(製品A)ツールによるリモートメソッド
呼び出し中継クラスのスタブクラス 909 ORB(製品A)ツールによるリモートメソッド
呼び出し中継クラスのスケルトンクラス

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 クライアント側分散オブジェクトミドル
    ウエアとサーバ側分散オブジェクトミドルウエアの通信
    プロトコルが異なる場合に、クライアント側オブジェク
    トからサーバ側オブジェクトへのメソッド呼び出しを実
    現する方法であって、 クライアント側分散オブジェクトミドルウェアとサーバ
    側分散オブジェクトミドルウェアとの間に、リモート参
    照の取得を中継するリモート参照取得中継オブジェクト
    と、リモートメソッド呼び出しを中継するリモートメソ
    ッド呼び出し中継オブジェクトのクラスとを備え、前記
    方法は、 前記リモート参照取得中継オブジェクトがクライアント
    からサーバ側オブジェクトに関するリモート参照の取得
    要求を受け付けたとき、その要求をサーバに送信するス
    テップと、 前記リモート参照取得中継オブジェクトがサーバから前
    記サーバ側オブジェクトへのアクセス情報を受信し、そ
    のサーバ側オブジェクトに対応するリモートメソッド呼
    び出し中継オブジェクトを起動するステップと、 前記リモート参照の取得要求への応答として当該リモー
    トメソッド呼び出し中継オブジェクトへのアクセス情報
    をクライアントに返却するステップとを有することを特
    徴とする方法。
  2. 【請求項2】 前記リモート参照取得中継オブジェクト
    がサーバから前記サーバ側オブジェクトへのアクセス情
    報を受信する際に、前記サーバにおいてそのサーバ側オ
    ブジェクトに対応するスケルトンオブジェクトが起動さ
    れ、前記リモート参照取得中継オブジェクトを有する中
    継計算機においてそのサーバ側オブジェクトに対応する
    スタブオブジェクトが起動され、 サーバ側オブジェクトに対応する前記スケルトンオブジ
    ェクト及び前記スタブオブジェクトはサーバ側分散オブ
    ジェクトミドルウェアの通信プロトコルに基づき動作
    し、 前記リモート参照取得中継オブジェクトが前記リモート
    メソッド呼び出し中継オブジェクトへのアクセス情報を
    クライアントに返却する際に、前記中継計算機において
    そのリモートメソッド呼び出し中継オブジェクトに対応
    するスケルトンオブジェクトが起動され、前記クライア
    ントにおいてそのリモートメソッド呼び出し中継オブジ
    ェクトに対応するスタブオブジェクトが起動され、 リモートメソッド呼び出し中継オブジェクトに対応する
    前記スケルトンオブジェクト及び前記スタブオブジェク
    トは、クライアント側分散オブジェクトミドルウェアの
    通信プロトコルに基づき動作する請求項1に記載の方
    法。
  3. 【請求項3】 前記リモートメソッド呼び出し中継オブ
    ジェクトが、クライアントから前記サーバ側オブジェク
    トにおけるメソッドに対応するリモートメソッド呼び出
    しを受信し、前記サーバ側オブジェクトに対してそのメ
    ソッドの呼び出しを行うステップを更に有する請求項1
    に記載の方法。
  4. 【請求項4】 前記リモートメソッド呼び出し中継オブ
    ジェクトは、メソッドの引数とメソッドからの戻り値の
    型を、クライアントが使用可能な型に変換する機能を有
    する請求項1又は2に記載の方法。
  5. 【請求項5】 クライアント側分散オブジェクトミドル
    ウエアとサーバ側分散オブジェクトミドルウエアが異な
    る場合に、クライアント側オブジェクトからサーバ側オ
    ブジェクトへのメソッド呼び出しを実現するために、ク
    ライアントとサーバとの間に設けられた中継計算機にリ
    モート参照取得中継処理を実行させるリモート参照取得
    中継オブジェクトのクラスを記録したコンピュータ読み
    取り可能な記録媒体であって、前記リモート参照取得中
    継オブジェクトは、 クライアントからサーバ側オブジェクトに関するリモー
    ト参照の取得要求を受け付けたとき、その要求をサーバ
    に送信する手順と、 サーバから前記サーバ側オブジェクトのリモート参照を
    受信し、そのサーバ側オブジェクトに対応して前記中継
    計算機に予め格納されたリモートメソッド呼び出し中継
    クラスからリモートメソッド呼び出し中継オブジェクト
    を起動する手順と、 前記リモート参照の取得要求への応答として当該リモー
    トメソッド呼び出し中継オブジェクトへのアクセス情報
    をクライアントに返却する手順とを前記中継計算機に実
    行させることを特徴とするリモート参照取得中継オブジ
    ェクトのクラスを記録したコンピュータ読み取り可能な
    記録媒体。
  6. 【請求項6】 クライアント側分散オブジェクトミドル
    ウエアとサーバ側分散オブジェクトミドルウエアが異な
    る場合に、クライアント側オブジェクトからサーバ側オ
    ブジェクトへのメソッド呼び出しを実現するために、ク
    ライアントとサーバとの間に設けられた中継計算機にリ
    モート参照取得中継処理を実行させるリモート参照取得
    中継オブジェクトのクラスを定義したプログラムであっ
    て、該リモート参照取得中継オブジェクトは、 クライアントからサーバ側オブジェクトに関するリモー
    ト参照の取得要求を受け付けたとき、その要求をサーバ
    に送信する手順と、 サーバから前記サーバ側オブジェクトのリモート参照を
    受信し、そのサーバ側オブジェクトに対応して前記中継
    計算機に予め格納されたリモートメソッド呼び出し中継
    クラスからリモートメソッド呼び出し中継オブジェクト
    を起動する手順と、 前記リモート参照の取得要求への応答として当該リモー
    トメソッド呼び出し中継オブジェクトへのアクセス情報
    をクライアントに返却する手順とを前記中継計算機に実
    行させることを特徴とするリモート参照取得中継オブジ
    ェクトのクラスを定義したプログラム。
JP2002174417A 2001-06-15 2002-06-14 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム Pending JP2003076563A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002174417A JP2003076563A (ja) 2001-06-15 2002-06-14 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム
AU2002349514A AU2002349514A1 (en) 2002-06-14 2002-11-26 Distributed object middleware linkage method, recording medium containing program, and program
PCT/JP2002/012338 WO2003107205A1 (ja) 2002-06-14 2002-11-26 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001-182323 2001-06-15
JP2001182323 2001-06-15
JP2002174417A JP2003076563A (ja) 2001-06-15 2002-06-14 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム

Publications (2)

Publication Number Publication Date
JP2003076563A true JP2003076563A (ja) 2003-03-14
JP2003076563A5 JP2003076563A5 (ja) 2005-10-20

Family

ID=26617040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002174417A Pending JP2003076563A (ja) 2001-06-15 2002-06-14 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム

Country Status (1)

Country Link
JP (1) JP2003076563A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011514585A (ja) * 2008-02-06 2011-05-06 エムフォーメイション テクノロジーズ インコーポレイテッド リモートデバイス管理を容易にするため、スタブクライアントから管理クライアントを安全にロードするシステムおよび方法
JP2011170512A (ja) * 2010-02-17 2011-09-01 Nec Corp 転送プログラム生成装置、処理システム、転送プログラム生成方法およびプログラム
EP2426604A1 (en) 2010-09-06 2012-03-07 Sony Corporation Terminal device, information processing system, request target selection method and program
JP2014528116A (ja) * 2011-09-02 2014-10-23 クアルコム,インコーポレイテッド ポータブルコンピューティングデバイスにおける分散リソース管理
US9152523B2 (en) 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011514585A (ja) * 2008-02-06 2011-05-06 エムフォーメイション テクノロジーズ インコーポレイテッド リモートデバイス管理を容易にするため、スタブクライアントから管理クライアントを安全にロードするシステムおよび方法
JP2011170512A (ja) * 2010-02-17 2011-09-01 Nec Corp 転送プログラム生成装置、処理システム、転送プログラム生成方法およびプログラム
EP2426604A1 (en) 2010-09-06 2012-03-07 Sony Corporation Terminal device, information processing system, request target selection method and program
US9152523B2 (en) 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
JP2014528116A (ja) * 2011-09-02 2014-10-23 クアルコム,インコーポレイテッド ポータブルコンピューティングデバイスにおける分散リソース管理
KR101618476B1 (ko) * 2011-09-02 2016-05-04 퀄컴 인코포레이티드 휴대용 컴퓨팅 디바이스에서 분산 리소스 관리

Similar Documents

Publication Publication Date Title
US20030009539A1 (en) Distributed object middleware connection method
US7996856B2 (en) Processing application data
US6675193B1 (en) Method and system for remote control of a local system
US6038590A (en) Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US7000238B2 (en) Development system providing extensible remoting architecture
US5768510A (en) Object-oriented system, method and article of manufacture for a client-server application enabler system
US7571208B2 (en) Creating proxies from service description metadata at runtime
US6938087B1 (en) Distributed universal communication module for facilitating delivery of network services to one or more devices communicating over multiple transport facilities
US7904111B2 (en) Mobile exchange infrastructure
US7665096B2 (en) DDS-assisted CORBA discovery
US6484214B1 (en) Method for distributed object communications based on dynamically acquired and assembled software components
US20070201654A1 (en) System and method for extending a component-based application platform with custom services
US20110023009A1 (en) Computer Software Development Methods And Systems
US20030233477A1 (en) Extensible infrastructure for manipulating messages communicated over a distributed network
JP2002505466A (ja) 遠隔メソッド呼出し方法及び装置
JP2002366455A (ja) 1つ以上の任意のコンポーネントを互いに通信させるシステム及び方法ならびにコンピュータ読取可能媒体
JP2008544400A (ja) データセントリックワークフロー
JP2006252536A (ja) レガシーコンポーネントのための動的サービスの生成
CN101529382A (zh) 公共组件框架
US20020046304A1 (en) Dynamic class loading
KR101190597B1 (ko) 로봇 소프트웨어 컴포넌트를 위한 메소드 포트 장치 및 구성 방법
JP2003076563A (ja) 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム
JP2000250838A (ja) アプリケーションプログラムの実装方法ならびにシステム及び同方法がプログラムされ記録された記録媒体
Stal The broker architectural framework
US20060047781A1 (en) Method and system for providing remote portal service modules

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050613

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070320