JP2002269063A - メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム - Google Patents

メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム

Info

Publication number
JP2002269063A
JP2002269063A JP2001063985A JP2001063985A JP2002269063A JP 2002269063 A JP2002269063 A JP 2002269063A JP 2001063985 A JP2001063985 A JP 2001063985A JP 2001063985 A JP2001063985 A JP 2001063985A JP 2002269063 A JP2002269063 A JP 2002269063A
Authority
JP
Japan
Prior art keywords
message
channel
space
messaging
type
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
JP2001063985A
Other languages
English (en)
Inventor
Takanobu Ando
孝信 安東
Rei Yano
令 矢野
Naoto Akimoto
直人 秋元
Tomomi Kurata
友美 鞍田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001063985A priority Critical patent/JP2002269063A/ja
Publication of JP2002269063A publication Critical patent/JP2002269063A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】分散システム向けの参照モデルとして利用可能
であり、さらに仕様変更に対して高い柔軟性を持つメッ
セージングの仕組みを実現する。 【解決手段】分散システムにおけるメッセージ送信側1
とメッセージ受信側2との間のメッセージ交換のために
コンピュータを、メッセージ送信側1からのメッセージ
5を受け付け、メッセージ5の種類に応じた方式でメッ
セージ交換を制御する少なくとも一つのチャネル8の管
理を実現し、受け付けたメッセージ5をそのメッセージ
5の種類に応じたチャネル8に渡すメッセージ空間管理
手段6として機能させるためのメッセージングプログラ
ム。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分散システムにお
いてメッセージを交換するためのメッセージングプログ
ラム、及び分散システムにおけるメッセージング方法、
並びにメッセージングシステムに関する。
【0002】
【従来の技術】分散システムでは、複数の計算機に処理
を分散させる。オブジェクト指向技術を利用して分散シ
ステムを構築した場合、指示命令やデータなどの情報で
あるメッセージが分散されているオブジェクト間でやり
取りされる。
【0003】分散システムのメッセージングシステムと
して、CORBAのイベントサービスや、JavaRMI(Java Rem
ote Method Invocation)、ECJ(Event Centric for Ja
va)などいくつかの代表的な基盤技術が存在する。
【0004】
【発明が解決しようとする課題】CORBAとは、分散シス
テムでオブジェクト同士がメッセージを交換するための
ソフトウェアである。
【0005】CORBAのイベントサービスでは、サプライ
ヤとコンシューマとイベントチャネルからなるイベント
通信モデルが提供されている。またイベント通信のスタ
イルとしてpush型とpull型、そしてこれらの混合型の3
種類が定められている。
【0006】このように、CORBAでは基本的なメッセー
ジングの機能や枠組みは提供されている。しかしなが
ら、アプリケーションレベルでの送達確認機能や、イベ
ントチャネルに対するイベントの検索機能、例えばイベ
ントの消失などのようなエラーに関する処理などについ
ては明確に定義されていない。また、CORBAは様々なメ
ーカーから提供されているが、イベントサービスを利用
したアプリケーションの実装方法はそれぞれによって異
なる。
【0007】JavaRMIは、リモートにあるJavaオブジェ
クトのメソッドを他のホストのJavaVM(Java Virtual M
achine)から呼び出すための分散オブジェクト技術であ
る。これにより、異なるJavaVM上で実行中のオブジェク
ト同士の間でメッセージ交換が可能になる。Java RMIは
基本的に同期通信に分類されるため、非同期通信の実装
に直接用いることはできない。
【0008】Javaベースの非同期通信では、JMS(Java M
essaging Service)がある。JMSではPeer-to-peerとPubl
ish/Subscribeの2通りの通信モデルが提供されてい
る。
【0009】しかしながら、JMSでも、CORBAと同様にア
プリケーションレベルでの送達確認機能や通信路である
Connection/Sessionに対するメッセージの検索機能、メ
ッセージ消失などのエラーに対する処理などは提供され
ない。
【0010】ECJもJavaベースのイベント通信技術であ
る。ECJは、インターネット/イントラネット上に分散
したイベント駆動型のJavaアプリケーションを構築する
ためのフレームワークであり、RMIを補完する非同期メ
ッセージ交換機構を提供する。ECJではSocketを利用す
ることで非常に軽量で高速なイベント通信を可能として
いる。
【0011】しかしながら、ECJでも上記と同様にアプ
リケーションレベルでの送達確認機能、通信路における
メッセージの検索機能、メッセージ消失などのエラーに
対する処理などは提供されていないという課題を持つ。
【0012】また上述したそれぞれのメッセージング技
術は、それぞれで実装方法が異なる。そのため、一般に
各アプリケーションの実装は利用する基盤技術に依存し
てしまい、基盤技術の交換が大変困難である。また、基
盤技術毎にメッセージングのアーキテクチャが異なるた
め、ある基盤技術の実装で培った経験を、他の基盤技術
に対して活用しにくいという問題も生じている。
【0013】特に、従来においては、分散システム向け
メッセージングのための参照モデル/フレームワークが
存在しない。ここで、フレームワークとは、システムや
アプリケーションを組み上げる場合に参照する大枠の構
成要素の概念、あるいはこの概念を具体化したソフト基
盤をいう。フレームワークを利用すればアプリケーショ
ン間の連携を標準化、統合化できるが、従来のメッセー
ジングの技術ではこのフレームワークが存在しないため
標準化、統合化が困難である。
【0014】本発明は、以上のような実情に鑑みてなさ
れたもので、分散システム向けメッセージングのための
参照モデルとして利用可能であり、さらに仕様変更に対
して高い柔軟性を実現できるメッセージングプログラ
ム、及び分散システムにおけるメッセージング方法、並
びにメッセージングシステムを提供することを目的とす
る。
【0015】
【課題を解決するための手段】以下、本発明を実現する
にあたって講じた具体的手段について説明する。
【0016】本発明は、分散システムにおけるメッセー
ジ送信側とメッセージ受信側との間のメッセージ交換の
ために、コンピュータに、メッセージ送信側からのメッ
セージを受け付けさせる受付手段と、受付手段で受け付
けたメッセージをそのメッセージの種類に応じたチャネ
ルに渡させるメッセージ空間管理手段とを有し、チャネ
ルは、メッセージの種類に応じた方式でメッセージ交換
を制御することを特徴とするメッセージングプログラム
である。
【0017】また、本発明は、分散システムにおけるメ
ッセージ送信側とメッセージ受信側との間のメッセージ
交換のためにコンピュータを、メッセージ送信側からの
メッセージを受け付け、メッセージの種類に応じた方式
でメッセージ交換を制御する少なくとも一つのチャネル
の管理を実現し、受け付けたメッセージをそのメッセー
ジの種類に応じたチャネルに渡すメッセージ空間管理手
段として機能させるためのメッセージングプログラムで
ある。
【0018】本発明を利用し、基盤技術毎に異なるメッ
セージング実装のための手段や仕組みを統一化すること
で、適切な参照モデル/フレームワークを提供でき、分
散システム向けメッセージングのための構成を明確化で
きる。また、ある基盤技術の実装で培った経験を他の基
盤技術で活用することが容易になる。
【0019】また、本発明で採用している参照モデル/
フレームワークは、例えばCORBA、JavaRMI、JavaとECJ
などのような既存の分散システム間通信のための基盤技
術を用いる場合にも実装可能である。
【0020】なお、チャネルは、チャネルマネージャに
よって管理され、このチャネルマネージャがさらにメッ
セージ空間管理手段によって管理されるとしてもよい。
【0021】本発明のメッセージ空間管理手段は、定義
された共通のインタフェースとその利用手順(プロトコ
ル)にしたがってアクセスされるように変形可能であ
る。このような変形により、分散システムにおけるメッ
セージングのためのインタフェースやプロトコルを共通
化できる。
【0022】また、本発明のメッセージ空間管理手段
は、メッセージ送信側を宛先とする送達確認メッセージ
をメッセージ受信側から受け付け、この受け付けた送信
確認メッセージをその種類に応じたチャネルに渡すよう
に変形可能である。このような変形により、メッセージ
の送達確認機能を付加できる。
【0023】さらに、本発明のメッセージ空間管理手段
は、メッセージ交換の履歴情報を記録し、外部からの問
い合わせに応じて該当する履歴情報を提供するように変
形可能である。このような変形により、履歴情報に基づ
く処理を実行してメッセージ空間に対するメッセージの
検索機能、メッセージ不着信検出及びその対処機能を提
供できる。
【0024】上記のようなメッセージングプログラム又
はメッセージングプログラムを記録した記録媒体を用い
ることによって、分散システムにおけるメッセージ交換
に対して簡単に上記の作用効果を実現できる。
【0025】また、本発明を利用すれば、メッセージ送
信側からメッセージを受け付ける工程と、メッセージ送
信側からのメッセージの種類に応じた方式でメッセージ
交換を制御するチャネルがない場合に、メッセージ送信
側からのメッセージの種類に対応するチャネルを生成す
る工程と、メッセージ送信側からのメッセージをその種
類に対応するチャネルに渡す工程と、メッセージ送信側
からのメッセージを受けたチャネルにより、メッセージ
送信側からのメッセージをメッセージ受信側に配信する
工程とを含む分散システムにおけるメッセージング方法
を実施可能である。
【0026】この分散システムにおけるメッセージング
方法についても上述した変形と同様の変形を行ってもよ
い。
【0027】また、本発明の各手段を具備したメッセー
ジ交換システムを発明の対象としてもよい。
【0028】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施の形態について説明する。
【0029】(第1の実施の形態)本実施の形態におい
ては、分散システムのためのメッセージングシステムに
ついて説明する。このメッセージングシステムは、メッ
セージングの仕組み、インタフェース定義、システム利
用者からみた利用シーケンス、参照モデル/フレームワ
ーク、エラーハンドリングに特徴がある。
【0030】図1は、本実施の形態に係るメッセージン
グシステムを利用する分散システムの構成を例示するブ
ロック図である。
【0031】この分散システムは、メッセージ送信オブ
ジェクト(アプリケーション)1、メッセージ受信オブ
ジェクト(アプリケーション)2、メッセージ空間3、
メッセージハンドラ4から構成されている。メッセージ
送信オブジェクト1とメッセージ受信オブジェクト2と
の間でメッセージ5が交換される。
【0032】メッセージ送信オブジェクト1は、メッセ
ージ5を作成し、メッセージ空間3に作成したメッセー
ジ5を送信する。オプションで送達確認用のメッセージ
ハンドラ4を用意し、メッセージ空間3に登録可能であ
る。メッセージ受信オブジェクト2はメッセージ空間3
からメッセージを受信する。受信方法には、受信用のメ
ッセージハンドラ4をメッセージ空間3に登録し、それ
を用いてメッセージ空間3から呼び出されるようにする
形式のpush型と、メッセージ受信オブジェクト2が自発
的にメッセージ空間3にポーリングをかける形式のpull
型の2通りの方式がある。なお、以下においては、どち
らのメッセージの受け取り形式が用いられたとしても
「配送する」と表記する。
【0033】メッセージ空間3は、メッセージ送信オブ
ジェクト1から受け付けたメッセージ5をメッセージ受
信オブジェクト2へ配送するための概念的な存在であ
る。
【0034】メッセージ5はメッセージ送信オブジェク
ト1がメッセージ受信オブジェクト2に配送するために
必要とする情報を含むデータである。
【0035】メッセージハンドラ4は、対応するメッセ
ージ5がメッセージ空間3に受け付けられた場合に、そ
のメッセージ交換を要求するメッセージ送信オブジェク
ト1やメッセージ受信オブジェクト2をコールバック
し、メッセージを受け渡すために使われるインタフェー
スを実装した構成要素である。
【0036】また、メッセージハンドラ4は、予定され
ているメッセージ5の不着が検出された際のインタフェ
ースも備える。
【0037】メッセージ空間3はさらにメッセージ空間
管理部6とチャネルマネージャ7、チャネル8、メッセ
ージプール9、そしてメッセージ空間データベース10
から構成される。
【0038】メッセージ空間管理部6は、メッセージ空
間3全体に関わる処理、例えばメッセージ空間3の初期
化や、メッセージ5の登録受付、チャネル8やチャネル
マネージャ7の準備、メッセージハンドラ4の受付、送
信されたメッセージ5のチャネル8への割り当てなどを
行う。
【0039】メッセージ空間管理部6は、これらの処理
を実現するために、メッセージ空間3内でやり取りされ
るメッセージ5の種類、メッセージの種類とチャネル8
の対応関係、メッセージの種類とチャネルマネージャ7
の対応関係、メッセージやメッセージの種類とメッセー
ジ送信オブジェクト1との対応関係、メッセージやメッ
セージの種類とメッセージ受信オブジェクト2との対応
関係などに関する情報を、メッセージ空間データベース
10を用いて保持している。
【0040】メッセージ送信オブジェクト1やメッセー
ジ受信オブジェクト2がメッセージ空間3へアクセスす
るためのインタフェースを提供するのもメッセージ空間
管理部6である。
【0041】チャネルマネージャ7は、チャネル8に対
する初期化や複数のチャネル8間の制御を行う。
【0042】チャネル8は、メッセージ5の種類毎に用
意され、メッセージ空間3内でのメッセージ5の交換
(やり取り)を制御する。
【0043】メッセージプール9は、メッセージ5の送
信先(受け手)に一対一で対応する。このメッセージプ
ール9は、メッセージ5を蓄積しておくための構成要素
である。なお、メッセージプール9はオプションであ
る。
【0044】チャネルマネージャ7は、図2に示すよう
に、例えばシナリオチャネルマネージャ11などのよう
なチャネル8に対して特別な制御を行う構成要素を派生
する。シナリオチャネルマネージャ11は、例えば、指
定された複数種類のメッセージ5の順序を矛盾なく配送
するための制御を行う。
【0045】チャネル8は、図3に示すように、キュー
チャネル12やストアチャネル13、シンプルチャネル
14などのようなメッセージ5に対する扱いの種類に応
じた構成要素を派生する。
【0046】例えば、キューチャネル12は、図4に示
すように、メッセージ送信オブジェクト1からメッセー
ジ5を受け取ると、メッセージ5を一旦キュー15へ格
納してからメッセージ受信オブジェクト2へ配送する。
【0047】ストアチャネル13は、図5に示すよう
に、メッセージ送信オブジェクト1からメッセージ5を
受け取ると、そのメッセージ5をメッセージ受信オブジ
ェクト2に配送するとともに、ストア16にも格納す
る。メッセージ受信オブジェクト2のメッセージ検索に
より、ストア16内のメッセージ5はメッセージ受信オ
ブジェクト2に配信される。
【0048】シンプルチャネル14は、図6に示すよう
に、特にメッセージプール9は用いず、メッセージ空間
3が受け付けたメッセージ5をメッセージ受信オブジェ
クト2にそのまま配送する。
【0049】また、どのチャネル8もオプションで、送
達確認をサポートするための機能(メッセージの送信先
リスト、送信履歴、送達確認の受信履歴、これらの対応
関係の監視など)を有している。
【0050】ストアチャネル13やシンプルチャネル1
4はメッセージ5の配送のために、必要に応じて配送先
のメッセージハンドラ4(のリスト)を保持する。ま
た、必要に応じて送受信したメッセージ5の履歴やその
送達確認情報の履歴についても保持する。
【0051】メッセージプール9は、図7に示すよう
に、キュー15やストア16などのようなメッセージ5
を保持する方法の違いに応じた構成要素を派生する。
【0052】例えば、キュー15は、メッセージ5を受
け取った順に、メッセージ受信オブジェクト2に配送す
る。これを実現するために、キュー15は必要に応じて
配送先のメッセージハンドラ4を保持する。
【0053】ストア16は、メッセージ5をランダムア
クセス可能な記憶装置へ格納する。
【0054】キュー15はさらに、優先順位付きキュー
17、順序保証付きキュー18、永続キュー19などの
サブ構成要素を派生する。
【0055】例えば、優先順位付きキュー17は、キュ
ー15に貯えられているメッセージ5のうちもっとも優
先順位の高いものを優先してメッセージ受信オブジェク
ト2へ配送する。順序保証キュー18は、指定された順
序を優先してメッセージ5をメッセージ受信オブジェク
ト2へ配送する。永続キュー19は配送したメッセージ
5の履歴情報を残し、後からも検索処理などを実行可能
にする。
【0056】以下に、インタフェースの定義にについて
説明する。
【0057】メッセージ空間3は、メッセージ送信オブ
ジェクト1やメッセージ受信オブジェクト2に公開する
インタフェースに定義されたメソッド(操作)を通し
て、様々な機能を提供する。
【0058】本実施の形態では、利用する通信基盤技術
に依存しないインタフェースを定義する。
【0059】メッセージ空間3が提供するメソッドはそ
の目的に応じて利用開始、メッセージの送受信、検索処
理、利用終了、管理の5種に分類される。
【0060】以下に本実施の形態における定義をそれぞ
れ種類毎に列挙する。またメッセージハンドラが定義す
べきメソッドについても定義する。
【0061】利用開始のためのメソッド(A): (1)送信するメッセージ5のメッセージ空間3における
コンテキストの取得 [定義]メッセージ空間3に対して、メッセージ送信オ
ブジェクト1が送信しようとしている種類のメッセージ
5のコンテキストを取得するためのメソッド、コンテキ
ストは、指定されたメッセージ5が既にメッセージ空間
3内に存在していれば、そのメッセージ5を扱っている
チャネルマネージャ7、チャネル8、メッセージプール
9の種類を示す識別子群を含む。
【0062】[シグネチャ]コンテキストを調べたいメ
ッセージ5を引数としてもつ。返り値はコンテキストで
あり、メッセージ空間3内にまだ存在していなければ空
の値を返す。
【0063】[動作]このメソッドが呼ばれると、メッ
セージ空間3は、指定されたメッセージ5がメッセージ
空間管理部6で既に管理してあるかどうかを、メッセー
ジ空間データベース10を用いて調べる。もし既に存在
している場合には、そのメッセージ5を取り扱っている
チャネルマネージャ7、チャネル8、メッセージプール
9の種類を調べ、コンテキストとして返す。もし存在し
ない場合は空の値を返す。
【0064】(2)送信するメッセージ5の種類を登録す
るメソッド(その1) [定義]メッセージ送信オブジェクト1が送信するメッ
セージ5をメッセージ空間3に登録するためのメソッ
ド。メッセージ5がまだメッセージ空間内で扱われてい
ない場合に使うメソッド。メッセージ5の種類毎に登録
する。
【0065】[シグネチャ]登録するメッセージ5とチ
ャネルマネージャ7、チャネル8の種類をそれぞれ指定
するための識別子と、メッセージ送信オブジェクト1を
特定するための識別子をそれぞれ引数としてもつ。
【0066】[動作]このメソッドが呼ばれると、メッ
セージ空間3は、メッセージ5の種類とメッセージ送信
オブジェクト1の識別子をメッセージ空間データベース
10へ記録するとともに、適切なチャネルマネージャ7
を通して、与えられたメッセージ5のやり取りを担当す
るためのチャネル8を用意し、適切な初期化を行う。ま
た、メッセージ送信オブジェクト1の識別子をチャネル
8で記録する。さらに、チャネル8が送達確認用のメッ
セージ5のためのメッセージプール9としてキュー15
を用いている場合は、そのメッセージ送信オブジェクト
1に対応するキュー15を用意する。
【0067】(3)送信するメッセージ5の種類を登録す
るメソッド(その2) [定義]メッセージ送信オブジェクト1が送信するメッ
セージ5をメッセージ空間3に登録するためのメソッ
ド、メッセージ5が既にメッセージ空間内で扱われてい
る場合に使うメソッド、メッセージ5の種類毎に登録す
る。
【0068】[シグネチャ]登録するメッセージ5とメ
ッセージ送信オブジェクト1を特定するための識別子を
引数としてもつ。
【0069】[動作]このメソッドが呼ばれると、メッ
セージ空間3は、メッセージ5の種類とメッセージ送信
オブジェクト1の識別子をメッセージ空間データベース
10へ記録するとともに、与えられたメッセージ5をや
り取りしているチャネル8に対して、与えられたメッセ
ージ送信オブジェクト1の識別子を記録する。さらに、
チャネル8が送達確認用のメッセージ5のためのメッセ
ージプール9としてキュー15を用いている場合は、そ
のメッセージ送信オブジェクト1に対応するキュー15
を用意する。
【0070】(4)送達確認をpush形式で受け取るための
確認用ハンドラを登録するメソッド [定義]メッセージ送信オブジェクト1が、送信するメ
ッセージ5の送達確認を受けるためのメッセージハンド
ラ4をメッセージ空間3に登録するためのメソッド。メ
ッセージ5の種類毎に登録する。
【0071】[シグネチャ]このメソッドは登録するメ
ッセージハンドラ4とそれが対応するメッセージ5を指
定するための識別子を引数として持つ。
【0072】[動作]このメソッドが呼ばれると、メッ
セージ空間3は、与えられたメッセージ5を担当するチ
ャネル8に、確認用ハンドラとして与えられたメッセー
ジハンドラ4を登録する。このチャネル8が送達確認用
のメッセージ5のためのメッセージプール9としてキュ
ー15を用いている場合は、そのメッセージ送信オブジ
ェクト1に対応するキュー15に与えられたメッセージ
ハンドラ4を登録する。
【0073】(5)受信するメッセージ5の種類を登録す
るメソッド [定義]メッセージ受信オブジェクト2が、配送を希望
するメッセージ5をメッセージ空間3に登録するための
メソッド、メッセージ5の種類毎に登録する。
【0074】[シグネチャ]このメソッドは登録するメ
ッセージ5とメッセージ受信オブジェクト2を特定する
ための識別子を引数として持つ。
【0075】[動作]このメソッドが呼ばれると、メッ
セージ空間3は、メッセージ5の種類とメッセージ受信
オブジェクト2の識別子をメッセージ空間データベース
10へ記録するとともに、与えられたメッセージ5を担
当するチャネル8に、メッセージ5の配送先として指定
されたメッセージ受信オブジェクト2の識別子を伝え
る。チャネル8が送信用にキュー15をメッセージプー
ル9として用いている場合は、その配送先のための対応
するキュー15を作成する。
【0076】(6)メッセージ5をpush形式で受け取るた
めのメッセージハンドラを登録するメソッド [定義]メッセージ受信オブジェクト2が、配送を希望
するメッセージ5を受け取るためのメッセージハンドラ
4をメッセージ空間3に登録するためのメソッド。メッ
セージ5の種類毎に登録する。
【0077】[シグネチャ]このメソッドは登録するメ
ッセージハンドラ4とそれが対応するメッセージ5を指
定するための識別子を引数として持つ。
【0078】[動作]このメソッドが呼ばれると、メッ
セージ空間3は、メッセージ5の種類とメッセージ受信
オブジェクト2の識別子をメッセージ空間データベース
10へ記録するとともに、与えられたメッセージ5を担
当するチャネル8に、与えられたメッセージハンドラ4
を登録する。チャネル8が送信用に、キュー15をメッ
セージプール9として用いている場合は、その配送先の
ための対応するキュー15を作成し、与えられたメッセ
ージハンドラ4を登録する。
【0079】(7)メッセージ5の不着検出のための属性
を設定するメソッド [定義]メッセージ5の不着検出のため、メッセージ5
が送信される予定をメッセージハンドラ4に設定するた
めのメソッド。
【0080】[シグネチャ]対象となるメッセージ5
と、その送信に関する予定を表すオブジェクト。このオ
ブジェクトには、そのメッセージ5に関する定期性や予
定時刻などが設定されている。
【0081】[動作]予定を表すオブジェクトの情報に
従って、メッセージが未着の場合にメッセージ空間3の
検索機能(後述)を用いて、所望のメッセージ5の情況
を調べる。未着の場合は対応するメッセージハンドラ4
の不着検出時に呼ばれるメソッド(後述)を呼び出す。
【0082】メッセージ送受信のためのメソッド(B): (1)メッセージ5を送信するためのメソッド [定義]メッセージ空間3に対して、メッセージ送信オ
ブジェクト1がメッセージ5を送信するためのメソッ
ド。
【0083】[シグネチャ]送信するメッセージ5を引
数としてもつ。
【0084】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、与えられたメッセージ5の種類
とそれを特定する識別子、それが送信された時間をメッ
セージ空間データベース10へ記録するとともに、与え
られたメッセージ5を、それを担当するチャネル8に渡
す。チャネル8は自分の種類に応じた方式でメッセージ
配信を行う。
【0085】(2)送達確認を送信するためのメソッド [定義]メッセージ空間3に対して、メッセージ受信オ
ブジェクト2が、受け取ったメッセージ5の送達確認を
送信するためのメソッド。
【0086】[シグネチャ]送信する送達確認を引数と
して持つ。
【0087】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、与えられた送達確認のもととな
るメッセージ5を担当するチャネル8に渡す。チャネル
8は自分の種類に応じた方式で送達確認を配信する。
【0088】(3)送達確認をpull形式で受信するための
メソッド [定義]メッセージ空間3に対して、メッセージ送信オ
ブジェクト1がメッセージ5の送達確認をpull形式で受
信するためのメソッド。
【0089】[シグネチャ]送信したメッセージ5を引
数としてもつ、オプションで、時間やメッセージ5を特
定するための識別子を引数として渡す場合もある。返り
値は送達確認。
【0090】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は与えられたメッセージ5を扱うチ
ャネル8に対して、与えられたメッセージ5に対応する
送達確認を要求する。対応する送達確認がチャネル8に
既に届けられていれば、それを返す。まだ届けられてい
なければ、空を返す。チャネル8の詳細な動作はその種
類に依存する。時間やメッセージ5を特定するための識
別子が渡された場合は、その値に応じたメッセージ5を
配送する。
【0091】(4)メッセージ5をpull形式で受信するた
めのメソッド [定義]メッセージ空間3に対して、メッセージ受信オ
ブジェクト2がメッセージ5をpull形式で受信するため
のメソッド。
【0092】[シグネチャ]必要に応じて、メッセージ
受信オブジェクト2を特定するための識別子を引数とし
てもつ。オプションで、時間やメッセージ5を特定する
ための識別子を引数として渡す場合もある。返り値はメ
ッセージ5。
【0093】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は与えられたメッセージ5を扱うチ
ャネル8に対して、メッセージ5の要求を伝える。チャ
ネル8はその種類に応じた方式でメッセージ受信オブジ
ェクト2にメッセージを配送する。時間やメッセージ5
を特定するための識別子が渡された場合は、その値に応
じたメッセージ5を配送する。
【0094】メッセージ検索のためのメソッド(C): (1)メッセージ空間3でやり取りされているメッセージ
5の種類の一覧を返すメソッド [定義]メッセージ空間3に対して、その利用者(メッ
セージ送信オブジェクト1及びメッセージ受信オブジェ
クト2)が、現在メッセージ空間3内でやり取りされて
いるメッセージ5の種類の一覧を問い合わせるためのメ
ソッド。
【0095】[シグネチャ]問い合わせる際の条件式を
引数としてもつ。この条件式は省略可能。返り値は、現
在メッセージ空間3内でやり取りされている。条件式に
該当するメッセージ5の一覧。条件式が省略されている
場合は、全メッセージ5の一覧。
【0096】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、現在登録されているメッセージ
5のうち条件式に合致するものをメッセージ空間データ
ベース3に問い合わせ、一覧として返す。条件式が省略
されている場合は、現在やり取りされている全メッセー
ジ5の一覧を作成し、返す。
【0097】(2)指定されたメッセージ5の送信オブジ
ェクト一覧を返すメソッド [定義]メッセージ空間3に対して、その利用者(メッ
セージ送信オブジェクト1及びメッセージ受信オブジェ
クト2)が、現在メッセージ空間3内でやり取りされて
いる任意のメッセージ5の送信オブジェクトの一覧を問
い合わせるためのメソッド。
【0098】[シグネチャ]送信オブジェクト一覧を調
べたいメッセージ5を引数としてもつ。返り値は、現在
のメッセージ空間3に指定されたメッセージ5を送信す
るメッセージ送信オブジェクト1の一覧。
【0099】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、与えられたメッセージ5のメッ
セージ送信オブジェクト1をメッセージ空間データベー
ス10に問い合わせ、一覧として返す。
【0100】(3)指定されたメッセージ5の受信オブジ
ェクト一覧を返すメソッド [定義]メッセージ空間3に対して、その利用者(メッ
セージ送信オブジェクト1及びメッセージ受信オブジェ
クト2)が、現在メッセージ空間3内でやり取りされて
いる任意のメッセージ5の受信オブジェクトの一覧を問
い合わせるためのメソッド。
【0101】[シグネチャ]受信オブジェクト一覧を調
べたいメッセージ5を引数としてもつ。返り値は、現在
のメッセージ空間3に指定されたメッセージ5を受信す
るメッセージ受信オブジェクト2の一覧。
【0102】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、与えられたメッセージ5のメッ
セージ受信オブジェクト2をメッセージ空間データベー
ス10に問い合わせ、一覧として返す。
【0103】(4)指定されたメッセージ5の履歴一覧を
返すメソッド [定義]メッセージ空間3に対して、その利用者(メッ
セージ送信オブジェクト1およびメッセージ受信オブジ
ェクト2)が、これまでにメッセージ空間3内でやり取
りされていた任意のメッセージ5の一覧を問い合わせる
ためのメソッド。
【0104】[シグネチャ]履歴一覧を調べたいメッセ
ージ5を引数としてもつ。返り値は、これまでにメッセ
ージ空間3でやり取りされ、指定されたメッセージ5の
一覧。
【0105】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、与えられたメッセージ5の履歴
情報をメッセージ空間データベース10に問い合わせ、
一覧として返す。
【0106】(5)指定されたメッセージ5が指定された
時間以降にやり取りされているかどうかを調べるための
メソッド。
【0107】[定義]メッセージ空間3に対して、その
利用者(メッセージ送信オブジェクト1及びメッセージ
受信オブジェクト2)が、あるメッセージ5について指
定した時間以降にやり取りされているかどうかを調べる
ためのメソッド。
【0108】[シグネチャ]調べたいメッセージ5と指
定する時間を引数として持つ。返り値は、やり取りされ
ていたかどうかを示す2値。
【0109】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、与えられたメッセージ5が与え
られた時間以降で、メッセージ空間3内でやり取りされ
た記録があるかどうかを、メッセージ空間データベース
10に問い合わせて調べ、その結果を返す。
【0110】利用終了のためのメソッド(D): (1)メッセージ空間3からの離脱を実施するメソッド [定義]メッセージ空間3に対して、その利用者(メッ
セージ送信オブジェクト1及びメッセージ受信オブジェ
クト2)が、それ以降、メッセージ5をやり取りしない
ことを宣言するためのメソッド。
【0111】[シグネチャ]登録していたメッセージ5
とその利用者(メッセージ送信オブジェクト1およびメ
ッセージ受信オブジェクト2)を特定するための識別子
を引数としてもつ。
【0112】[動作]このメソッドが呼ばれると、メッ
セージ空間管理部6は、メッセージ空間データベース1
0における与えられた利用者の識別子に関する情報を削
除するとともに、与えられたメッセージ5を扱っていた
チャネル8に対して、与えられた識別子の利用者が、以
後そのメッセージ5を扱わないこととするための処理を
行う。キュー15を用いていた場合は、そのキュー15
を始末する。
【0113】メッセージハンドラのためのメソッド
(E): (1)メッセージ5が渡された際に呼び出されるメソッド [定義]メッセージ5がメッセージ空間3へ送信された
際に、push型でそのメッセージ5を受け取る場合に利用
されるメッセージハンドラ4が実装するメソッド。
【0114】[シグネチャ]メッセージ5を引数にも
つ。
【0115】[動作]このメソッドの動作はアプリケー
ション開発者に委ねられる。
【0116】(2)メッセージ5の不着が検出された際に
呼び出されるメソッド [定義]メッセージ5の不着が検出された際に呼び出さ
れる、メッセージハンドラ4が実装するメソッド。
【0117】[シグネチャ]エラーメッセージを含むオ
ブジェクトを引数にもつ。
【0118】[動作]このメソッドの動作はアプリケー
ション開発者に委ねられる。
【0119】以下に、システム利用者(メッセージ送信
オブジェクト1及びメッセージ受信オブジェクト2)か
らの利用シーケンスについて説明する。
【0120】図8は、システム利用者からみた本実施の
形態におけるメッセージ空間3を利用するための流れ図
である。この図8に示すように、初期化(ST801)、運用
(ST802)、終了処理(ST803)の順に実行される。
【0121】以下に、メッセージ送信オブジェクト1か
らの利用シーケンスについて説明する。
【0122】図9は、メッセージ送信オブジェクト1か
らみた初期化(ST801)に関する流れ図である。この図9
に示すように、コンテキストの取得(ST901)、登録(ST90
2)、送達確認用のメッセージハンドラの登録(ST903)の
順に実行される。送達確認用のメッセージハンドラの登
録(ST903)はオプションである。
【0123】コンテキストの取得(ST901)では上記メソ
ッド(A)-(1)を用い、登録(ST902)では上記メソッド(A)-
(2)、(A)-(3)を用い、送達確認用のメッセージハンドラ
の登録(ST903)では上記メソッド(A)-(4)を用いる。
【0124】図10は、メッセージ送信オブジェクト1
からみた運用(ST802)におけるメッセージ5のやり取り
に関する流れ図である。この図10に示すように、メッ
セージの送信(ST1001)、送達確認の受信(ST1002)の順に
実行される。送達確認の受信(ST1002)はオプションであ
る。
【0125】メッセージの送信(ST1001)では上記メソッ
ド(B)-(1)を用い、送達確認の受信(ST1001)では、pull
形式で利用する場合には上記メソッド(B)-(3)を用い、p
ush形式で利用する場合には上記メソッド(A)-(4)で登録
したメッセージハンドラで実装する上記メソッド(E)-
(1)が用いられる。
【0126】メッセージ送信オブジェクト1からみた運
用(ST802)におけるメッセージ検索については、上記で
定義した処理(C)の単一の処理となるので、特に流れ図
は定義しない。
【0127】メッセージ送信オブジェクト1からみた終
了処理(ST803)では、上記で定義したメソッド(D)-(1)を
用いる単一の処理となるので、特に流れ図は定義しな
い。
【0128】以下に、メッセージ受信オブジェクト2か
らの利用シーケンスについて説明する。
【0129】図11は、メッセージ受信オブジェクト2
からみた初期化(ST801)に関する流れ図である。この図
11に示すように、登録(ST1101)、メッセージハンドラ
の登録(ST1102)の順に実行される。メッセージハンドラ
の登録(ST1102)はオプションである。
【0130】登録(ST1101)では上記メソッド(A)-(5)を
用い、メッセージハンドラの登録(ST1102)では上記メソ
ッド(A)-(6)を用いる。
【0131】図12は、メッセージ受信オブジェクト2
からみた運用(ST802)におけるメッセージ5のやり取り
に関する流れ図である。この図12に示すように、受信
(ST1201)、送達確認の送信(ST1202)の順に実行される。
送達確認の送信(ST1202)はオプションである。
【0132】受信(ST1201)では、pull形式で利用する場
合には上記メソッド(B)-(4)を用い、push形式で利用す
る場合には上記メソッド(A)-(6)で登録したメッセージ
ハンドラで実装する上記メソッド(E)-(1)が用いられ
る。送達確認の送信(ST1202)では上記メソッド(B)-(2)
を用いる。
【0133】メッセージ受信オブジェクト2からみた運
用(ST802)におけるメッセージ検索については上記で定
義した処理(C)の単一の処理となるので、特に流れ図は
定義しない。
【0134】メッセージ受信オブジェクト2からみた終
了処理(ST803)では、上記で定義したメソッド(D)-(1)を
用いる単一の処理となるので、特に流れ図は定義しな
い。
【0135】以下に、本実施の形態に係るメッセージン
グシステムの仕組みを実現するための参照モデルについ
て説明する。以下で説明する分散システムのための目メ
ッセージングシステムの参照モデルは、上述した構成や
インタフェース定義を前提としている。
【0136】図13は、メッセージングシステムのクラ
ス図である。表記にはUMLを用いている。このクラス図
を構成するクラスについてそれぞれ説明する。
【0137】メッセージ送信部20は、本実施の形態に
係るメッセージングシステムにおける参照モデルを利用
し、メッセージ5を送信するアプリケーションである。
このメッセージ送信部20は、上記図1のメッセージ送
信オブジェクト1に相当する。
【0138】メッセージ受信部21は、本実施の形態に
係るメッセージングシステムにおける参照モデルを利用
し、メッセージ5を受信するアプリケーションである。
このメッセージ受信部21は、上記図1のメッセージ送
信オブジェクト2に相当する。
【0139】メッセージ検索インタフェース22は、メ
ッセージ空間3におけるメッセージ検索を実現するため
のインタフェース定義であり、上記メソッド(C)を定義
する。
【0140】送信側インタフェース23は、メッセージ
送信部20が利用するメッセージ空間3に対するインタ
フェース定義である。
【0141】受信側インタフェース24は、メッセージ
受信部21が利用するメッセージ空間3に対するインタ
フェース定義である。
【0142】送信側管理部25は、メッセージ送信部2
0がメッセージ空間3とやり取りするための送信側の様
々な処理を行うクラスであり、送達確認の不着調査も担
当する。
【0143】受信側管理部26は、メッセージ受信部2
1がメッセージ空間3とやり取りするための受信側の様
々な処理を行うクラスであり、メッセージの不着調査も
担当する。
【0144】メッセージ空間管理部27は、メッセージ
空間3の中心となるクラスである。このメッセージ空間
管理部27は、送信側管理部25や受信側管理部26と
のやり取りを行い、初期化処理やメッセージ送受信の際
のデータベースへの記録保持や適切なチャネルの振り分
け、そして終了処理などを行う。このメッセージ空間管
理部27は、上記図1のメッセージ空間管理部6に相当
する。
【0145】メッセージ空間データベース28は、メッ
セージ空間3が保持する各種データを保存するためのク
ラスである。保持するデータには、例えばチャネル30
(このチャネルが利用するメッセージプール31やチャ
ネルマネージャ29なども含む)の種類とメッセージ送
信部20及びメッセージ受信部21の対応関係を示すデ
ータ、メッセージ5毎の履歴情報などがある。メッセー
ジ空間データベース28は、上記図1のメッセージ空間
データベース10に相当する。
【0146】チャネルマネージャ29は、少なくとも一
つのチャネル30を管理するためのクラスである。この
チャネルマネージャ29は、上記図1のチャネルマネー
ジャ7に相当する。
【0147】チャネル30は、メッセージの種類毎に用
意されてメッセージのやり取りを管理するクラスであ
る。チャネル30は、送達確認処理を実現するためのメ
ッセージと送達確認の対応関係に関する情報を保持す
る。このチャネル30は、上記図1のチャネル8に相当
する。
【0148】メッセージプール31は、メッセージ5を
メッセージ空間内に蓄えておくためのクラスである。こ
のメッセージプール31は、上記図1のメッセージプー
ル9に相当する。
【0149】メッセージ32は、本実施の形態において
やり取りされるメッセージ5を示すクラスである。メッ
セージ32は、上記図1のメッセージ5に相当する。
【0150】送達確認33は、メッセージ5の送達確認
に利用される情報を表すクラスであり、メッセージ32
を継承する。
【0151】コンテキスト34は、あるメッセージ5の
やり取りが、メッセージ空間3内でどのように実現され
ているかを表すクラスである。
【0152】送達確認用メッセージハンドラ35は、送
達確認33をpush型で受け取るためのクラスである。こ
の送達確認用メッセージハンドラ35は、上記図1のメ
ッセージハンドラ4に相当する。
【0153】メッセージハンドラ36は、メッセージ3
2をpush型で受け取るためのクラスである。このメッセ
ージハンドラ36は、上記図1のメッセージハンドラ4
に相当する。
【0154】これらのクラスのうち、チャネルマネージ
ャ29、チャネル30、メッセージプール31は、上記
図2、3、7に示したように派生して利用されることが
考えられる。この派生の例を図14〜図16に示す。
【0155】また、代表的なシナリオに対するシーケン
ス図を示す。ただし、チャネル30から先の動作はチャ
ネル30の種類/性質によって異なるため、それ以降の
詳細なシーケンスはここでは省略する。
【0156】図17は、メッセージ送信部20による初
期化のシーケンス図である。図18は、メッセージ受信
部21による初期化のシーケンス図である。図19は、
メッセージ送信部20によるメッセージ送信のシーケン
ス図である。図20は、メッセージ受信部21によるpu
sh型のメッセージ受信のシーケンス図である。図21
は、メッセージ受信部21によるpull型のメッセージ受
信のシーケンス図である。図22は、メッセージ送信部
20による終了処理のシーケンス図である。なお、メッ
セージ受信部21による終了処理のシーケンス図も上記
図22と同様である。
【0157】以下に、分散システムのメッセージ交換で
エラーが発生した場合のエラーハンドリングについて説
明する。
【0158】図23は、上記のようなメッセージングシ
ステムにおいて考えられるエラーの発生箇所、種類を示
すブロック図である。
【0159】メッセージ送信オブジェクト1における送
信エラー、シリアライズの失敗などのようなエラーE1
には、送信側管理部25が対処の責任を負うとする。
【0160】メッセージ空間3における復元の失敗、受
信エラーなどのようなエラーE2、送信エラー、シリア
ライズの失敗などのようなエラーE3、メッセージプー
ルのあふれなどのようなエラーE5には、メッセージ空
間管理部27が対処の責任を負うとする。
【0161】メッセージ受信オブジェクト2における復
元の失敗、受信エラーなどのようなエラーE4には、受
信側管理部26が対処の責任を負うとする。
【0162】なお、具体的な対処方法はエラー毎に定め
る。
【0163】図24は、本実施の形態に係るメッセージ
ングを模式的に表したブロック図である。
【0164】この図24では、メッセージの伝送及び送
達確認メッセージの伝送にキューを用い、どちらもpush
型の配送をする構成を例に表している。
【0165】メッセージ送信オブジェクト46は、メッ
セージ空間インタフェース47を通してメッセージ空間
管理部6にメッセージを送信する。
【0166】メッセージ空間管理部6は、必要な情報を
記録すると同時に、適切なチャネルマネージャ7に依頼
してキューチャネル12を生成し(既にこのメッセージ
に対応するキューチャネル12が存在している場合、こ
のプロセスは省略される)、キューチャネル12にメッ
セージを渡す。
【0167】キューチャネル12は、配信先として登録
してあるメッセージ受信オブジェクト48の分だけメッ
セージを複製する。そして、キューチャネル12は、各
メッセージ受信オブジェクト48用のキュー49にメッ
セージを渡し、これと同時に図25に示す形式で各宛先
へメッセージを配信したことを記録する。
【0168】キュー49は、受け取ったメッセージを自
分に登録されているメッセージハンドラ50を通してメ
ッセージ受信オブジェクト48に送る。
【0169】メッセージ受信オブジェクト48は、メッ
セージを受け取ったことが確認できると、送達確認メッ
セージをメッセージ空間インタフェース47経由でメッ
セージ空間管理部6へ送る。
【0170】メッセージ空間管理部6は、送達確認メッ
セージの送信原因となったメッセージを扱ったキューチ
ャネル12に受け取った送達確認メッセージを渡す。
【0171】キューチャネル12では、送達確認メッセ
ージを受け取ったことを図25に示す形式で記録し、送
達確認メッセージの送信原因となったメッセージ送信オ
ブジェクト46に対応する送達確認用のキュー51に、
送達確認メッセージを渡す。これを受け取った送達確認
用キュー51は登録されている送達確認用メッセージハ
ンドラ52を通してメッセージ送信オブジェクト46に
送達確認がなされたことを伝える。
【0172】図26は、上記図24に示すメッセージン
グシステムを上記図13のクラス図に基づいて配置図を
兼ねたオブジェクト図として表した図である。
【0173】部分53が本実施の形態におけるメッセー
ジングの仕組みに相当する。
【0174】この図26では送信側54、受信側55、
メッセージ空間3がそれぞれ分けて記載されているが、
メッセージ空間3の実装の実体がどこにあるかは特に限
定されない。すなわち、送信側54や受信側55とは異
なるハードウェア上で実装される場合も考えられるし、
送信側54や受信側55の一方もしくは双方と同じハー
ドウェア上で実装されてもよい。図26中のアプリ側通
信実装部56、57とメッセージ空間通信実装部58、
59は実装の際に利用する分散通信技術に依存する部分
である。すなわち、アプリ側通信実装部56、57とメ
ッセージ空間通信実装部58、59は、利用する分散通
信技術に応じて生成される。
【0175】また、メッセージ空間3を管理するのは基
本的にメッセージ空間管理部27であるが、負荷分散や
フォールトトレランスの観点から、メッセージ空間管理
部27の請け負う仕事を分散させることも考えられる。
この様子を図27に示す。ここではメッセージ空間管理
部27の仕事を分散させるメッセージ空間サブ管理部6
0を備えている。サーバの多重化技術には、既存のクラ
スタリングなどの技術を用いる。
【0176】以上説明した本実施の形態に係る分散シス
テムのためのメッセージングシステムにおいては、イン
タフェース定義とそれへのアクセス方法を定義した参照
モデルを採用している。
【0177】これにより、この定義されたインタフェー
スとそれへのアクセス方法を利用することで、実装基盤
などに依存しない統一的なメッセージングが可能にな
る。
【0178】また、統一的なメッセージングを可能とす
る参照モデルを定義したことで、実装技術に関係なく利
用可能なモデルを明確にすることができる。このため、
ソフトウェアの共通化/再利用や保守/管理が容易にな
り、仕様変更の波及範囲を明確化できる。また、メッセ
ージを交換するための仕組みや機能、実装方法を統一化
することにより、ある基盤技術の実装で培った経験を他
の基盤技術で容易に活用できる。
【0179】また、本実施の形態に係るメッセージング
システムにおいては、既存の実装技術では提供されない
メッセージの送達確認機能やメッセージ空間に対する検
索機能、メッセージ不着検出およびその対処機能を提供
できる。
【0180】また、本実施の形態に係るメッセージング
システムは、階層型の構造をしている。これにより、例
えば業務の細部の仕様変更、新しい業務の追加、ハード
ウェア構成の仕様変更などのような様々な規模の仕様変
更に容易に対処できる。
【0181】特に、例えばCORBA、JavaRMI,Java及びEC
Jなどのような既存の分散システム間通信の実装技術に
本実施の形態に係るメッセージングシステムを採用する
ことにより、内部構造に互換性を持たせることができ
る。これにより、既存の分散システム間通信の実装技術
に関わるソフトウェア部品の共通化/再利用や保守/管
理が容易になり、仕様変更の波及範囲の明確化できる。
【0182】なお、本実施の形態で説明したメッセージ
ングシステムの機能は、コンピュータに実行させること
のできるプログラムとし、例えば磁気ディスク(フロッ
ピー(登録商標)ディスク、ハードディスク等)、光デ
ィスク(CD−ROM、DVD等)、半導体メモリなど
の記録媒体に書き込んでコンピュータに適用可能であ
る。また、このプログラムを通信媒体により伝送してコ
ンピュータに適用することも可能である。上記機能を実
現するコンピュータは、このプログラムを読み込み、プ
ログラムによって動作が制御されることにより、上述し
た処理を実行する。
【0183】(第2の実施の形態)本実施の形態におい
ては、CORBAのための参照モデルのマッピング手法につ
いて説明する。
【0184】図28は、分散通信技術にCORBAを使用し
た場合のオブジェクト図である。この図28は、上記図
26の分散通信技術にCORBAを用いた場合のpush型のオ
ブジェクト図である。
【0185】また、図29はpull型のオブジェクト図で
ある。なお、分散通信技術によらない部分(図26の構
成要素20、23、61、25、21、36、24、2
6、27、62、63)は省略している。
【0186】通信側54と受信側55とのイベントの配
送にはCORBAのイベントサービスを用いる。通常、CORBA
のイベントサービスではイベントの送信側オブジェクト
をサプライヤと受信側オブジェクトをコンシューマと呼
び、イベントチャンネルにサプライヤとコンシューマを
登録することによってイベントチャンネルが通信を仲介
する。
【0187】Push型のイベント通信の場合、イベント送
信者であるPushSupplier66はCORBAイベントサービス
のEventChanel67、ProxyPushConsumer68、Supplier
Admin69と通信し、PushSupplier66がイベント送信
者であることを登録する。
【0188】同様に、イベント受信者であるPushConsum
er70はEventChanel67、ProxyPushSupplier71、Co
nsumerAdmin72と通信し、PushConsumer70がイベン
ト受信者であることを登録する。以後、PushSupplier6
6がProxyPushConsumer 68にイベントを登録(push)
するとPushConsumer70はProxyPushSupplier71から
イベントを受け取ることができる。
【0189】さらに、イベント配送にCORBAのイベント
サービスを使用するのみならず、送信側54とメッセー
ジ空間3、受信側55とメッセージ空間3の通信を実現
する必要がある。送信側54のアプリ側通信実装部56
とメッセージ空間通信実装部58は、アプリ側通信実装
部スケルトン76、アプリ側通信実装部スタブ77、メ
ッセージ空間通信実装部スタブ78及びメッセージ空間
通信実装部スケルトン79によってCORBAによる通信を
行う。
【0190】同様に、受信側55のアプリ側通信実装部
57とメッセージ空間通信実装部59は、アプリ側通信
実装部スケルトン82、アプリ側通信実装部スタブ8
3、メッセージ空間通信実装部スタブ84およびメッセ
ージ空間通信実装部スケルトン85によってCORBAによ
る通信を行う。
【0191】以上のように、本実施の形態においては、
既存の分散システム間通信の実装技術として代表的なCO
RBAのための参照モデルのマッピング手法を示した。こ
れにより、CORBAを利用したシステムの開発が容易にな
る。また、上記第1の実施の形態で説明したメッセージ
ングシステムと同様のモデルを利用することで、例えば
JavaRMIやJava及びECJなどのような他の分散システム間
通信の実装技術との間で内部構造に互換性を持たせるこ
ともできる。したがって、ソフトウェア部品の共通化/
再利用や保守/管理が容易になり、仕様変更の波及範囲
を明確化できる。
【0192】(第3の実施の形態)本実施の形態におい
ては、JavaRMIのための参照モデルのマッピング手法に
ついて説明する。
【0193】図30は、分散通信技術にJavaRMI を使用
した場合の模式図である。この図30は、上記図26中
における分散通信技術に依存する部分をJavaRMIで実現
している。分散通信技術に依存しない部分についての具
体的な説明を省略する。
【0194】分散通信を行うために、アプリケーション
開発者は以下の操作を行う。
【0195】まず、上記図26のアプリ側通信実装部5
6、57とメッセージ空間通信実装部58、59の各々
について、rmicコンパイラを用いてアプリ側通信実装部
_Skel90、91、アプリ側通信実装部_Stub92、9
3、メッセージ空間通信実装部_Skel94、95、メッ
セージ空間通信実装部_Stub96、97を生成する。
【0196】次に、アプリ側通信実装部56、57とメ
ッセージ空間通信実装部58、59の各々を、メッセー
ジ空間に依存するネームサーバであるrmiregistryサー
バ98に登録する。ここで、メッセージ空間通信実装部
_Stub96は、送信側のJavaVMで利用されるメッセージ
空間通信実装部58の分身である。このオブジェクトに
より、アプリ側通信実装部56がメッセージ空間3のメ
ッセージ空間通信実装部58のメソッドを呼び出す際
に、ネットワークの存在を意識せずに直接メソッドを呼
び出す感覚で実行できる。
【0197】また、アプリ側通信実装部56は、rmireg
istryサーバ98に問い合わせることにより、通信相手
であるメッセージ空間通信実装部58を探すことが可能
である。
【0198】一方、メッセージ空間通信実装部_Skel9
4は、メッセージ空間のJavaVMに存在し、送信側のメッ
セージ空間通信実装部_Stub96からの通信を受け付け
る。
【0199】このように、JavaRMIでは、StubとSkelが
それぞれネットワーク接続の出入口として機能すること
で、アプリ側通信実装部56とメッセージ空間通信実装
部58の分散通信を実現する。アプリ側通信実装部_Ske
l90、91とアプリ側通信実装部_Stub92、93とメ
ッセージ空間通信実装部_Skel95とメッセージ空間通
信実装部_Stub97についても同様である。
【0200】次に、メッセージ空間インタフェース47
(23、24)が持つインタフェース定義をどのように
実現するかについて具体的に発明する。ただし、「メッ
セージハンドラのためのメソッド(E)」については、分
散通信とは直接関係しないので、説明を省略する。な
お、分散通信においてメソッドの引数として渡されるメ
ッセージハンドラ36、送達確認用メッセージハンドラ
35、メッセージ32及びコンテキスト34は、インタ
フェースjava.io.Serializableを実装する必要がある。
【0201】メッセージ空間インタフェース47は、メ
ソッド定義の集合であり、その実装は定義しない。この
中身は、送信側管理部25と受信側管理部26でそれぞ
れ実装される。
【0202】送信側管理部25は、メッセージ空間イン
タフェース23が受けたメッセージを、アプリ側通信実
装部56に素通しするだけなので、説明は省略する。ま
た、受信側管理部26も、メッセージ空間インタフェー
ス24が受けたメッセージをアプリ側通信実装部57に
素通しするだけなので、説明は省略する。
【0203】次に、アプリ側通信実装部56、57、メ
ッセージ空間通信実装部58、59について説明する。
【0204】アプリ側通信実装部クラスは、メッセージ
空間通信実装部オブジェクトを属性として持つ。コンス
トラクタが起動された時には、rmiregistory 98に登
録されているメッセージ空間通信実装部58を探し、属
性にセットする。見つけられなかった場合はエラー処理
を行う。なお、メッセージ空間通信実装部58、59
は、予めrmiregistory98に登録されているものとす
る。
【0205】メッセージ空間通信実装部クラスは必ずja
va.rmi.server.Unicast Remote Objectを継承し、また
メッセージ空間管理部クラスを属性として持つ。
【0206】コンストラクタはjava.rmi.Remote Except
ionの例外を必ずスローし、起動された時にはスーパク
ラスのコンストラクタを起動して、引数として渡された
メッセージ空間管理部オブジェクトを属性にセットす
る。
【0207】アプリ側通信実装部56、57のメソッド
では、実行の際に例外が発生しうるので、必ずtry-catc
h文を用いて例外をキャッチする。また、メッセージ空
間通信実装部58、59のメソッドでは、java.rmi.Rem
ote Exceptionの例外を必ずスローするように定義す
る。
【0208】上記第1の実施の形態で述べた個々のイン
タフェースについて、アプリ側通信実装部56、57
と、メッセージ空間通信実装部58、59がどのように
動作するかを、以下に説明する。
【0209】利用開始のためのメソッド(A): (1)送信するメッセージ5のメッセージ空間3における
コンテキストの取得 まずアプリ側通信実装部56において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
8側のメソッドが呼び出される。
【0210】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部56に返す。エラーが起きた場合は、null
を返す。
【0211】(2)送信するメッセージ5の種類を登録す
るメソッド(その1) まずアプリ側通信実装部56において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
8側のメソッドが呼び出される。
【0212】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部56に返す。エラーが起きた場合は、null
を返す。
【0213】(3)送信するメッセージ5の種類を登録す
るメソッド(その2) まずアプリ側通信実装部56において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
8側のメソッドが呼び出される。
【0214】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部56に返す。エラーが起きた場合は、null
を返す。
【0215】(4)送達確認をpush形式で受け取るための
確認用ハンドラを登録するメソッド まずアプリ側通信実装部56において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
8側のメソッドが呼び出される。
【0216】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部56に返す。エラーが起きた場合は、null
を返す。
【0217】(5)受信するメッセージ5の種類を登録す
るメソッド まずアプリ側通信実装部57において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
9側のメソッドが呼び出される。
【0218】次にメッセージ空間通信実装部59におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部57に返す。エラーが起きた場合は、null
を返す。
【0219】(6)メッセージ5をpush形式で受け取るた
めのメッセージハンドラを登録するメソッド まずアプリ側通信実装部57において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
9側のメソッドが呼び出される。
【0220】次にメッセージ空間通信実装部59におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部57に返す。エラーが起きた場合は、null
を返す。
【0221】(7)メッセージ5の不着検出のための、属
性を設定するメソッド アプリ側通信実装部57において、所定のメソッドが実
行される。この中で、スケジュールの設定を行う。メッ
セージ通信は行わない。
【0222】メッセージ送信のためのメソッド(B): (1)メッセージ5を送信するためのメソッド まずアプリ側通信実装部56において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
8側のメソッドが呼び出される。
【0223】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部56に返す。エラーが起きた場合は、null
を返す。
【0224】(2)送達確認を送信するためのメソッド まずアプリ側通信実装部57において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
9側のメソッドが呼び出される。
【0225】次にメッセージ空間通信実装部59におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部57に返す。エラーが起きた場合は、null
を返す。
【0226】(3)送達確認をpull形式で受信するための
メソッド まずアプリ側通信実装部56において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
8側のメソッドが呼び出される。
【0227】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部56に返す。エラーが起きた場合は、null
を返す。
【0228】(4)メッセージ5をpull形式で受信するた
めのメソッド まずアプリ側通信実装部57において、所定のメソッド
が実行される。この中で、メッセージ空間通信実装部5
9側のメソッドが呼び出される。
【0229】次にメッセージ空間通信実装部59におい
て、所定のメソッドが実行され、その実行結果をアプリ
側通信実装部57に返す。エラーが起きた場合は、null
を返す。
【0230】メッセージ検索のためのメソッド(C): (1)メッセージ空間3でやり取りされているメッセージ
5の種類の一覧を返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドが実行される。この中で、メッセージ空間通信実
装部58、59側のメソッドが呼び出される。
【0231】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果を
アプリ側通信実装部56、57に返す。エラーが起きた
場合は、nullを返す。
【0232】(2)指定されたメッセージ5の送信オブジ
ェクト一覧を返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドが実行される。この中で、メッセージ空間通信実
装部58、59側のメソッドが呼び出される。
【0233】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果を
アプリ側通信実装部56、57に返す。エラーが起きた
場合は、nullを返す。
【0234】(3)指定されたメッセージ5の受信オブジ
ェクト一覧を返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドが実行される。この中で、メッセージ空間通信実
装部58、59側のメソッドが呼び出される。
【0235】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果を
アプリ側通信実装部56、57に返す。エラーが起きた
場合は、nullを返す。
【0236】(4)指定されたメッセージ5の履歴一覧を
返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドが実行される。この中で、メッセージ空間通信実
装部58、59側のメソッドが呼び出される。
【0237】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果を
アプリ側通信実装部56、57に返す。エラーが起きた
場合は、nullを返す。
【0238】(5)指定されたメッセージ5が指定された
時間以降にやり取りされているかどうかを調べるための
メソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドが実行される。この中で、メッセージ空間通信実
装部58、59側のメソッドが呼び出される。
【0239】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果を
アプリ側通信実装部56、57に返す。エラーが起きた
場合は、nullを返す。
【0240】利用終了のためのメソッド(D): (1)メッセージ空間3からの離脱を実施するメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドが実行される。この中で、メッセージ空間通信実
装部58、59側のメソッドが呼び出される。
【0241】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果を
アプリ側通信実装部56、57に返す。エラーが起きた
場合は、nullを返す。
【0242】以上のように、本実施の形態においては、
既存の分散システム間通信の実装技術として代表的なJa
vaRMIのための参照モデルのマッピング手法を示した。
これにより、JavaRMIを利用したシステムの開発が容易
になる。また、上記第1の実施の形態で説明したメッセ
ージングシステムと同様のモデルを利用することで、例
えばCORBAやJava及びECJなどのような他の分散システム
間通信の実装技術との間で内部構造に互換性を持たせる
こともできる。したがって、ソフトウェア部品の共通化
/再利用や保守/管理が容易になり、仕様変更の波及範
囲を明確化できる。
【0243】(第4の実施の形態)本実施の形態におい
ては、ECJのための参照モデルのマッピング手法につい
て説明する。
【0244】図31は、分散通信技術にECJを使用した
場合の模式図である。この図31は、上記図26中にお
ける分散通信技術に依存する部分をECJで実現してい
る。分散通信技術に依存しない部分についての具体的な
説明を省略する。
【0245】ECJの主な構成と動作を図32に示す。ECJ
は、イベントID属性とイベントデータ属性を持つイベン
トオブジェクト99、イベントIDに対応する処理を行う
ハンドラ100、イベントIDとそれに対応するイベント
のハンドラ100の対応表101を持つLocalManager1
02から構成される。外部からイベント99を受け付け
たLocalManager102は、自分が持つ対応表101に照
らしあわせて、該当するハンドラ100を起動する。ア
プリケーション開発者は、イベント99に応じたハンド
ラ100を作成する。
【0246】ECJはイベント配送型であるため、分散通
信を行うに際して、あるアクションに対する返り値を取
得する方法がない。そこで、図33に示すWakeup方式を
用いることにより、RMIと同様の操作を実現する。なおW
akeup方式では、ECJのLocalManagerクラスを拡張し、ロ
ックインスタンスとイベントオブジェクトの管理を実施
可能としたECLMS Local Managerクラス、及びECJのUser
Eventクラスを拡張し、イベントID属性とイベントデー
タ属性に加えて返り値イベントID属性を持つクラスECJ
Message Eventクラスを定義して用いる。
【0247】これにより、例えば、イベントID0001と、
引数となるイベントデータと、返り値イベントID1000を
持つイベントを発生させることにより、Wakeup Handler
によって、イベントID1000と、返り値となるイベントデ
ータを持つイベント353を確実に発生させ、返り値を取
得することが可能になる以下にWakeup方式の流れ(上記
図31、図33)について説明する。例として、ID0001
のイベントを発生させて、返り値としてID1000のイベン
トが発生するものとする。 (1)送信側54のアプリ側通信実装部56は、イベントI
D1000とWakeup Handler103を、Local Manager 10
4に登録する。さらに、ID1000のロックインスタンスを
生成し、Local Manager104に登録する。
【0248】(2)イベントIDが0001、イベントデータが
引数となるデータ、返り値イベントIDが1000であるイベ
ント105を、IPマルチキャストを通じてネットワーク
106に配信する。
【0249】(3)送信側54のアプリ側通信実装部56
は、IDが1000であるロックインスタンスが存在している
間はsleepする。
【0250】(4)メッセージ空間3のLocal Manager10
7に、イベントID0001のイベント105が配送される。
【0251】(5)Local Manager107は、イベントID00
01に対応するハンドラを起動する。起動されたハンドラ
は何らかの処理を実行したのち、イベントID1000のイベ
ントを生成して、IPマルチキャストを通じてネットワー
ク106に配信する。
【0252】(6) 送信側54のアプリ側通信実装部56
のLocal Manager104に、イベントID1000のイベント
が配送される。
【0253】(7)Local Manager104は、イベントID10
00に対応するWakeup Handler103を起動する。
【0254】この中でWakeup Handler103は、Local
Manager104にイベントID1000のイベントを保存し、
イベントIDと同じIDのロックインタンスを消去する。
【0255】(8) 送信側54のアプリ側通信実装部56
は、上記(3)のsleepからぬけて、処理を再開する。Loca
l Manager107が保持するイベントID1000のイベント
のイベントデータをもとに処理を進める。
【0256】(9)イベントID1000のイベントを削除し、
イベント登録を解除する。
【0257】分散通信を実施するために、アプリケーシ
ョン開発者は以下の操作を行う。
【0258】まず、ECJのクラスを用いて、LocalManage
r104、107〜109、WakeupHandler103、11
0〜112、イベント105、113〜115を生成す
る。その後、各LocalManagerに対して、イベントIDとア
プリ側通信実装部56、57、メッセージ空間通信実装
部58、59を登録する。ここでは、アプリ側通信実装
部56、57、メッセージ空間通信実装部58、59が
ハンドラとしての役割を持つ。このように、ECJを用い
た場合は、ECJ本来の機能に加えてWakeup方式を用いる
ことで、アプリ側通信実装部とメッセージ空間通信実装
部の分散通信を実現する。
【0259】次に、メッセージ空間インタフェース47
が持つ上記第1の実施の形態で述べたインタフェース定
義をどのように実現するかについて具体的に説明する。
ただし、「メッセージハンドラのためのメソッド(E)」
については、分散通信とは直接関係しないので、説明を
省略する。
【0260】主な通信は上記で述べたWakeup方式を用い
る。また、ECJの機能で実現できる部分に関しては、特
に明示的な通信を行わない場合もある。上記図26にお
けるメッセージ空間インタフェース23、24、送信側
管理部25、受信側管理部36は、RMIマッピングにお
けるものと同じであるので説明を省略する。
【0261】次に、アプリ側通信実装部56、57、メ
ッセージ空間通信実装部58、59について説明する。
【0262】アプリ側通信実装部クラスは、LocalManag
er104、108とトランスポートアダプタを属性とし
て持つ。トランスポートアダプタは、IPマルチキャスト
を実現するうえで必要になる。コンストラクタが起動さ
れた時には、新しいLocalManager104、108が生成
され、属性にセットされる。また、新しいターミナルア
ダプタが生成され、属性にセットされる。生成に失敗し
た場合はエラー処理を行なう。
【0263】メッセージ空間通信実装部58、59のク
ラス定義は、アプリ側通信実装部クラスと同じなので、
説明を省略する。また、メッセージ空間通信実装部クラ
スはハンドラとして振る舞うので、executeメソッドを
オーバライドする。executeメソッドの中で、switch-ca
se文を用いることにより、イベントに対する適切なメソ
ッドを起動することが可能である。なお、switch-case
文に代えてメッセージ空間通信実装部クラスをサブクラ
ス化して実現することも可能である。
【0264】アプリ側通信実装部56、57と、メッセ
ージ空間通信実装部58、59の双方において、イベン
トを送信する時は、例外が発生しうるので、try-catch
文を用いて、例外をキャッチする。
【0265】発生の構成の項で述べた個々のインタフェ
ースについて、アプリ側通信実装部56、57と、メッ
セージ空間通信実装部58、59がどのように動作する
かを以下に説明する。
【0266】利用開始のためのメソッド(A): (1)送信するメッセージ5のメッセージ空間3における
コンテキストの取得 まずアプリ側通信実装部56において、所定のメソッド
がWekeup方式で実行される。この中で送信されたイベン
トにより、メッセージ空間通信実装部58側のメソッド
が起動される。
【0267】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果がイベン
トとして送信され、アプリ側通信実装部56においてWe
keupHandlerが実行される。
【0268】その後、アプリ側通信実装部56において
実行された所定のメソッドは処理を再開し、結果を返
す。エラーが起きた場合の処理や、通信におけるタイム
アウトなどの処理は作成するアプリケーションに依存す
る。
【0269】(2)送信するメッセージ8の種類を登録する
メソッド(その1) まずアプリ側通信実装部56において、所定のメソッド
がWakeup方式で実行される。この中で送信されたイベン
トにより、メッセージ空間通信実装部58側のメソッド
が起動される。次にメッセージ空間通信実装部58にお
いて、所定のメソッドが実行され、その実行結果がイベ
ントとして送信され、アプリ側通信実装部56において
Wakeup Handlorが実行される。
【0270】その後、アプリ側通信実装部56において
実行された所定のメソッドは処理を再開し、結果を返
す。エラーが生じた場合の処理や、通信におけるタイム
アウトなどの処理は作成するアプリケーションに依存す
る。
【0271】(3)送信するメッセージ8の種類を登録する
メソッド(その2) まずアプリ側通信実装部56において、所定のメソッド
がWakeup方式で実行される。この中で送信されたイベン
トにより、メッセージ空間通信実装部58側のメソッド
が起動される。
【0272】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果がイベン
トとして送信され、アプリ側通信実装部56においてWa
keupHandlerが実行される。その後、アプリ側通信実装
部56において実行された所定のメソッドは処理を再開
し、結果を返す。エラーが生じた場合の処理や、通信に
おけるタイムアウトなどの処理は作成するアプリケーシ
ョンに依存する。
【0273】(4)送達確認をpush形式で受け取るための
確認用ハンドラを登録するメソッド アプリ側通信実装部56において、所定のメソッドが実
行される。この中で、アプリ側のLocal Manager 104
にハンドラが登録される。
【0274】(5)受信するメッセージ5の種類を登録す
るメソッド まずアプリ側通信実装部57において、所定のメソッド
がWakeup方式で実行される。この中で送信されたイベン
トにより、メッセージ空間通信実装部59側のメソッド
が起動される。
【0275】次にメッセージ空間通信実装部132におい
て、所定のメソッドが実行され、その実行結果がイベン
トとして送信され、アプリ側通信実装部57においてWa
keupHandlerが実行される。
【0276】その後、アプリ側通信実装部57において
実行された所定のメソッドは処理を再開し、結果を返
す。エラーが起きた場合の処理や、通信におけるタイム
アウトなどの処理は作成するアプリケーションに依存す
る。
【0277】(6)メッセージ5をpush形式で受け取るた
めのメッセージハンドラを登録するメソッド アプリ側通信実装部57において、所定のメソッドが実
行される。この中で、アプリ側のLocal Manager108
にハンドラが登録される。
【0278】(7)メッセージ5の不着検出のための、属
性を設定するメソッド アプリ側通信実装部57において、所定のメソッドが実
行される。この中で、アプリ側のアプリケーションに対
してスケジュールが登録される。
【0279】メッセージ送信のためのメソッド(B): (1)メッセージ5を送信するためのメソッド アプリ側通信実装部56において、所定のメソッドが実
行される。この中で、メッセージをイベントとして配送
する。
【0280】(2)送達確認を送信するためのメソッド アプリ側通信実装部57おいて、所定のメソッドが実行
される。この中で、メッセージをイベントとして配送す
る。
【0281】(3)送達確認をpull形式で受信するための
メソッド まずアプリ側通信実装部56において、所定のメソッド
がWakeup方式で実行される。この中で送信されたイベン
トにより、メッセージ空間通信実装部58側のメソッド
が起動される。
【0282】次にメッセージ空間通信実装部58におい
て、所定のメソッドが実行され、その実行結果がイベン
トとして送信され、アプリ側通信実装部56においてWa
keupHandlerが実行される。
【0283】その後、アプリ側通信実装部56において
実行された所定のメソッドは処理を再開し、結果を返
す。エラーが生じた場合の処理や、通信におけるタイム
アウトなどの処理は作成するアプリケーションに依存す
る。
【0284】(4)メッセージ5をpull形式で受信するた
めのメソッド まずアプリ側通信実装部57において、所定のメソッド
がWakeup方式で実行される。この中で送信されたイベン
トにより、メッセージ空間通信実装部59側のメソッド
が起動される。
【0285】次にメッセージ空間通信実装部59におい
て、所定のメソッドが実行され、その実行結果がイベン
トとして送信され、アプリ側通信実装部57において、
Wakeup Handlerが実行される。
【0286】その後、アプリ側通信実装部57において
実行された所定のメソッドは処理を再開し、結果を返
す。エラーが生じた場合の処理や、通信におけるタイム
アウトなどの処理は作成するアプリケーションに依存す
る。
【0287】メッセージ検索のためのメソッド(C): (1)メッセージ空間3でやり取りされているメッセージ
5の種類の一覧を返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドがWakeup方式で実行される。この中で送信された
イベントにより、メッセージ空間通信実装部58、59
側のメソッドが起動される。
【0288】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果が
イベントとして送信され、アプリ側通信実装部56、5
7においてWakeup Handlerが実行される。
【0289】その後、アプリ側通信実装部56、57に
おいて実行された所定のメソッドが処理を再開し、結果
を返す。エラーが生じた場合の処理や、通信におけるタ
イムアウトなどの処理は作成するアプリケーションに依
存する。
【0290】(2)指定されたメッセージ8の送信オブジェ
クト一覧を返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドがWakeup方式で実行される。この中で送信された
イベントにより、メッセージ空間通信実装部58、59
側のメソッドが起動される。
【0291】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果が
イベントとして送信され、アプリ側通信実装部56、5
7においてWakeup Handlerが実行される。
【0292】その後、アプリ側通信実装部56、57に
おいて実行された所定のメソッドは処理を再開し、結果
を返す。エラーが生じた場合の処理や、通信におけるタ
イムアウトなどの処理は作成するアプリケーションに依
存する。
【0293】(3)指定されたメッセージ8の受信オブジェ
クト一覧を返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドがWakeup方式で実行される。この中で送信された
イベントにより、メッセージ空間通信実装部58、59
側のメソッドが起動される。
【0294】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果が
イベントとして送信され、アプリ側通信実装部56、5
7においてWakeup Handlerが実行される。
【0295】その後、アプリ側通信実装部56、57に
おいて実行された所定のメソッドは処理を再開し、結果
を返す。エラーが生じた場合や、通信におけるタイムア
ウトなどの処理は作成するアプリケーションに依存す
る。
【0296】(4)指定されたメッセージ5の履歴一覧を
返すメソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドがWakeup方式で実行される。この中で送信された
イベントにより、メッセージ空間通信実装部58、59
側のメソッドが起動される。
【0297】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果が
イベントとして送信され、アプリ側通信実装部56、5
7においてWakeup Handlerが実行される。
【0298】その後、アプリ側通信実装部56、57に
おいて実行された所定のメソッドは処理を再開し、結果
を返す。エラーが生じた場合の処理や、通信におけるタ
イムアウトなどの処理は作成するアプリケーションに依
存する。
【0299】(5)指定されたメッセージ5が指定された
時間以降のやり取りされているかどうかを調べるための
メソッド まずアプリ側通信実装部56、57において、所定のメ
ソッドがWakeup方式で実行される。この中で送信された
イベントにより、メッセージ空間通信実装部58、59
側のメソッドが起動される。
【0300】次にメッセージ空間通信実装部58、59
において、所定のメソッドが実行され、その実行結果が
イベントとして送信され、アプリ側通信実装部56、5
7においてWakeup Handlerが実行される。
【0301】その後、アプリ側通信実装部56、57に
おいて実行された所定のメソッドは処理を再開し、結果
を返す。エラーが生じた場合の処理や、通信におけるタ
イムアウトなどの処理は作成するアプリケーションに依
存する。
【0302】利用終了のためのメソッド(D): (1)メッセージ空間3からの離脱を実施するメソッド アプリ側通信実装部56、57において、所定のメソッ
ドが実行される。この中で、アプリ側のLocal Manager
104、108に対してメッセージハンドラを登録解除
する。
【0303】以上のように、本実施の形態においては、
既存の分散システム間通信の実装技術として代表的なEC
Jのための参照モデルのマッピング手法を示した。これ
により、ECJを利用したシステムの開発が容易になる。
また、上記第1の実施の形態で説明したメッセージング
システムと同様のモデルを利用することで、例えばCORB
AやJavaRMIなどのような他の分散システム間通信の実装
技術との間で内部構造に互換性を持たせることもでき
る。したがって、ソフトウェア部品の共通化/再利用や
保守/管理が容易になり、仕様変更の波及範囲を明確化
できる。
【0304】
【発明の効果】以上詳記したように、本発明を利用して
メッセージ交換の実装のための手段や仕組みを統一化す
ることで、統一的なメッセージ交換のモデルを与えるこ
とができる。
【0305】これにより、実装技術が異なる場合であっ
ても内部の構造に互換性を持たせることができる。した
がって、ソフトウェアの共通化/再利用、保守/管理が
容易となり、仕様を変更する場合に影響を受ける範囲を
明確化できる。
【0306】また、本発明を利用して分散システムにお
けるメッセージ交換のためのインタフェースやプロトコ
ルを共通化することにより、実装基盤に依存しない統一
的なメッセージングの仕組みを提供できる。
【0307】また、本発明ではメッセージ交換のための
構造を階層型としているため、業務の細部の仕様変更、
新しい業務の追加、ハードウェア構成の変更など、各種
仕様変更に容易に対処できる。また、例えばメッセージ
の送達確認機能、メッセージ空間に対する検索機能、メ
ッセージ不着信検出及びその対処機能を容易に実現させ
ることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るメッセージン
グシステムを利用する分散システムの構成を例示するブ
ロック図。
【図2】チャネルマネージャの派生を示す図。
【図3】チャネルの派生を示す図。
【図4】キューチャネルによるメッセージ伝達の様子を
示す図。
【図5】ストアチャネルによるメッセージ伝達の様子を
示す図。
【図6】シンプルチャネルによるメッセージ伝達の様子
を示す図。
【図7】メッセージプールの派生を示す図。
【図8】メッセージ空間を利用する場合の流れ図。
【図9】メッセージ送信オブジェクトからみた初期化の
流れ図。
【図10】メッセージ送信オブジェクトからみた運用の
流れ図。
【図11】メッセージ受信オブジェクトからみた初期化
の流れ図。
【図12】メッセージ受信オブジェクトからみた運用の
流れ図。
【図13】同実施の形態に係るメッセージングシステム
の仕組みを実現するための参照モデルを例示するクラス
図。
【図14】チャネルマネージャクラスのサブクラス化を
示す図。
【図15】チャネルクラスのサブクラス化を示す図。
【図16】メッセージプールのサブクラス化を示す図。
【図17】メッセージ送信部による初期化のシーケンス
図。
【図18】メッセージ受信部による初期化のシーケンス
図。
【図19】メッセージ送信部によるメッセージ送信のシ
ーケンス図。
【図20】メッセージ受信部によるpush型のメッセージ
受信のシーケンス図。
【図21】メッセージ受信部によるpull型のメッセージ
受信のシーケンス図。
【図22】メッセージ送信部による終了処理のシーケン
ス図。
【図23】エラーの発生箇所/種類とその対処を担当す
る部分の関係を示す図。
【図24】同実施の形態に係るメッセージングシステム
によるキューを用いたメッセージ交換の一例を示す図。
【図25】キューチャネルで記録される情報を示した図
である。
【図26】同実施の形態に係るメッセージングシステム
のオブジェクト図。
【図27】本発明のメッセージ空間の機能を分散させた
場合のオブジェクト図である。
【図28】CORBAを使用した場合のオブジェクト図(Pus
h型)。
【図29】CORBAを使用した場合のオブジェクト図(Pul
l型)。
【図30】RMIマッピングを示す図。
【図31】ECJマッピングを示す図。
【図32】ECJ構成図。
【図33】Wakeup方式のシーケンス図。
【符号の説明】
1…メッセージ送信オブジェクト 2…メッセージ受信オブジェクト 3…メッセージ空間 4…メッセージハンドラ 5…メッセージ 6…メッセージ空間管理部 7…チャネルマネージャ 8…チャネル 9…メッセージプール 10…メッセージ空間データベース 47…メッセージ空間インタフェース
───────────────────────────────────────────────────── フロントページの続き (72)発明者 秋元 直人 東京都府中市東芝町1番地 株式会社東芝 府中事業所内 (72)発明者 鞍田 友美 東京都府中市東芝町1番地 株式会社東芝 府中事業所内 Fターム(参考) 5B045 BB31 GG01 5B089 GB01 GB10 JA11 KA13 KB06 KB09 KE01

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 分散システムにおけるメッセージ送信側
    とメッセージ受信側との間のメッセージ交換のために、
    コンピュータに、 前記メッセージ送信側からのメッセージを受け付けさせ
    る受付手段と、 前記受付手段で受け付けた前記メッセージをそのメッセ
    ージの種類に応じたチャネルに渡させるメッセージ空間
    管理手段とを有し、 前記チャネルは、前記メッセージの種類に応じた方式で
    前記メッセージ交換を制御することを特徴とするメッセ
    ージングプログラム。
  2. 【請求項2】 分散システムにおけるメッセージ送信側
    とメッセージ受信側との間のメッセージ交換のためにコ
    ンピュータを、 前記メッセージ送信側からのメッセージを受け付け、メ
    ッセージの種類に応じた方式でメッセージ交換を制御す
    る少なくとも一つのチャネルの管理を実現し、受け付け
    たメッセージをそのメッセージの種類に応じたチャネル
    に渡すメッセージ空間管理手段として機能させるための
    メッセージングプログラム。
  3. 【請求項3】 請求項2記載のメッセージングプログラ
    ムにおいて、 前記メッセージ空間管理手段は、定義された共通のイン
    タフェースとその利用手順にしたがってアクセスされる
    ことを特徴とするメッセージングプログラム。
  4. 【請求項4】 請求項2又は請求項3記載のメッセージ
    ングプログラムにおいて、 前記メッセージ空間管理手段は、前記メッセージ送信側
    を宛先とする送達確認メッセージを前記メッセージ受信
    側から受け付け、この受け付けた送信確認メッセージを
    その種類に応じたチャネルに渡すことを特徴とするメッ
    セージングプログラム。
  5. 【請求項5】 請求項1乃至請求項4のいずれか1項記
    載のメッセージングプログラムにおいて、 前記メッセージ空間管理手段は、メッセージ交換の履歴
    情報を記録し、外部からの問い合わせに応じて該当する
    履歴情報を提供することを特徴とするメッセージングプ
    ログラム。
  6. 【請求項6】 分散システムにおけるメッセージ送信側
    とメッセージ受信側との間でメッセージ交換を行うため
    のメッセージング方法において、 前記メッセージ送信側からメッセージを受け付ける工程
    と、 前記メッセージ送信側からのメッセージの種類に応じた
    方式でメッセージ交換を制御するチャネルがない場合
    に、前記メッセージ送信側からのメッセージの種類に対
    応するチャネルを生成する工程と、 前記メッセージ送信側からのメッセージをその種類に対
    応するチャネルに渡す工程と、 前記メッセージ送信側からのメッセージを受けたチャネ
    ルにより、前記メッセージ送信側からのメッセージを前
    記メッセージ受信側に配信する工程とを含むことを特徴
    とする分散システムにおけるメッセージング方法。
  7. 【請求項7】 請求項6記載の分散システムにおけるメ
    ッセージング方法において、 定義された共通のインタフェースとその利用手順にした
    がってメッセージが交換されることを特徴とする分散シ
    ステムにおけるメッセージング方法。
  8. 【請求項8】 請求項6又は請求項7記載の分散システ
    ムにおけるメッセージング方法において、 メッセージを受信した前記メッセージ受信側から送達確
    認メッセージを受け付ける工程と、 前記送達確認メッセージの種類に応じた方式でメッセー
    ジ交換を制御するチャネルがない場合に、前記送達確認
    メッセージの種類に対応するチャネルを生成する工程
    と、 前記送達確認メッセージをその種類に対応するチャネル
    に渡す工程と、 前記送達確認メッセージを受けたチャネルにより、前記
    送達確認メッセージを前記メッセージ送信側に配信する
    工程とを含むことを特徴とする分散システムにおけるメ
    ッセージング方法。
  9. 【請求項9】 請求項6乃至請求項8のいずれか1項記
    載の分散システムにおけるメッセージング方法におい
    て、 メッセージ交換の履歴情報を記録し、外部からの問い合
    わせに応じて該当する履歴情報を提供することを特徴と
    する分散システムにおけるメッセージング方法。
  10. 【請求項10】 分散システムにおけるメッセージ送信
    側とメッセージ受信側との間のメッセージ交換のためメ
    ッセージングシステムにおいて、 前記メッセージ送信側からのメッセージを受け付け、メ
    ッセージの種類に応じた方式でメッセージ交換を制御す
    る少なくとも一つのチャネルの管理を実現し、受け付け
    たメッセージをそのメッセージの種類に応じたチャネル
    に渡すメッセージ空間管理手段を具備したことを特徴と
    するメッセージングシステム。
JP2001063985A 2001-03-07 2001-03-07 メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム Pending JP2002269063A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001063985A JP2002269063A (ja) 2001-03-07 2001-03-07 メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001063985A JP2002269063A (ja) 2001-03-07 2001-03-07 メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム

Publications (1)

Publication Number Publication Date
JP2002269063A true JP2002269063A (ja) 2002-09-20

Family

ID=18922883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001063985A Pending JP2002269063A (ja) 2001-03-07 2001-03-07 メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム

Country Status (1)

Country Link
JP (1) JP2002269063A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006500649A (ja) * 2002-09-23 2006-01-05 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ミドルウェア・アプリケーション・メッセージ/イベント・モデル
JP2006518495A (ja) * 2002-10-31 2006-08-10 ロッキード マーティン コーポレーション 改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法
JP2010015509A (ja) * 2008-07-07 2010-01-21 Mori Seiki Co Ltd 加工プログラムチェック装置
US7987341B2 (en) 2002-10-31 2011-07-26 Lockheed Martin Corporation Computing machine using software objects for transferring data that includes no destination information
US8073974B2 (en) 2004-10-01 2011-12-06 Lockheed Martin Corporation Object oriented mission framework and system and method
JP2016018222A (ja) * 2014-07-04 2016-02-01 株式会社日立製作所 キューサーバ

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204673A (ja) * 1991-09-30 1993-08-13 Internatl Business Mach Corp <Ibm> 名前付きパイプを用いるプロセス間通信の方法及びプロセス
JPH11149383A (ja) * 1997-11-17 1999-06-02 Toshiba Tec Corp プロセス間通信制御装置
JP2000250767A (ja) * 1999-02-25 2000-09-14 Sony Corp コンピュータネットワーク及びトランザクションデータの送信方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204673A (ja) * 1991-09-30 1993-08-13 Internatl Business Mach Corp <Ibm> 名前付きパイプを用いるプロセス間通信の方法及びプロセス
JPH11149383A (ja) * 1997-11-17 1999-06-02 Toshiba Tec Corp プロセス間通信制御装置
JP2000250767A (ja) * 1999-02-25 2000-09-14 Sony Corp コンピュータネットワーク及びトランザクションデータの送信方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006500649A (ja) * 2002-09-23 2006-01-05 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ミドルウェア・アプリケーション・メッセージ/イベント・モデル
JP2006518495A (ja) * 2002-10-31 2006-08-10 ロッキード マーティン コーポレーション 改善された計算アーキテクチャを有する計算マシン、関連システム、並びに、方法
US7987341B2 (en) 2002-10-31 2011-07-26 Lockheed Martin Corporation Computing machine using software objects for transferring data that includes no destination information
US8250341B2 (en) 2002-10-31 2012-08-21 Lockheed Martin Corporation Pipeline accelerator having multiple pipeline units and related computing machine and method
US8073974B2 (en) 2004-10-01 2011-12-06 Lockheed Martin Corporation Object oriented mission framework and system and method
JP2010015509A (ja) * 2008-07-07 2010-01-21 Mori Seiki Co Ltd 加工プログラムチェック装置
JP2016018222A (ja) * 2014-07-04 2016-02-01 株式会社日立製作所 キューサーバ

Similar Documents

Publication Publication Date Title
US7702729B2 (en) Event heap: a coordination infrastructure for dynamic heterogeneous application interactions in ubiquitous computing environments
Volter et al. Remoting patterns
US7603476B1 (en) Pseudo-synchronous messaging
JP4528742B2 (ja) 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法
US7428597B2 (en) Content-based routing system and method
Van Cutsem et al. Ambienttalk: object-oriented event-driven programming in mobile ad hoc networks
JP4825927B2 (ja) 電子商取引会話におけるコレオグラフィ化されたメッセージ交換とワークフロー・プロセスとを調整する方法及び装置
US6195685B1 (en) Flexible event sharing, batching, and state consistency mechanisms for interactive applications
US8065657B2 (en) Exchange infrastructure system and method
US7676538B2 (en) Systems and methods for application view transactions
US20040068479A1 (en) Exploiting asynchronous access to database operations
CN101277212B (zh) 资源管理平台及资源管理方法
JP2004524600A (ja) 異種分散事業アプリケーション統合オブジェクトの集中管理提供システム及び集中管理提供方法
CN101276269B (zh) 可扩展资源管理平台
WO2000045238A2 (en) Dynamic configuration of activators in a client-server environment
JP2002269063A (ja) メッセージングプログラム、及び分散システムにおけるメッセージング方法、並びにメッセージングシステム
US7206843B1 (en) Thread-safe portable management interface
US8316083B2 (en) System and method for client interoperability
Schlegel Communication patterns as key towards component interoperability
Kinny The Agentis Agent InteractionModel
Aitenbichler et al. Distributed execution of S-BPM business processes
Davies et al. Websphere mq v6 fundamentals
Aldred et al. Understanding the challenges in getting together: The semantics of decoupling in middleware
Carbon et al. Mobility in the virtual office: a document-centric workflow approach
EP2715555B1 (en) Managing and simplifying distributed applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100406