説明

情報処理装置、情報処理方法、及び情報処理プログラム

【課題】所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることを目的とする。
【解決手段】通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有し、通信インタフェース提供手段は、遠隔呼び出しに係るメソッドを呼び出すためのインタフェースの呼び出しに応じて前記メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている通信プラグイン手段に予め定められたインタフェースを介して要求し、通信プラグイン手段は、当該通信プラグイン手段が対応する通信プロトコルエンジン手段にシリアライズ及びデシリアライズの実行を要求し、通信プロトコルエンジン手段は、シリアライズ及びデシリアライズを実行することにより上記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関し、特に所定の通信プロトコルに応じた通信を実行する情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
従来、SOAP(Simple Object Access Protocol)通信によってネットワークを介したサービスの授受が行われている(例えば、特許文献1)。SOAPはトランスポート層にHTTP(HyperText Transfer Protocol)を用いることが可能であるため、インターネットを介したRPC(Remote Procedure Call)の実現が可能とされている。
【0003】
斯かるSOAPによるRPCを実現する場合、クライアント側及びサーバ側のそれぞれにSOAPエンジンと呼ばれるモジュールが必要とされる。SOAPエンジンは、SOAPメッセージのシリアライズ及びデシリアライズ等を行い、SOAP通信を利用する上位のソフトウェアモジュールに対して透過的なメソッド呼び出しの手段を提供する。
【0004】
現状において、SOAPエンジンの実装は各種存在する。具体的には、各ベンダによって提供されるSOAPエンジンの仕様は必ずしも同一ではない。
【特許文献1】特開2006−330877号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、いずれの実装を利用するかはユーザの好みや、システムの実行環境に対する相性等によって選択されうるところ、SOAPエンジンの切り替えは、SOAPエンジンを利用するソフトウェアプログラムにも影響を及ぼし、例えば、ソースコードの修正や再リンク等が必要とされる。
【0006】
したがって、SOAP通信を利用するアプリケーション等が組み込まれた機器又は情報処理装置において、ユーザによってSOAPエンジンの切り替えが要求された場合、非常に煩雑な作業が必要とされるという問題があった。
【0007】
本発明は、上記の点に鑑みてなされたものであって、所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることのできる情報処理装置、情報処理方法、及び情報処理プログラムの提供を目的とする。
【課題を解決するための手段】
【0008】
そこで上記課題を解決するため、本発明は、通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有し、前記通信インタフェース提供手段は、遠隔呼び出しに係るメソッドを呼び出すためのインタフェースを備え、該インタフェースの呼び出しに応じて、前記メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められたインタフェースを介して要求し、前記通信プラグイン手段は、前記予め定められたインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に前記シリアライズ及びデシリアライズの実行を要求し、前記通信プロトコルエンジン手段は、前記シリアライズ及びデシリアライズを複数の仕様の中のいずれかの仕様に基づいて実行することを特徴とする。
【0009】
このような情報処理装置では、所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることができる。
【発明の効果】
【0010】
本発明によれば、所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることのできる情報処理装置、情報処理方法、及び情報処理プログラムを提供することができる。
【発明を実施するための最良の形態】
【0011】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるシステム構成例を示す図である。同図において、一台以上の複合機1と一台以上のサーバ2とは、LAN(Local Area Network)等のネットワーク3(有線又は無線の別は問わない。)を介して接続されている。複合機1は、コピー機能、印刷機能、スキャナ機能、及びFAX機能等を一台の筐体において実現する画像形成装置であり、本実施の形態において情報処理装置の一例である。各複合機1及び各サーバ2との間では、SOAP(Simple Object Access Protocol)による通信が行われる。複合機1はサーバ2におけるWebサービスの機能をSOAPのRPC(Remote Procedure Call)によって呼び出す。サーバ2は、呼び出された機能を実行し、応答を複合機1に対して返信する。なお、サーバ2として機能する複合機1が存在してもよい。この場合、複合機1同士の間で、サービスの実行要求(SOAPリクエスト)、及びそれに対する応答の返信(SOAPレスポンス)が行われる。
【0012】
図2は、本発明の実施の形態における複合機のハードウェア構成の一例を示す図である。複合機1のハードウェアとしては、コントローラ601と、オペレーションパネル602と、ファクシミリコントロールユニット(FCU)603と、撮像部604と、印刷部605が存在する。
【0013】
コントローラ601は、CPU611、ASIC612、NB621、SB622、MEM−P631、MEM−C632、HDD(ハードディスクドライブ)633、メモリカードスロット634、NIC(ネットワークインタフェースコントローラ)641、USBデバイス642、IEEE1394デバイス643、セントロニクスデバイス644により構成される。
【0014】
CPU611は、種々の情報処理用のICである。ASIC612は、種々の画像処理用のICである。NB621は、コントローラ601のノースブリッジである。SB622は、コントローラ601のサウスブリッジである。MEM−P631は、複合機1のシステムメモリである。MEM−C632は、複合機1のローカルメモリである。HDD633は、複合機1のストレージである。メモリカードスロット634は、メモリカード635をセットするためのスロットである。NIC641は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス642は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス643は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス644は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル602は、オペレータが複合機1に入力を行うためのハードウェア(操作装置)であると共に、オペレータが複合機1から出力を得るためのハードウェア(表示装置)である。
【0015】
図3は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。同図に示されるように、複合機1のソフトウェアは、基本プラットフォーム10、システムサービス20、及び一以上のアプリケーション30等より構成される。各ソフトウェアは、HDDの中633又はメモリカード635等に記録されているプログラムがCPU611に実行させる処理によってその機能を実現する。
【0016】
基本プラットフォーム10は、OS(Operating System)11、JVM(Java(登録商標) Virtual Machine)12、及びOSGi(Open Services Gateway Initiative)フレームワーク13等を含み、システムサービス20及びアプリケーション30の実行環境を提供する。
【0017】
OS11は、いわゆるOS(Operating System)である。JVM12は、Java(登録商標)バイトコードをOS11上で動作可能なネイティブコードに変換して実行する。OSGiフレームワーク13は、OSGiアライアンスによる標準化技術であり、Java(登録商標)言語に基づいたオープンなソフトウェア部品化技術に基づいて作成されたソフトウェア部品の実行環境を提供するソフトウェアプラットフォームである。OSGiフレームワーク13上において、Java(登録商標)言語のソフトウェアは「バンドル」と呼ばれるソフトウェア部品の形で実装される。一つのバンドルは、一つのJAR(Java(登録商標) ARchive)ファイルによって構成され、それぞれ独立して動的に(装置の再起動を要することなく)インストール可能である。
【0018】
システムサービス20は、各種のアプリケーション30より共通に利用される機能(サービス)を提供する部分であり、SOAP通信制御部21及びHTTP(HyperText Transfer Protocol)通信制御部22等を含む。
【0019】
SOAP通信制御部21は、SOAPによる通信を制御する。HTTP通信制御部22は、SOAPメッセージを転送するためのHTTP通信を制御する。
【0020】
アプリケーション30は、システムサービス20を利用してより応用度の高い機能を提供するソフトウェアである。本実施の形態では、SOAP通信制御部21の利用者として位置付けられる。
【0021】
SOAP通信制御部21について更に詳しく説明する。図4は、SOAP通信制御部の構成例を示す図である。図4中、図3と同一部分には同一符号を付している。同図において、SOAP通信制御部21には、SOAPエンジン211a及び211b(以下、総称する場合「SOAPエンジン211」という。)と、SOAP通信プラグイン212a及び212b(以下、総称する場合「SOAP通信プラグイン212」という。)と、SOAP通信モジュール213とを含む。
【0022】
SOAPエンジン211は、WSDL(Web Services Description Language)によって定義されるメソッド(サーバ20におけるWebサービス20のメソッド)をRPC(Remote Procedure Call)によって呼び出すためのSOAPの実装であり、一般的にSOAPエンジンと呼ばれるプログラムモジュールある。したがって、SOAPエンジン211は、WSDLの定義に応じて実装される。SOAPエンジン211は、主としてSOAPメッセージのシリアライズ及びデシリアライズ等を実行する。本実施の形態において、SOAPエンジン211aとSOAPエンジン211bとは、その実装が異なる。したがって、解釈可能なSOAPメッセージの形式が異なる。また、SOAPエンジン211aとSOAPエンジン211bとは、利用者(ソフトウェア)側に対するインタフェースも異なりうる。したがって、SOAPエンジン211aを利用する場合とSOAPエンジン211bを利用する場合とでは、利用者側において異なる実装が要求される。
【0023】
SOAP通信プラグイン212は、各SOAPエンジン211に固有の仕様を吸収し、SOAP通信モジュール213との間で予め定められたインタフェースの呼び出しに応じてSOAPエンジン211にシリアライズ及びデシリアライズを実行させるプログラムモジュールである。SOAP通信プラグイン212は、SOAPエンジン211ごとに実装される。例えば、SOAP通信プラグイン212aはSOAPエンジン211aに対応し、SOAP通信プラグイン212bはSOAPエンジン212bに対応する。
【0024】
SOAP通信モジュール213は、SOAP通信プラグイン212を動的に切り替えて利用可能であり、SOAPエンジン211の相違に対して共通のインタフェースをアプリケーション30に対して提供するプログラムモジュールである。したがって、アプリケーション30は、SOAP通信モジュール213によって提供されるインタフェースによってSOAPエンジン211の相違を意識することなくWebサービスの呼び出し(メソッドの遠隔呼び出し)を実行することができる。但し、SOAP通信モジュール213は、WSDLによって定義されるメソッドをアプリケーションに提供するものである。したがって、SOAP通信モジュール213はWSDLの定義に応じて実装される。
【0025】
HTTPクライアントサービス221は、HTTP通信制御部22に含まれるプログラムモジュールであり、HTTPリクエストの送信制御を行う。
【0026】
なお、各SOAP通信プラグイン212及びSOAP通信モジュール213は、それぞれOSGiフレームワーク13上で動作するバンドル又はJARファイルとして実装される。
【0027】
また、図中では、二つのSOAPエンジン211のみが示されているが、三つ以上のSOAPエンジン211が存在してもよい。但し、或る時点において利用可能なSOAPエンジン211は一つである。すなわち、図示されるように、二つのSOAPエンジン211と二つのSOAP通信プラグイン212がインストールされている状態において、実際に有効なSOAPエンジン211及びSOAP通信プラグイン212は、いずれか一方のみである。
【0028】
SOAP通信モジュール213及びSOAP通信プラグイン211について更に詳しく説明する。図5は、SOAP通信モジュール及びSOAP通信プラグインのクラス構成例を示す図である。
【0029】
同図において、SOAP通信モジュール213は、起動クラス2131、SOAP通信プラグイン検出クラス2132、SOAPクライアント生成クラス2133、SOAPクライアントサービスインタフェースクラス2134、SOAPクライアントサービスクラス2135、SOAPクライアントプラグインインタフェースクラス2136、スキーマ生成インタフェースクラス2137、スキーマ1インタフェースクラス2138−1、及びスキーマnインタフェースクラス2138−2等より構成される。
【0030】
起動クラス2131は、SOAP通信モジュール213の起動時の初期処理を起動させるクラスである。起動クラス2131は、起動メソッドを有する。起動メソッドは、SOAP通信モジュール213の起動要求をOSGiフレームワーク13より受け付け、起動時の初期処理を起動させる。
【0031】
SOAP通信プラグイン検出クラス2132は、SOAP通信モジュール213の起動、又は新たなSOAP通信プラグイン212のインストールの検知に応じてSOAP通信プラグイン212を利用可能な状態にするための処理を起動するクラスである。
【0032】
SOAP通信プラグイン検出クラス2132は、起動受付メソッド、プラグイン検出受付メソッド、及びプラグインリスナー登録メソッド等を有する。起動受付メソッドは、起動クラス2131よりSOAP通信モジュール213の起動通知を受け付け、それに応じて現在有効なSOAP通信プラグイン212を利用可能な状態にするための処理を起動する。プラグイン検出受付メソッドは、OSGiフレームワーク13よりSOAP通信プラグイン212のインストール通知を受け付け、それに応じて新たにインストールされたSOAP通信プラグイン212を利用可能な状態にするための処理を起動する。プラグインリスナー登録メソッドは、OSGiフレームワーク13上に対する新たなソフトウェア(バンドル)のインストールの通知を、OSGiフレームワーク13に要求する。すなわち、プラグインリスナー登録メソッドによるOSGiフレームワーク13に対する要求により、プラグイン検出受付メソッドを介してSOAP通信プラグイン212のインストールがSOAP通信プラグイン検出クラス2132に通知される。
【0033】
SOAPクライアント生成クラス2133は、現在有効なSOAP通信プラグイン212と、SOAP通信モジュール213との関連付けの生成又は削除を実行するクラスである。SOAPクライアント生成クラス2133は、SOAPクライアントサービス生成メソッド及びSOAPクライアントサービス削除メソッド等を有する。SOAPクライアントサービス生成メソッドは、SOAPクライアントサービス2135のインスタンスを生成することにより、SOAP通信プラグイン212との関連付けを生成する。SOAPクライアントサービス削除メソッドは、SOAPクライアントサービス2135のインスタンスを削除することにより、SOAP通信プラグイン212との関連付けを削除する。
【0034】
SOAPクライアントサービスインタフェースクラス2134は、WSDLに定義されたWebサービスのメソッドを呼び出すためのインタフェースが定義された仮想クラスである。SOAPクライアントサービスインタフェースクラス2134に図示されている「SOAPアクション1実行」や「SOAPアクション2実行」等は、WSDLに定義されたメソッドを表現したものである。アプリケーション30は、SOAPクライアントサービスインタフェースクラス2134のメソッドを呼び出すことで、Webサービスの機能を透過的に呼び出すことができる。
【0035】
SOAPクライアントサービスクラス2135は、SOAPクライアントサービスインタフェースクラス2134において定義されたインタフェースの実装が定義されたクラスである。SOAPクライアントサービスクラス2135は、SOAPクライアント属性を有する。SOAPクライアント属性は、SOAPクライアントプラグインインタフェース型による属性であり、利用対象とされたSOAP通信プラグイン212との関連付けを保持する。この関連付けによって当該SOAP通信プラグイン212は利用可能とされる。
【0036】
SOAPクライアントインタフェースクラス2136は、SOAP通信プラグイン212が実装すべきメソッドが定義された仮想クラスである。当該メソッドとしては、WSDLに定義されたメソッドごとにSOAPメッセージのシリアライズ用のメソッド(例えば、SOAPアクション1シリアライズメソッド、SOAPアクションnシリアライズメソッド)及びデSOAPメッセージのデシリアライズ用のメソッドがある。
【0037】
スキーマ生成インタフェース213は、スキーマの実体の生成を行うクラスである。本実施の形態においてスキーマとは、データ型(基本データ型や構造体等を含む)を意味する。すなわち、スキーマ生成インタフェース213は、Webサービスのメソッドの引数や戻り値として利用される各種データ型の実体を生成する。
【0038】
スキーマ1インタフェースクラス2138−1及びスキーマnインタフェースクラス2138n(以下、総称する場合「スキーマインタフェースクラス2138」という。)は、スキーマ(データ型)を表現する仮想クラスであり、スキーマごとに定義される。したがってそのインスタンス(厳密にはスキーマインタフェースクラス2138のサブクラスのインスタンス)は、当該スキーマのデータそのものとなる。各スキーマインタフェースクラス2138は、当該スキーマの値を設定するためのメソッド及び取得するためのメソッドを有する。
【0039】
上記の中で、SOAPクライアントサービスインタフェースクラス2134、スキーマ生成インタフェースクラス2137、及びスキーマインタフェースクラス2138は、アプリケーション30より直接利用(操作)される。
【0040】
一方、SOAP通信プラグインクラス212a及び212bは、それぞれ、SOAPクライアントクラス2121、スキーマ生成クラス2122、スキーマ1クラス2123−1、スキーマnクラス2133−2等より構成される。なお、SOAP通信プラグインクラス212a及び212bのそれぞれのクラスを総称する場合、それぞれを区別するために参照番号に付されている「a」又は「b」の符号は削除して説明する。
【0041】
SOAPクライアントクラス2121は、SOAPクライアントプラグインインタフェースクラス2136のサブクラスである。SOAPクライアントクラス2121には、対応するSOAPエンジン211を利用してシリアライズ及びデシリアライズを実行するための処理が実装される。
【0042】
スキーマ生成クラス2122は、スキーマ生成インタフェース2137のサブクラスであり、対応するSOAPエンジン211に応じたスキーマの実体の生成処理が実装される。
【0043】
スキーマ1クラス2123−1及びスキーマクラス2133−2(以下、総称する場合「スキーマクラス2123」という。)は、それぞれのスキーマ(データ型)に係るスキーマインタフェースクラス2138のサブクラスであり、対応するSOAPエンジン211に応じたスキーマの実体を操作するための処理が実装される。
【0044】
以上のように、各SOAP通信プラグイン212は、SOAP通信モジュール213において定義されているインタフェース(SOAPクライアントプラグインインタフェース2136、スキーマ生成インタフェース2137、及びスキーマインタフェースクラス2138等)を継承することにより、SOAP通信モジュール213によって予め定められたインタフェースにより呼び出し可能とされている。また、SOAP通信プラグイン212を構成するクラスは、SOAP通信モジュール213が予定している、予め定められたクラス名によって実装される。
【0045】
以下、複合機1におけるSOAP通信に関する処理手順について説明する。図6は、SOAP通信モジュール起動時の処理手順を説明するためのシーケンス図である。なお、シーケンス図において、各クラスのインスタンス(オブジェクト)には、当該クラスと同一の参照番号を付す。また、「XXXクラス」のインスタンスを「XXXオブジェクト」と呼ぶ。
【0046】
例えば、複合機1の起動時等において、OSGiフレームワーク13は、起動オブジェクト2131の起動メソッドを呼び出すことにより、SOAP通信モジュール213の起動を要求する(S101)。起動オブジェクト2131は、起動メソッドの呼び出しに応じ、SOAP通信プラグイン検出オブジェクト2132の起動受付メソッドを呼び出す(S102)。SOAP通信プラグイン検出オブジェクト2132は、起動受付メソッドの呼び出しに応じ、自らのプラグインイントールリスナー登録メソッドを呼び出す(S103)。続いて、SOAP通信プラグイン検出オブジェクト2132は、プラグインイントールリスナー登録メソッド内において、ソフトウェアがインストールされた際の通知をOSGiフレームワーク13に要求する(S104)。当該要求では、SOAP通信プラグイン検出オブジェクト2132の識別情報(例えば、参照)がOSGiフレームワーク13に引き渡される。
【0047】
続いて、SOAP通信プラグイン検出オブジェクト2132は、SOAPクライアント生成オブジェクト2133のSOAPクライアントサービス生成メソッドを呼び出すことにより、現在有効なSOAP通信プラグイン212を利用可能な状態とするよう要求する(S105)。SOAPクライアント生成オブジェクト2133は、SOAPクライアントサービス生成メソッドの呼び出しに応じ、現在有効なSOAP通信プラグイン212におけるSOAPクライアントクラス2121及びスキーマ生成クラス2122のクラス名を判別する。
【0048】
現在有効なSOAP通信プラグイン212は、HDD633等の記憶装置に記録されている情報に基づいて判断すればよい。具体的には、SOAP通信プラグイン212は、予め定められた場所(フォルダ)に、予め定められた名前(プラグイン名)によってインストールされるのであれば、当該フォルダに保存されているファイルに基づいて判別すればよい。また、SOAPクライアントクラス2121及びスキーマ生成クラス2122のクラス名は、当該SOAP通信プラグイン212のパッケージ(JARファイル)内における定義情報等に基づいて判別すればよい。なお、ここでは、現在有効なSOAP通信プラグイン212は、SOAP通信プラグイン212aであるとする。
【0049】
続いて、SOAPクライアント生成オブジェクト2133は、SOAPクライアントサービスオブジェクト2135を生成(インスタンス化)する(S106)。この際、例えば、コンストラクタの引数としてSOAP通信プラグイン212aにおけるSOAPクライアントクラス2121aのクラス名がSOAPクラアイントサービスオブジェクト2135に引き渡される。
【0050】
SOAPクライアントサービスオブジェクト2135は生成に応じ、引き渡されたクラス名に基づいてSOAP通信プラグイン212aのSOAPクライアントオブジェクト2121aを生成(インスタンス化)する(S107)。SOAPクライアントサービスオブジェクト2135は、生成されたSOAPクライアントオブジェクト2121aの参照をSOAPクライアント属性に保持する。
【0051】
続いて、SOAPクライアント生成オブジェクト2133は、スキーマ生成インタフェースオブジェクト2137を生成(インスタンス化)する(S108)。この際、例えば、コンストラクタの引数としてSOAP通信プラグイン212aにおけるスキーマ生成クラス2122aのクラス名がスキーマ生成インタフェースオブジェクト2137に引き渡される。
【0052】
スキーマ生成インタフェースオブジェクト2137は生成に応じ、引き渡されたクラス名に基づいてSOAP通信プラグイン212aのスキーマ生成オブジェクト2122aを生成(インスタンス化)する(S109)。スキーマ生成インタフェースオブジェクト2137は、生成されたスキーマ生成オブジェクト2122aの参照を保持する。
【0053】
以上によって、SOAP通信プラグイン212を介してSOAPエンジン211aを用いたSOAP通信が可能となる。なお、SOAPエンジン11は、予めインストールされている必要がある。
【0054】
次に、図7は、アプリケーションによるSOAP通信モジュール利用時の処理手順を説明するためのシーケンス図である。
【0055】
アプリケーション30は、SOAPによって呼び出すメソッドにおいて利用するスキーマ(ここでは、スキーマ1とする)に対応するスキーマ1オブジェクト2123a−1を生成する(S201)。なお、厳密には、スキーマオブジェクト2123はスキーマ生成オブジェクト212aを介して生成されるが、ここでは便宜上省略している。
【0056】
続いて、アプリケーション30は、生成されたスキーマ1オブジェクト2133a−1に対して値を設定する(S202)。続いて、アプリケーション30は、SOAPクライアントサービスオブジェクト2135に対して、SOAPクライアントサービスインタフェース2134において定義されているWebサービスのメソッドのうち所望のメソッド(例えば、「SOAPアクション1実行メソッド」)の呼び出しを実行する(S203)。当該メソッドの引数には、スキーマ1オブジェクト2123a−1が指定される。
【0057】
続いて、SOAPクライアントサービスオブジェクト2135は、SOAPクライアント属性にその参照が保持されている、SOAP通信プラグイン212aのSOAPクライアントオブジェクト2121aに、SOAPアクション1実行メソッドの呼び出し要求のシリアライズを要求する(S204)。SOAPクライアントオブジェクト2121aは、SOAPエンジン211aにシリアライズを実行させ、その結果をSOAPクライアントサービスオブジェクト2135に返却する(S205)。
【0058】
続いて、SOAPクライアントサービス2135は、シリアライズされたXML(eXtensible Markup Language)データを含むSOAPメッセージ(SOAPリクエスト)の送信をHTTPクライアントサービス221に要求する(S206)。HTTPクライアントサービス221は、SOAPリクエストをサーバ2に送信し、その処理結果として返信されるSOAPメッセージ(SOAPレスポンス)をサーバ2より受信する。HTTPクライアントサービス221は、受信されたSOAPレスポンスをSOAPクライアントサービスオブジェクト2135に返却する(S207)。
【0059】
SOAPクライアントサービスオブジェクト2135は、返却されたSOAPレスポンスのデシリアライズ(XML形式からプログラム言語に応じたデータ形式への変換)をSOAP通信プラグイン212aのSOAPクライアントオブジェクト2121aに要求する(S208)。SOAPクライアントオブジェクト2121aは、SOAPエンジン211aにデシリアライズを実行させ、その結果をSOAPクライアントサービスオブジェクト2135に返却する(S209)。
【0060】
SOAPクライアントサービスオブジェクト2135は、デシリアライズされたデータ(例えば、メソッドの戻り値)をアプリケーション30に返却する(S210)。なお、スキーマ1オブジェクト2123a−1に係る引数がIN/OUT型である場合、アプリケーション30は、スキーマ1オブジェクト2123a−1より値を取得する(S211、S212)。続いて、アプリケーション30は、不要となったスキーマ1オブジェクト2123a−1を削除する(S213)。
【0061】
このように、アプリケーション30は、SOAPエンジン211とは直接やりとりする必要がない。したがって、SOAPエンジン211が入れ替わったとしても、同一の手順(ソースコード)によって、同一のメソッドを呼び出すことができる。
【0062】
次に、図8は、新たなSOAP通信プラグインのインストール時の処理手順を説明するためのシーケンス図である。同図では、SOAP通信プラグイン212aが利用可能な状態において、SOAP通信プラグイン212bがインストールされたときの処理手順を説明する。
【0063】
OSGiフレームワーク13上に新たなソフトウェア(バンドル)がインストールされると、OSGiフレームワーク13は、図6のステップS104における要求に基づいて、インストールされたソフトウェアの識別名(バンドル名又はプラグイン名等)を引数としてSOAP通信プラグイン検出オブジェクト2132のプラグイン検出受付メソッドを呼び出すことにより、インストールが行われたことを通知する(S301)。
【0064】
SOAP通信プラグイン検出オブジェクト2132は、プラグイン検出受付メソッドの呼び出しに応じ、インストールされたソフトウェアがSOAP通信プラグイン212であるか否かを判定する(S302)。当該判定は、引数に指定されている識別名と、SOAP通信プラグイン212として予定されている名前とを比較することにより行えばよい。
【0065】
インストールされたソフトウェアがSOAP通信プラグイン212でない場合は、以降の処理は実行されない。インストールされたソフトウェアがSOAP通信プラグイン212である場合、SOAP通信プラグイン検出オブジェクト2132は、SOAPクライアント生成オブジェクト2133のSOAPクライアントサービス削除メソッドを呼び出すことにより、現在利用されているSOAP通信プラグイン211aの無効化を要求する(S303)。
【0066】
SOAPクライアント生成オブジェクト2133は、SOAPクライアントサービス削除メソッドの呼び出しに応じ、SOAPクライアントサービスオブジェクト2135を削除する(S304)。SOAPクライアントサービスオブジェクト2135は、削除に応じ、SOAP通信プラグイン212aのSOAPクライアントオブジェクト2121a及びスキーマ生成オブジェクト2122aを削除する(S305、S306)。
【0067】
以上によって、SOAP通信モジュール213とSOAP通信プラグイン212aとの関連付けは削除される。
【0068】
続いて、ステップS307〜S311において、図6のステップS105〜S109と同様の処理が、SOAP通信プラグイン212bを対象として実行される。その結果、SOAP通信プラグイン212bが利用可能とされる。
【0069】
次に、図9は、SOAP通信プラグインのアンインストール時の処理手順を説明するためのシーケンス図である。同図では、SOAP通信プラグイン212bが利用可能な状態において、SOAP通信プラグイン212bがアンインストールされたときの処理手順を説明する。
【0070】
OSGiフレームワーク13上のソフトウェア(バンドル)がアンインストールされると、OSGiフレームワーク13は、図6のステップS104における要求に基づいて、アンインストールされたソフトウェアの識別名(バンドル名又はプラグイン名等)を引数としてSOAP通信プラグイン検出オブジェクト2132のプラグイン検出受付メソッドを呼び出すことにより、アンインストールが行われたことを通知する(S401)。
【0071】
SOAP通信プラグイン検出オブジェクト2132は、プラグイン検出受付メソッドの呼び出しに応じ、アンインストールされたソフトウェアがSOAP通信プラグイン212であるか否かを判定する(S402)。
【0072】
アンインストールされたソフトウェアがSOAP通信プラグイン212でない場合は、以降の処理は実行されない。アンインストールされたソフトウェアがSOAP通信プラグイン212である場合、ステップS403〜S406において、図8のステップS303〜S306と同様の処理が、SOAP通信プラグイン212bを対象として実行される。その結果、SOAP通信モジュール213とSOAP通信プラグイン212bとの関連付けは削除され、SOAP通信プラグイン212b及びSOAPエンジン211bは利用対象でなくなる。
【0073】
上述したように、本実施の形態における複合機1によれば、SOAP通信プラグイン212によって各SOAPエンジン211に固有の仕様が吸収される。また、SOAP通信モジュール213によって、利用対象とするSOAP通信プラグイン212が自動的に判別される。したがって、アプリケーション30は、いずれのSOAPエンジン211が利用されるかは意識する必要はなく、SOAP通信モジュール213によって提供されるインタフェースを意識していればよい。よって、アプリケーション30のソースコードを、利用されるSOAPエンジン211に応じて修正する必要はない。
【0074】
また、SOAP通信モジュール213とSOAP通信プラグイン212との間は、予め定められたインタフェースによってやりとりが行われる。したがって、SOAP通信モジュール213とSOAP通信プラグイン212との関連付けを動的なものとすることができ、新たなSOAP通信プラグイン212が追加された場合であっても、SOAP通信モジュール213のソースコードを修正することなく対応することができる。
【0075】
なお、本実施の形態では通信プロトコルとしてSOAPを例として説明したが、本発明の適用範囲はSOAPに限られない。
【0076】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【0077】
【図1】本発明の実施の形態におけるシステム構成例を示す図である。
【図2】本発明の実施の形態における複合機のハードウェア構成の一例を示す図である。
【図3】本発明の実施の形態における複合機のソフトウェア構成例を示す図である。
【図4】SOAP通信制御部の構成例を示す図である。
【図5】SOAP通信モジュール及びSOAP通信プラグインのクラス構成例を示す図である。
【図6】SOAP通信モジュール起動時の処理手順を説明するためのシーケンス図である。
【図7】アプリケーションによるSOAP通信モジュール利用時の処理手順を説明するためのシーケンス図である。
【図8】新たなSOAP通信プラグインのインストール時の処理手順を説明するためのシーケンス図である。
【図9】SOAP通信プラグインのアンインストール時の処理手順を説明するためのシーケンス図である。
【符号の説明】
【0078】
1 複合機
2 サーバ
3 ネットワーク
10 基本プラットフォーム
11 OS
12 JVM
13 OSGiフレームワーク
20 システムサービス
21 SOAP通信制御部
22 HTTP通信制御部22
30 アプリケーション
211a SOAPエンジン
211b SOAPエンジン
212a SOAP通信プラグイン
212b SOAP通信プラグイン
213 SOAP通信モジュール
221 HTTPクライアントサービス
604 撮像部
605 印刷部
601 コントローラ
602 オペレーションパネル
603 ファクシミリコントロールユニット
611 CPU
612 ASIC
621 NB
622 SB
631 MEM−P
632 MEM−C
633 HDD
634 メモリカードスロット
635 メモリカード
641 NIC
642 USBデバイス
643 IEEE1394デバイス
644 セントロニクスデバイス
2131 起動クラス
2132 SOAP通信プラグイン検出クラス
2133 SOAPクライアント生成クラス
2134 SOAPクライアントサービスインタフェースクラス
2135 SOAPクライアントサービスクラス
2136 SOAPクライアントプラグインインタフェースクラス
2137 スキーマ生成インタフェースクラス
2138−1 スキーマ1インタフェースクラス
2138−2 スキーマnインタフェースクラス
2121a SOAPクライアントクラス
2122a スキーマ生成クラス
2123a−1 スキーマ1クラス
2133a−2 スキーマnクラス

【特許請求の範囲】
【請求項1】
通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有し、
前記通信インタフェース提供手段は、遠隔呼び出しに係るメソッドを呼び出すためのインタフェースを備え、該インタフェースの呼び出しに応じて、前記メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められたインタフェースを介して要求し、
前記通信プラグイン手段は、前記予め定められたインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に前記シリアライズ及びデシリアライズの実行を要求し、
前記通信プロトコルエンジン手段は、前記シリアライズ及びデシリアライズを複数の仕様の中のいずれかの仕様に基づいて実行することを特徴とする情報処理装置。
【請求項2】
前記通信インタフェース提供手段は、当該情報処理装置において有効な前記通信プラグイン手段を判定し、該通信プラグイン手段を関連付けることを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記通信インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段を関連付けることを特徴とする請求項1又は2記載の情報処理装置。
【請求項4】
前記インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのアンインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段との関連付けを削除することを特徴とする請求項1乃至3いずれか一項記載の情報処理装置。
【請求項5】
通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有する情報処理装置が実行する情報処理方法であって、
前記通信インタフェース提供手段が、遠隔呼び出しに係るメソッドを呼び出すためのインタフェースを備え、該インタフェースの呼び出しに応じて、前記メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められたインタフェースを介して要求する手順と、
前記通信プラグイン手段が、前記予め定められたインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に前記シリアライズ及びデシリアライズの実行を要求する手順と、
前記通信プロトコルエンジン手段が、前記シリアライズ及びデシリアライズを複数の仕様の中のいずれかの仕様に基づいて実行する手順とを有することを特徴とする情報処理方法。
【請求項6】
前記通信インタフェース提供手段が、当該情報処理装置において有効な前記通信プラグイン手段を判定し、該通信プラグイン手段を関連付ける手順を有することを特徴とする請求項5記載の情報処理方法。
【請求項7】
前記通信インタフェース提供手段が、前記通信プラグイン手段を実現するプログラムのインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段を関連付ける手順を有することを特徴とする請求項5又は6記載の情報処理方法。
【請求項8】
前記インタフェース提供手段が、前記通信プラグイン手段を実現するプログラムのアンインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段との関連付けを削除する手順を有することを特徴とする請求項5乃至7いずれか一項記載の情報処理方法。
【請求項9】
コンピュータを、
通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段として機能させ、
前記通信インタフェース提供手段は、遠隔呼び出しに係るメソッドを呼び出すためのインタフェースを備え、該インタフェースの呼び出しに応じて、前記メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められたインタフェースを介して要求し、
前記通信プラグイン手段は、前記予め定められたインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に前記シリアライズ及びデシリアライズの実行を要求し、
前記通信プロトコルエンジン手段は、前記シリアライズ及びデシリアライズを複数の仕様の中のいずれかの仕様に基づいて実行することを特徴とする情報処理プログラム。
【請求項10】
前記通信インタフェース提供手段は、当該情報処理装置において有効な前記通信プラグイン手段を判定し、該通信プラグイン手段を関連付けることを特徴とする請求項9記載の情報処理プログラム。
【請求項11】
前記通信インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段を関連付けることを特徴とする請求項9又は10記載の情報処理プログラム。
【請求項12】
前記インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのアンインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段との関連付けを削除することを特徴とする請求項9乃至11いずれか一項記載の情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−140245(P2009−140245A)
【公開日】平成21年6月25日(2009.6.25)
【国際特許分類】
【出願番号】特願2007−316129(P2007−316129)
【出願日】平成19年12月6日(2007.12.6)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】