説明

メッセージ通信装置及びその処理方法

【課題】メッセージを受信する場合、分割取得する方法を提供する。
【解決手段】ネットワークを介して他の装置101からメッセージを受信するメッセージ通信装置において、メッセージを分割して取得するためのインタフェース定義を解釈する。そして、そのインタフェース定義を解釈した結果に応じて、受信したメッセージを分割したオブジェクトに変換する。また、そのインタフェース定義を解釈した結果に応じて、分割して設定されたオブジェクトのデータを一つのメッセージに変換して送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して他の装置とメッセージを通信するメッセージ通信装置及びその処理方法に関する。
【背景技術】
【0002】
近年、ネットワークを介して複数の装置同士がデータを授受するWebサービス技術を用いたパーソナルコンピュータ(PC)や機器の連携が一般的に行なわれている。Webサービスにおけるデータのやり取りでは、一般的に通信装置が、アプリケーションが設定したオブジェクトをXMLデータにして送信し、受信したXMLデータをオブジェクトにしてアプリケーションに返す。サービスを利用する側の通信装置上のアプリケーションは、サービスを提供する側のアプリケーション呼び出しの引数に、送信するオブジェクトを設定し、受信したオブジェクトを戻り値として受け取る。一方、サービスを提供する側の通信装置上のアプリケーションは、アプリケーション呼び出しの引数に、サービス利用側からのオブジェクトを受信し、戻り値をオブジェクトとして返す。ここで、オブジェクトとは、アプリケーションの環境においてデータ、或いはデータとデータの操作を指定する実体である。
【0003】
このようなアプリケーション呼び出しにおいて、サービス提供側のアプリケーションがどのようなオブジェクトを受け取り、どのようなオブジェクトを返すかをインタフェース定義文書として事前に定義する。このインタフェース定義文書の一般的な例としてXMLをベースとした言語仕様であるWebサービス記述言語(WSDL)が存在する。ここで、サービス提供側もサービス利用側も、このWSDLに従ってサービスを実行するためのオブジェクトを生成する。このWSDLには、インタフェースの命令単位を示すオペレーションの記述があり、オペレーション毎にサービス利用側とサービス提供側との間で授受するメッセージ構造が規定されている。また、送信データ、受信データのデータ型情報も規定されている。
【0004】
例えば、特許文献1には、WSDLに従ってサービス利用側がサービスを実行するためのオブジェクトやサービス提供側がサービスのインタフェースを指定するオブジェクトをサービス実行オブジェクトとして自動生成することが開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−164264号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、アプリケーション呼び出しを行なう際に、アプリケーションが受け取るオブジェクトや設定するオブジェクトが大量のデータを保持可能な型である場合がある。例えば、配列のデータやリスト型は格納するデータ数に制限がないため、大量のデータを設定可能である。また、単なる文字列型でもデータが膨大な場合があり、そのようなオブジェクトの作成は、特に、組込み機器のようなメモリ容量が少ない環境下で処理を実行する場合、メモリ容量の制限により、実行できない場合がある。
【課題を解決するための手段】
【0007】
本発明は、ネットワークを介して他の装置からメッセージを受信するメッセージ通信装置であって、
メッセージを分割して取得するためのインタフェース定義を解釈する解釈手段と、
前記インタフェース定義を解釈した結果に応じて、前記受信したメッセージを分割したオブジェクトに変換するオブジェクト変換手段と、
を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、他の装置から大量のデータが送られてきた場合や他の装置に大量のデータを送信したい場合、大量のメモリを消費せずに動作することができる。
【図面の簡単な説明】
【0009】
【図1】本実施形態におけるメッセージ通信装置のハードウェア構成例を示す図。
【図2】本実施形態におけるメッセージ通信装置のソフトウェア構成例を示す図。
【図3】サービス実行オブジェクト生成処理部の処理を示すフローチャート。
【図4】サービス実行処理部の処理を示すフローチャート。
【図5】サービスを定義する情報を記述したWSDLファイルの一例を示す図。
【図6】WSDLファイルに対応する拡張対象設定ファイルの一例を示す図。
【図7】生成されたサービス実行オブジェクトの一例を示す図。
【図8】アプリケーションのサービス実行オブジェクト使用例を示す図。
【図9】サービスへの送信メッセージの一例を示す図。
【図10】サービスからの受信メッセージの一例を示す図。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。まず、メッセージ通信装置のハードウェア構成及びソフトウェア構成を、図1及び図2を用いて説明する。図1において、他の装置101とメッセージ通信装置102とはネットワーク113を介してWebサービスのメッセージを授受するパーソナルコンピュータ(PC)などのコンピュータである。ここで、他の装置101はサービスを提供する側(サービス提供側)でもサービスを利用する側(サービス利用側)でも良い。
【0011】
メッセージ通信装置102には、CPU103、メモリ104、HD(ハードディスク)装置105、表示ボード106、周辺コントローラ107、ネットワークI/F108が含まれる。CPU103はプログラムに従ってメッセージ通信装置102の各処理部の処理を実行する。プログラムはHD装置105やメモリ104に格納されており、CPU103がプログラムを実行時にRAMに読み込まれる。メモリ104はプログラムや制御データを格納するROMとCPU103の作業領域としてのRAMを含み、更にXMLの要素やオブジェクトも格納される。
【0012】
HD装置105はハードディスクへのアクセスを制御するインタフェースを含み、各種データを記憶する。表示ボード106はディスプレイ装置109を接続するためのインタフェースを含み、メッセージ通信装置102の状態や処理結果をディスプレイ装置109に表示させる。周辺コントローラ107はマウス110やキーボード111を接続するためのインタフェースを含み、メッセージ通信装置102への指示や各種入力を制御する。ネットワークI/F108はネットワーク113との間で通信するためのインタフェースを含み、他の装置101との通信を制御する。
【0013】
システムバス112は上述の各部を接続する。ネットワーク113は他の装置101とメッセージ通信装置102がメッセージを通信できればどのような形態でもよく、例えばインターネット、WAN、LANなどである。
【0014】
図2は、本実施形態におけるメッセージ通信装置102のソフトウェア構成例を示す図である。Webサービス記述言語ファイル(WSDLファイル)201は、Webサービスのインタフェース定義を記述したWSDLの仕様に従った定義文書である。具体的には、サービス提供側のアプリケーションがどのようなオブジェクトを受け取り、どのようなオブジェクトを返すのかに関するメッセージのインタフェースを記述したファイルである。拡張対象設定ファイル202は、WSDLファイル201に記述されているメッセージの送信データや受信データのデータ型に対して、所定の拡張データ型を生成するか否かをXMLで記述したファイルである。尚、WSDLファイル201や拡張対象設定ファイル202は、ユーザがディスプレイ装置109とマウス110やキーボード111とを使用して指定するファイルである。
【0015】
メッセージ通信装置102には、アプリケーション203、サービス実行オブジェクト生成処理部204、サービス実行処理部205が含まれる。サービス実行オブジェクト生成処理部204は、アプリケーション203からWSDLファイル201と拡張対象設定ファイル202を受け取り、ファイルの記述内容を解釈してサービス実行オブジェクトを自動生成する。サービス実行処理部205は、アプリケーション203からの要求に応じて、サービス実行オブジェクトを用いて他の装置101にメッセージを送信、或いは他の装置101からメッセージを受信する。サービス実行処理部205は、他の装置101がサービス利用側であればサービス提供側として機能し、他の装置101がサービス提供側であればサービス利用側として機能する。
【0016】
メッセージ通信装置102におけるアプリケーション203は、他の装置101へ送信するメッセージのオブジェクトを設定し、また他の装置101から受信したメッセージのオブジェクトを受け取る。
【0017】
サービス実行オブジェクト生成処理部204には、拡張対象型読取判定部206、拡張データ型生成部207、サービス実行オブジェクト生成部208が含まれる。拡張対象型読取判定部206は、アプリケーション203から受け取ったWSDLファイル201と拡張対象設定ファイル202をパースして読み込み、どの型の拡張データ型を生成するかを判定する。そして、拡張データ型が必要な型に対して、その生成を拡張データ型生成部207に要求する。拡張データ型生成部207は、拡張対象型読取判定部206から指定された型の拡張データ型を生成する。サービス実行オブジェクト生成部208は、拡張対象型読取判定部206から渡された情報と、拡張データ型生成部207で生成された拡張データ型に基づいて他の装置101とメッセージの送受信が可能なサービス実行オブジェクト209を生成する。
【0018】
サービス実行処理部205には、サービス実行オブジェクト209、メッセージ変換部210、記憶領域211、オブジェクト変換部212が含まれる。サービス実行オブジェクト209は、サービス実行オブジェクト生成部208によって生成されたサービス実行オブジェクトであり、アプリケーション203が使用する。サービス実行オブジェクト209には、メッセージを送受信するために必要な引数と戻り値が存在する。サービス実行処理部205がサービス提供側の場合、アプリケーション203はサービス実行オブジェクト209の引数に他の装置101から受信したオブジェクトを受け取り、戻り値に他の装置101に送信するオブジェクトを設定する。一方、サービス実行処理部205がサービス利用側の場合、アプリケーション203はサービス実行オブジェクト209の引数に他の装置101に送信するオブジェクトを設定し、戻り値に他の装置101から受信したオブジェクトを受け取る。また、サービス利用側の場合には、サービス実行オブジェクト209を呼び出す際に、図1に示すディスプレイ装置109とマウス110やキーボード111が使用される。
【0019】
メッセージ変換部210は、必要な場合、サービス実行オブジェクト209の引数又は戻り値として渡されたオブジェクトを記憶領域211に一時的に格納し、メッセージを作成して他の装置101に送信する。ここで、必要な場合とは、データの型が拡張データ型になっている場合である。また、データの型が拡張データ型になっていない場合は、そのままメッセージを作成して他の装置101に送信する。
【0020】
記憶領域211は、メッセージ変換部210がサービス実行オブジェクト209から渡されたデータを一時退避させる領域である。また、記憶領域211はオブジェクト変換部212が他の装置101から渡されたデータを一時退避させる領域である。具体的には、図1に示すHD装置105が使用される。
【0021】
オブジェクト変換部212は、他の装置101からメッセージを受け取り、必要な場合、そのデータを記憶領域211に一時的に格納し、サービス実行オブジェクトの引数又は戻り値としてオブジェクトを返す。ここで、必要な場合とは、データを格納する型が拡張データ型になっている場合である。また、データを格納する型が拡張データ型になっていない場合は、そのままサービス実行オブジェクトの引数又は戻り値としてオブジェクトを返す。
【0022】
ここで、本実施形態におけるメッセージ通信装置の特徴的な処理を、図3乃至図10を用いて説明する。まず、サービス実行オブジェクト生成処理部204の処理を、図3を用いて説明する。この処理では、図5に示すようなサービスを定義している情報を記述したWSDLファイル201と図6に示すような拡張対象設定ファイル202とを読み込み、サービスを実行することが可能なサービス実行オブジェクト209を生成する。
【0023】
まず、S301において、拡張対象型読取判定部206が拡張対象設定ファイル202を読み込む。拡張対象設定ファイル202は、どの型を拡張データ型に変更するかを記述したファイルであり、必ずしも指定されていなくても良い。尚、指定がなければ、大量のデータを保持可能な型全てが拡張データ型になる。ここで、大量のデータを保持可能な型とは、配列やリスト型など複数のデータを保持することが可能な型を指す。また、単なる文字列型でもデータ量に制限がない場合は膨大なデータを保持できるため、そのような型も含まれる。ここでは、拡張対象設定ファイル202を指定した場合を説明する。次に、S302において、拡張対象型読取判定部206はWSDLファイル201を読み込み、S303において、オペレーションを検索する。図5に示すWSDLファイル201では、符号501で示すMemberというサービスで、符号502で示すgetMemberInfoというオペレーションを持つ。
【0024】
検索の結果、オペレーションを発見しなければ、処理を終了するが、オペレーションを発見するとS304へ処理を進める。S304では、そのオペレーションの型情報(符号503及び504)から、その型が大量のデータを保持可能な型か否かを判定する。この例では、符号506で示す引数の型及び符号508で示す戻り値の型が何れも配列であり、符号505及び507で示すように、その上限値が無制限であり、大量のデータを保持可能であると判定する。また、戻り値の型が保持する内部フィールドの情報(符号509)においても、大量のデータを保持可能なString型(文字列型)や上限値が無制な配列が存在する。よって、拡張対象型読取判定部206はオペレーションに大量のデータを保持可能な型が存在すると判定し(S304でYes)、S305へ処理を進める。
【0025】
S305では、拡張対象型読取判定部206が図6に示す拡張対象設定ファイル202に基づき、拡張データ型の生成が指定されているか否かを判定する。拡張対象設定ファイル202では、MemberサービスにおけるgetMemberInfoオペレーションの引数の型と戻り値の型を拡張データ型に指定している。符号601で示す引数の型の拡張設定はtrueと記述し、文字列型の配列を拡張データ型に指定している。また、符号602で示す戻り値の型の拡張設定でもtrueと記述し、MemberInfo型の配列を拡張データ型に指定している。このMemberInfo型は、符号603で示す複数の内部フィールドを保持する。その中で、大量メッセージを保持可能な型として1つの配列と4つの文字列型がある。そのうち、NameとAddressとTelはfalseと記述し、拡張データ型に指定していない。一方、Listはtrueとし、array型でデータを取得する設定をtrue、一度に取得する配列の個数設定のlengthを5としている。
【0026】
ここで、array型はデフォルトでfalseが設定され、データは一つ一つ設定又は取得できる拡張データ型が生成される。しかし、array型の設定をtrueに指定した場合、データは設定された個数分の配列を設定又は取得できる拡張データ型が生成される。この詳細は、図8を用いて更に後述する。そして、Messageは拡張設定をtrueと記述し、一度に取得する文字列の長さ設定のlengthを5としている。このMessageは配列ではないので、array型の設定は必ずfalseとなる。
【0027】
上述のMemberInfo型のうち拡張設定がFalseに指定されているNameとAddressとTelは拡張データ型の生成は行なわない(S305でYes)。一方、拡張設定がtrueに指定されている引数の型、MemberInfo型のうちListとMessageは拡張データ型の生成を行なう(S305でNo)。拡張データ型生成部207が、拡張対象型読取判定部206から生成を要求された型の拡張データ型を生成する。拡張対象設定ファイル202において、対象の型の生成を明示的にfalseに指定しない限り、拡張データ型の生成はtrueとして動作する。
【0028】
S306において、拡張データ型生成部207は生成するサービス実行オブジェクトがサービス利用側用か、サービス提供側用かを判定する。図7に示す例では、サービス実行オブジェクト209がサービス利用側であるので(S306でNo)、S307へ処理を進め、拡張する型が引数の型か否かを判定する。ここで、戻り値の型であるMemberInfoのうちListとMessageはS307でNoと判定され、S308へ処理を進め、受信用の拡張データ型として生成される。受信用のMemberInfo拡張データ型のインタフェース706には、MemberInfoのデータを一つ一つ取得するnextMemberInfoメソッドと次のデータがまだあるかを通知するhasNextメソッドが存在する。
【0029】
MemberInfoのうちListは受信用のString配列拡張データ型であり、そのインタフェース707にはsetLength、nextStringArray、hasNextの各メソッドが存在する。Listの配列拡張設定は、array型の設定がtrueに指定されているので、nextStringArrayメソッドの戻り値はStringの配列になる。一度に取得する配列の個数が5に設定されているので、5個ずつ配列が返される。尚、setLengthメソッドを使用して一度に取得する配列の個数を途中から変更することも可能である。そして、hasNextメソッドによって次の配列がまだあるかを通知する。
【0030】
MemberInfoのうちMessageは受信用のString拡張データ型であり、そのインタフェース708にはsetLength、nextString、hasNextの各メソッドが存在する。Messageの拡張設定は、一度に取得するデータの長さが5に設定されているので、そのデータの長さ分、文字列データを取得する。尚、setLengthメソッドを使用して一度に取得するデータの長さを途中から変更することも可能である。そして、hasNextメソッドによってデータの残りがまだあるかを通知する。
【0031】
一方、引数の型である文字列型はS307でYesと判定され、S309へ処理を進め、送信用の拡張データ型として生成される。送信用のString拡張データ型のインタフェース704には文字列型のデータを一つ一つ設定するaddStringメソッドと全てのデータを設定し終えたことを通知するfinishメソッドが存在する。
【0032】
また、S306でメッセージ通信装置102がサービス提供側の場合、S310へ処理を進め、サービス利用側の場合とは逆に、戻り値の型が送信用、引数の型が受信用の拡張データ型として生成する。次に、S311において、オペレーションに存在する全ての型の処理を終了するまで上述のS304以降の処理を繰り返す。そして、オペレーションに存在する全ての型の処理を終了するとS312へ処理を進め、サービス実行オブジェクト生成部208がサービス実行オブジェクト209を生成する。その際、拡張データ型生成部207によって生成された拡張データ型が存在する場合はそれを使用する。
【0033】
ここで生成されたサービス実行オブジェクト209のインタフェース701には、図7に示すように、サービス名に対応するMemberのインタフェース701が生成される。図5の502で記述されていたオペレーション名に対応するgetMemberInfoメソッドが定義されている。また、引数の型702としてサービス実行オブジェクト生成部208によって生成された送信用の拡張データ型が設定されている。メッセージ通信装置102がサービス利用側の場合、このサービス実行オブジェクトを使用する際の送信の型になる。また、戻り値の型703としてサービス実行オブジェクト生成部208によって生成されたMemberInfoの受信用の拡張データ型が設定されている。サービス利用側の場合、このサービス実行オブジェクトを使用する際の受信の型になる。
【0034】
複合型のMemberInfoクラスのインタフェース705が生成されている。内部には、図5の511に対応する各フィールドが定義されている。この配列のフィールド名Listと文字列型のフィールド名Messageは、型がサービス実行オブジェクト生成部208によって生成された受信用のString拡張データ型になっている。文字列型のフィールド名NameとAddress、配列のフィールド名Telは、拡張対象設定ファイル202において、拡張データ型を生成しない設定になっていたため、図5に定義してある型と同じである。
【0035】
次に、サービス実行処理部205の処理を、図4を用いて説明する。この処理は、サービス実行処理部205が、サービス実行オブジェクト生成処理部204が生成したサービス実行オブジェクト209を用いて他の装置101とメッセージを送受信する。尚、アプリケーション203のサービス実行オブジェクト使用例を図8に示す。また、サービスへの送信メッセージの一例を図9に、サービスからの受信メッセージの一例を図10に示す。
【0036】
まず、S401において、サービス実行処理部205がサービス提供側かサービス利用側かを判定する。ここでは、サービス利用側であるとして説明を進める。サービス利用側である場合(S401でNo)、まずメッセージ変換部210がアプリケーション203の処理を待つ。アプリケーション203は、オペレーションを呼び出す際に、最初に図7の704に示す送信用のString拡張データ型であるStringSendクラスのインスタンス801を生成する。即ち、S402において、アプリケーション203が送信用の拡張データ型のインスタンスを生成したことになる。そして、符号802に示すように、addStringメソッドを使用して送信するデータである会員のIDを一つ一つ分割して設定する。ここで、メッセージ変換部210は、S403において、設定されたデータをファイルに逐次書き出し、記憶領域211に退避させる。そして、アプリケーション203がfinishメソッド803を呼ぶと、データの設定が全て終了したことを意味し、メッセージ変換部210はファイルへの書き出しを終了し、ファイルをクローズする。
【0037】
次に、アプリケーション203は、Memberクラスのインスタンス804を生成し、データを設定したStringSendクラスのインスタンスを引数に設定してgetMemberInfoメソッド805を実行する。ここで、メッセージ変換部210は、S404を実行し、次のS405において、設定された送信の型に拡張データ型が含まれるか否かを判定する。StringSendクラスは拡張データ型であるので(S405でYes)、S406へ処理を進め、設定されたデータを書き出したファイルを記憶領域211から取得する。次に、S407において、他の装置101に対して送信するメッセージ(図9)を作成して送信する。これにより、サービス提供側である他の装置101にアプリケーション203がセットした複数のID情報が送信される。
【0038】
アプリケーション203がセットしたIDの数が10000個だった場合、これを通常のサービス実行オブジェクトによって送信する場合、Stringのオブジェクトの配列が10000個できることになる。しかし、本実施形態で生成されたサービス実行オブジェクト209を使用すると、S403で、一旦ファイルにそのデータの書き出しを行なうので、オブジェクトをデータの数分生成しない。よって、メモリの少ない組み込みシステム上でアプリケーションを実行したい場合に、メモリの枯渇を防ぎ、他の装置に大量のデータを送信することができる。
【0039】
次に、サービス実行処理部205がサービス利用側の場合(S408でNo)、処理がオブジェクト変換部212に移り、サービス提供側である他の装置101からメッセージを受信するのを待つ。まず、S409において、送信したIDに対応する会員情報を他の装置101から受信する。受信したメッセージを図10に示す。各会員情報はMemberInfo要素内に記述されている。次に、S410において、呼び出したサービス実行オブジェクト209の受信の型に、拡張データ型が含まれるか否かを判定する。
【0040】
ここで、実行したgetMemberInfoオペレーションの受信の型がMemberInfoの拡張データ型であるので(S410でYes)、S411へ処理を進め、受信したデータをファイルに書き出し、記憶領域211に退避させる。次に、S412において、呼び出したサービス実行オブジェクト209の戻り値としてオブジェクトをアプリケーション203に受け渡す。アプリケーション203は、オペレーション呼び出し805の戻り値として、受信用のMembeInfo拡張データ型であるMemberInfoReceiveクラスを受け取る。MemberInfoReceiveクラスのhasNextメソッド806の戻り値がtrueである限り、MemberInfoクラスのデータが存在する。アプリケーション203は、hasNextメソッドの戻り値がtrueである限り、nextStringメソッド807を呼び出す。
【0041】
オブジェクト変換部212はS413において、アプリケーション203が拡張データ型のオブジェクトであるMemberInfoクラスのデータを要求したと判定する。これにより、S414において、MemberInfoクラスのデータを格納してあるファイルを記憶領域211から取得し、そのデータをアプリケーション203にnextStringメソッドが呼び出されるたびに渡す。そして、アプリケーション203が、取得したMemberInfoクラスから内部に保持するフィールドの値を取得する場合、拡張データ型の型ではないフィールドは、オブジェクト変換部212が、そのまま全てのデータを格納する。フィールド名Telは、型が配列のStringであるため、アプリケーション203はその配列の数分だけループをまわしてデータを取得する(808)。
【0042】
一方、フィールド名Listのデータの場合は、型が受信用のString配列拡張データ型であるStringArrayReceiveクラス809である。そして、StringArrayReceiveクラスのhasNextメソッドの戻り値がtrueである限り(810)、データが存在する。また、StringArrayReceiveクラスのsetLengthメソッドを呼び出し、一度に取得する配列の個数を設定することができる。上述したように、一度に取得する配列の個数を5に設定していたため、5個ずつ配列を取得することができる。アプリケーション203は、hasNextメソッドの戻り値がtrueである限り、nextStringArrayメソッドを呼び出し、オブジェクト変換部212は、Stringクラスの配列を5個ずつ分割して返す(811)。更に、フィールド名Messageのデータの場合は、型が受信用のString拡張データ型であるStringReceiveクラス812である。そして、StringReceiveクラスのsetLengthメソッドを呼び出し、取得するデータの文字数を設定する(813)。尚、取得するデータの文字数を5に設定していたが、ここでは10に変更した。hasNextメソッドの戻り値がtrueである限り(814)、データが存在する。アプリケーション203は、hasNextメソッドの戻り値がtrueである限り、nextStringメソッドを呼び出す。オブジェクト変換部212は文字列データを文字数10毎に分割して返す(815)。この例では、サービス利用側であるので(S415でNo)、処理を終了する。
【0043】
図10に示すように、送信された10000個のIDに対応して10000個の会員情報が返信されてくる。そのため、送信時と同様に、通常のサービス実行オブジェクトによって受信する際にはMemberInfoのオブジェクト配列が10000個できることになってしまう。しかし、本実施形態で生成されたサービス実行オブジェクト209を使用すると、S414で受信したデータを一旦ファイルに書き出し、アプリケーションから要求される毎に1つのオブジェクトを生成してデータ渡す。従って、メモリの少ない組み込みシステム上でアプリケーションを実行したい場合に、メモリの枯渇を防ぎ、他の装置から大量のデータを受信することができる。
【0044】
また、MemberInfoクラス内部のフィールドにおいて、Telは配列の数が膨大になる可能性は低いので配列のままで良いが、Listは配列の数が膨大になる可能性が高いので、拡張データ型にしたい場合がある。また、文字列型のデータでもデータ量が膨大な場合は拡張データ型にしたいということもある。その場合は、図6のように、拡張対象設定ファイル202を作成することで、アプリケーションがデータの内容に応じて自由に拡張データ型にする型の指定が可能である。
【0045】
一方、サービス実行処理部205がサービス提供側である場合は、上述のサービス利用側の処理と逆の処理になる。最初に、オブジェクト変換部212がサービス利用側である他の装置101からメッセージを受信するのを待つ。そして、メッセージ変換部210でアプリケーション203の処理を待つ。
【0046】
本実施形態では、メッセージ変換部210がアプリケーション203からStringSendクラスのインスタンスに設定されたデータを一旦ファイルに書き出す。そして、アプリケーション203がgetMemberInfoメソッドを呼び出した時に、一旦書き出したファイルからデータを取得し、他の装置101へそのデータを送信していた。しかし、アプリケーション203がまだデータを何も設定していないStringSendクラスのインスタンスを引数に設定し、先にgetMemberInfoメソッドを呼び出しても良い。その場合、アプリケーション203からそのインスタンスにaddStringメソッドによってデータを設定されると、そのデータをファイルには書き出さずに、設定されたデータをすぐにメッセージとして書き出し、他の装置101へ逐次送信する。アプリケーション203がfinishメソッドを呼び出すと、データの設定が終了したと判断し、メッセージの最後を書き出して、送信を終了する。
【0047】
また、図3に示す処理では、拡張対象設定ファイル202において、対象の型の生成を明示的にfalseに指定しない限り、拡張データ型の生成はtrueとして動作した。しかし、拡張対象設定ファイル202において、対象の型の生成を明示的にtrueに指定しない限り、拡張データ型の生成を行なわないようにしても構わない。
【0048】
更に、本実施形態では、大量のデータを保持可能な型として配列や文字列型を例に挙げて説明した。しかし、List型やVector型なども大量のデータを保持可能な型の対象となることは明らかである。

【特許請求の範囲】
【請求項1】
ネットワークを介して他の装置からメッセージを受信するメッセージ通信装置であって、
メッセージを分割して取得するためのインタフェース定義を解釈する解釈手段と、
前記インタフェース定義を解釈した結果に応じて、前記受信したメッセージを分割したオブジェクトに変換するオブジェクト変換手段と、
を有することを特徴とするメッセージ通信装置。
【請求項2】
ネットワークを介して他の装置へメッセージを送信するメッセージ通信装置であって、
メッセージを分割して設定するためのインタフェース定義を解釈する解釈手段と、
前記インタフェース定義を解釈した結果に応じて、分割して設定されたオブジェクトのデータを一つのメッセージに変換して送信するメッセージ変換手段と、
を有することを特徴とするメッセージ通信装置。
【請求項3】
前記オブジェクト変換手段は、前記インタフェース定義に記述された受信データを指定するデータ型を拡張した、前記メッセージを分割して取得することを可能とする拡張データ型を使用して前記受信したメッセージを前記拡張データ型のオブジェクトに変換することを特徴とする請求項1に記載のメッセージ通信装置。
【請求項4】
前記メッセージ変換手段は、前記インタフェース定義に記述された送信データを指定するデータ型を拡張した、前記メッセージを分割して設定することを可能とする拡張データ型を使用して前記拡張データ型に設定されたオブジェクトを一つのメッセージに変換することを特徴とする請求項2に記載のメッセージ通信装置。
【請求項5】
前記データ型に、所定の型が含まれているか否かを判定し、含まれていると判定された場合に、前記拡張データ型を生成してサービスを実行するためのオブジェクトを生成し、含まれていないと判定された場合には、定義されている型と同じ型を使用してサービスを実行するためのオブジェクトを生成する手段を更に有することを特徴とする請求項3又は4に記載のメッセージ通信装置。
【請求項6】
前記拡張データ型の生成を行なう型を指定するファイルを読み取り、拡張の設定がある型の拡張データ型を生成することを特徴とする請求項5に記載のメッセージ通信装置。
【請求項7】
ネットワークを介して他の装置からメッセージを受信するメッセージ通信装置の処理方法であって、
解釈手段が、メッセージを分割して取得するためのインタフェース定義を解釈する解釈工程と、
オブジェクト変換手段が、前記インタフェース定義を解釈した結果に応じて、前記受信したメッセージを分割したオブジェクトに変換するオブジェクト変換工程と、
を有することを特徴とするメッセージ通信装置の処理方法。
【請求項8】
ネットワークを介して他の装置へメッセージを送信するメッセージ通信装置の処理方法であって、
解釈手段が、メッセージを分割して設定するためのインタフェース定義を解釈する解釈工程と、
メッセージ変換手段が、前記インタフェース定義を解釈した結果に応じて、分割して設定されたオブジェクトのデータを一つのメッセージに変換して送信するメッセージ変換工程と、
を有することを特徴とするメッセージ通信装置の処理方法。
【請求項9】
請求項7又は8に記載のメッセージ通信装置の処理方法をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図5】
image rotate


【公開番号】特開2010−244143(P2010−244143A)
【公開日】平成22年10月28日(2010.10.28)
【国際特許分類】
【出願番号】特願2009−89578(P2009−89578)
【出願日】平成21年4月1日(2009.4.1)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】