(57)【特許請求の範囲】
【請求項１】
通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有し、
前記通信インタフェース提供手段は、遠隔呼び出しの対象として定義されたメソッドを呼び出すための第一のインタフェースを備え、該第一のインタフェースを介した前記メソッドの呼び出しに応じて、当該メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められた第二のインタフェースを介して要求し、
前記通信プラグイン手段は、前記第二のインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に、前記シリアライズ及びデシリアライズの実行を、複数の仕様の中のいずれかの仕様に基づく第三のインタフェースを介して要求し、
前記通信プロトコルエンジン手段は、前記第三のインタフェースを介した要求に応じ、前記シリアライズ及びデシリアライズを前記複数の仕様の中のいずれかの仕様に基づいて実行し、
前記第一のインタフェースは、前記複数の仕様に対して共通であることを特徴とする情報処理装置。
【請求項２】
前記通信インタフェース提供手段は、当該情報処理装置において有効な前記通信プラグイン手段を判定し、該通信プラグイン手段を関連付けることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記通信インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段を関連付けることを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記通信インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのアンインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段との関連付けを削除することを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有する情報処理装置が実行する情報処理方法であって、
前記通信インタフェース提供手段が、遠隔呼び出しの対象として定義されたメソッドを呼び出すための第一のインタフェースを備え、該第一のインタフェースを介した前記メソッドの呼び出しに応じて、当該メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められた第二のインタフェースを介して要求する手順と、
前記通信プラグイン手段が、前記第二のインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に、前記シリアライズ及びデシリアライズの実行を、複数の仕様の中のいずれかの仕様に基づく第三のインタフェースを介して要求する手順と、
前記通信プロトコルエンジン手段が、前記第三のインタフェースを介した要求に応じ、前記シリアライズ及びデシリアライズを前記複数の仕様の中のいずれかの仕様に基づいて実行する手順とを有し、
前記第一のインタフェースは、前記複数の仕様に対して共通であることを特徴とする情報処理方法。
【請求項６】
前記通信インタフェース提供手段が、当該情報処理装置において有効な前記通信プラグイン手段を判定し、該通信プラグイン手段を関連付ける手順を有することを特徴とする請求項５記載の情報処理方法。
【請求項７】
前記通信インタフェース提供手段が、前記通信プラグイン手段を実現するプログラムのインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段を関連付ける手順を有することを特徴とする請求項５又は６記載の情報処理方法。
【請求項８】
前記インタフェース提供手段が、前記通信プラグイン手段を実現するプログラムのアンインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段との関連付けを削除する手順を有することを特徴とする請求項５乃至７いずれか一項記載の情報処理方法。
【請求項９】
コンピュータを、
通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段として機能させ、
前記通信インタフェース提供手段は、遠隔呼び出しの対象として定義されたメソッドを呼び出すための第一のインタフェースを備え、該第一のインタフェースを介した前記メソッドの呼び出しに応じて、当該メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められた第二のインタフェースを介して要求し、
前記通信プラグイン手段は、前記第二のインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に、前記シリアライズ及びデシリアライズの実行を、複数の仕様の中のいずれかの仕様に基づく第三のインタフェースを介して要求し、
前記通信プロトコルエンジン手段は、前記第三のインタフェースを介した要求に応じ、前記シリアライズ及びデシリアライズを前記複数の仕様の中のいずれかの仕様に基づいて実行し、
前記第一のインタフェースは、前記複数の仕様に対して共通であることを特徴とする情報処理プログラム。
【請求項１０】
前記通信インタフェース提供手段は、当該情報処理装置において有効な前記通信プラグイン手段を判定し、該通信プラグイン手段を関連付けることを特徴とする請求項９記載の情報処理プログラム。
【請求項１１】
前記通信インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段を関連付けることを特徴とする請求項９又は１０記載の情報処理プログラム。
【請求項１２】
前記インタフェース提供手段は、前記通信プラグイン手段を実現するプログラムのアンインストールの検知に応じ、前記プログラムに係る前記通信プラグイン手段との関連付けを削除することを特徴とする請求項９乃至１１いずれか一項記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関し、特に所定の通信プロトコルに応じた通信を実行する情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来、ＳＯＡＰ（Simple Object Access Protocol）通信によってネットワークを介したサービスの授受が行われている（例えば、特許文献１）。ＳＯＡＰはトランスポート層にＨＴＴＰ（HyperText Transfer Protocol）を用いることが可能であるため、インターネットを介したＲＰＣ（Remote Procedure Call）の実現が可能とされている。
【０００３】
斯かるＳＯＡＰによるＲＰＣを実現する場合、クライアント側及びサーバ側のそれぞれにＳＯＡＰエンジンと呼ばれるモジュールが必要とされる。ＳＯＡＰエンジンは、ＳＯＡＰメッセージのシリアライズ及びデシリアライズ等を行い、ＳＯＡＰ通信を利用する上位のソフトウェアモジュールに対して透過的なメソッド呼び出しの手段を提供する。
【０００４】
現状において、ＳＯＡＰエンジンの実装は各種存在する。具体的には、各ベンダによって提供されるＳＯＡＰエンジンの仕様は必ずしも同一ではない。
【特許文献１】特開２００６−３３０８７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、いずれの実装を利用するかはユーザの好みや、システムの実行環境に対する相性等によって選択されうるところ、ＳＯＡＰエンジンの切り替えは、ＳＯＡＰエンジンを利用するソフトウェアプログラムにも影響を及ぼし、例えば、ソースコードの修正や再リンク等が必要とされる。
【０００６】
したがって、ＳＯＡＰ通信を利用するアプリケーション等が組み込まれた機器又は情報処理装置において、ユーザによってＳＯＡＰエンジンの切り替えが要求された場合、非常に煩雑な作業が必要とされるという問題があった。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることのできる情報処理装置、情報処理方法、及び情報処理プログラムの提供を目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、本発明は、通信インタフェース提供手段と通信プラグイン手段と通信プロトコルエンジン手段とを有し、前記通信インタフェース提供手段は、遠隔呼び出しに係るメソッドを呼び出すためのインタフェースを備え、該インタフェースの呼び出しに応じて、前記メソッドについて所定の通信プロトコルに応じたシリアライズ及びデシリアライズの実行を動的に関連付けられている前記通信プラグイン手段に予め定められたインタフェースを介して要求し、前記通信プラグイン手段は、前記予め定められたインタフェースを介した要求に応じ、当該通信プラグイン手段が対応する前記通信プロトコルエンジン手段に前記シリアライズ及びデシリアライズの実行を要求し、前記通信プロトコルエンジン手段は、前記シリアライズ及びデシリアライズを複数の仕様の中のいずれかの仕様に基づいて実行することを特徴とする。
【０００９】
このような情報処理装置では、所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることができる。
【発明の効果】
【００１０】
本発明によれば、所定の通信プロトコルによる通信を実行するために利用される下位のプログラムモジュールの仕様による上位のプログラムに対する影響を軽減させることのできる情報処理装置、情報処理方法、及び情報処理プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を示す図である。同図において、一台以上の複合機１と一台以上のサーバ２とは、ＬＡＮ（Local Area Network）等のネットワーク３（有線又は無線の別は問わない。）を介して接続されている。複合機１は、コピー機能、印刷機能、スキャナ機能、及びＦＡＸ機能等を一台の筐体において実現する画像形成装置であり、本実施の形態において情報処理装置の一例である。各複合機１及び各サーバ２との間では、ＳＯＡＰ（Simple Object Access Protocol）による通信が行われる。複合機１はサーバ２におけるＷｅｂサービスの機能をＳＯＡＰのＲＰＣ（Remote Procedure Call）によって呼び出す。サーバ２は、呼び出された機能を実行し、応答を複合機１に対して返信する。なお、サーバ２として機能する複合機１が存在してもよい。この場合、複合機１同士の間で、サービスの実行要求（ＳＯＡＰリクエスト）、及びそれに対する応答の返信（ＳＯＡＰレスポンス）が行われる。
【００１２】
図２は、本発明の実施の形態における複合機のハードウェア構成の一例を示す図である。複合機１のハードウェアとしては、コントローラ６０１と、オペレーションパネル６０２と、ファクシミリコントロールユニット（ＦＣＵ）６０３と、撮像部６０４と、印刷部６０５が存在する。
【００１３】
コントローラ６０１は、ＣＰＵ６１１、ＡＳＩＣ６１２、ＮＢ６２１、ＳＢ６２２、ＭＥＭ−Ｐ６３１、ＭＥＭ−Ｃ６３２、ＨＤＤ（ハードディスクドライブ）６３３、メモリカードスロット６３４、ＮＩＣ（ネットワークインタフェースコントローラ）６４１、ＵＳＢデバイス６４２、ＩＥＥＥ１３９４デバイス６４３、セントロニクスデバイス６４４により構成される。
【００１４】
ＣＰＵ６１１は、種々の情報処理用のＩＣである。ＡＳＩＣ６１２は、種々の画像処理用のＩＣである。ＮＢ６２１は、コントローラ６０１のノースブリッジである。ＳＢ６２２は、コントローラ６０１のサウスブリッジである。ＭＥＭ−Ｐ６３１は、複合機１のシステムメモリである。ＭＥＭ−Ｃ６３２は、複合機１のローカルメモリである。ＨＤＤ６３３は、複合機１のストレージである。メモリカードスロット６３４は、メモリカード６３５をセットするためのスロットである。ＮＩＣ６４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス６４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス６４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス６４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル６０２は、オペレータが複合機１に入力を行うためのハードウェア（操作装置）であると共に、オペレータが複合機１から出力を得るためのハードウェア（表示装置）である。
【００１５】
図３は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。同図に示されるように、複合機１のソフトウェアは、基本プラットフォーム１０、システムサービス２０、及び一以上のアプリケーション３０等より構成される。各ソフトウェアは、ＨＤＤの中６３３又はメモリカード６３５等に記録されているプログラムがＣＰＵ６１１に実行させる処理によってその機能を実現する。
【００１６】
基本プラットフォーム１０は、ＯＳ（Operating System）１１、ＪＶＭ（Java（登録商標） Virtual Machine）１２、及びＯＳＧｉ（Open Services Gateway Initiative）フレームワーク１３等を含み、システムサービス２０及びアプリケーション３０の実行環境を提供する。
【００１７】
ＯＳ１１は、いわゆるＯＳ（Operating System）である。ＪＶＭ１２は、Ｊａｖａ（登録商標）バイトコードをＯＳ１１上で動作可能なネイティブコードに変換して実行する。ＯＳＧｉフレームワーク１３は、ＯＳＧｉアライアンスによる標準化技術であり、Ｊａｖａ（登録商標）言語に基づいたオープンなソフトウェア部品化技術に基づいて作成されたソフトウェア部品の実行環境を提供するソフトウェアプラットフォームである。ＯＳＧｉフレームワーク１３上において、Ｊａｖａ（登録商標）言語のソフトウェアは「バンドル」と呼ばれるソフトウェア部品の形で実装される。一つのバンドルは、一つのＪＡＲ（Java（登録商標） ARchive）ファイルによって構成され、それぞれ独立して動的に（装置の再起動を要することなく）インストール可能である。
【００１８】
システムサービス２０は、各種のアプリケーション３０より共通に利用される機能（サービス）を提供する部分であり、ＳＯＡＰ通信制御部２１及びＨＴＴＰ（HyperText Transfer Protocol）通信制御部２２等を含む。
【００１９】
ＳＯＡＰ通信制御部２１は、ＳＯＡＰによる通信を制御する。ＨＴＴＰ通信制御部２２は、ＳＯＡＰメッセージを転送するためのＨＴＴＰ通信を制御する。
【００２０】
アプリケーション３０は、システムサービス２０を利用してより応用度の高い機能を提供するソフトウェアである。本実施の形態では、ＳＯＡＰ通信制御部２１の利用者として位置付けられる。
【００２１】
ＳＯＡＰ通信制御部２１について更に詳しく説明する。図４は、ＳＯＡＰ通信制御部の構成例を示す図である。図４中、図３と同一部分には同一符号を付している。同図において、ＳＯＡＰ通信制御部２１には、ＳＯＡＰエンジン２１１ａ及び２１１ｂ（以下、総称する場合「ＳＯＡＰエンジン２１１」という。）と、ＳＯＡＰ通信プラグイン２１２ａ及び２１２ｂ（以下、総称する場合「ＳＯＡＰ通信プラグイン２１２」という。）と、ＳＯＡＰ通信モジュール２１３とを含む。
【００２２】
ＳＯＡＰエンジン２１１は、ＷＳＤＬ（Web Services Description Language）によって定義されるメソッド（サーバ２０におけるＷｅｂサービス２０のメソッド）をＲＰＣ（Remote Procedure Call）によって呼び出すためのＳＯＡＰの実装であり、一般的にＳＯＡＰエンジンと呼ばれるプログラムモジュールある。したがって、ＳＯＡＰエンジン２１１は、ＷＳＤＬの定義に応じて実装される。ＳＯＡＰエンジン２１１は、主としてＳＯＡＰメッセージのシリアライズ及びデシリアライズ等を実行する。本実施の形態において、ＳＯＡＰエンジン２１１ａとＳＯＡＰエンジン２１１ｂとは、その実装が異なる。したがって、解釈可能なＳＯＡＰメッセージの形式が異なる。また、ＳＯＡＰエンジン２１１ａとＳＯＡＰエンジン２１１ｂとは、利用者（ソフトウェア）側に対するインタフェースも異なりうる。したがって、ＳＯＡＰエンジン２１１ａを利用する場合とＳＯＡＰエンジン２１１ｂを利用する場合とでは、利用者側において異なる実装が要求される。
【００２３】
ＳＯＡＰ通信プラグイン２１２は、各ＳＯＡＰエンジン２１１に固有の仕様を吸収し、ＳＯＡＰ通信モジュール２１３との間で予め定められたインタフェースの呼び出しに応じてＳＯＡＰエンジン２１１にシリアライズ及びデシリアライズを実行させるプログラムモジュールである。ＳＯＡＰ通信プラグイン２１２は、ＳＯＡＰエンジン２１１ごとに実装される。例えば、ＳＯＡＰ通信プラグイン２１２ａはＳＯＡＰエンジン２１１ａに対応し、ＳＯＡＰ通信プラグイン２１２ｂはＳＯＡＰエンジン２１２ｂに対応する。
【００２４】
ＳＯＡＰ通信モジュール２１３は、ＳＯＡＰ通信プラグイン２１２を動的に切り替えて利用可能であり、ＳＯＡＰエンジン２１１の相違に対して共通のインタフェースをアプリケーション３０に対して提供するプログラムモジュールである。したがって、アプリケーション３０は、ＳＯＡＰ通信モジュール２１３によって提供されるインタフェースによってＳＯＡＰエンジン２１１の相違を意識することなくＷｅｂサービスの呼び出し（メソッドの遠隔呼び出し）を実行することができる。但し、ＳＯＡＰ通信モジュール２１３は、ＷＳＤＬによって定義されるメソッドをアプリケーションに提供するものである。したがって、ＳＯＡＰ通信モジュール２１３はＷＳＤＬの定義に応じて実装される。
【００２５】
ＨＴＴＰクライアントサービス２２１は、ＨＴＴＰ通信制御部２２に含まれるプログラムモジュールであり、ＨＴＴＰリクエストの送信制御を行う。
【００２６】
なお、各ＳＯＡＰ通信プラグイン２１２及びＳＯＡＰ通信モジュール２１３は、それぞれＯＳＧｉフレームワーク１３上で動作するバンドル又はＪＡＲファイルとして実装される。
【００２７】
また、図中では、二つのＳＯＡＰエンジン２１１のみが示されているが、三つ以上のＳＯＡＰエンジン２１１が存在してもよい。但し、或る時点において利用可能なＳＯＡＰエンジン２１１は一つである。すなわち、図示されるように、二つのＳＯＡＰエンジン２１１と二つのＳＯＡＰ通信プラグイン２１２がインストールされている状態において、実際に有効なＳＯＡＰエンジン２１１及びＳＯＡＰ通信プラグイン２１２は、いずれか一方のみである。
【００２８】
ＳＯＡＰ通信モジュール２１３及びＳＯＡＰ通信プラグイン２１１について更に詳しく説明する。図５は、ＳＯＡＰ通信モジュール及びＳＯＡＰ通信プラグインのクラス構成例を示す図である。
【００２９】
同図において、ＳＯＡＰ通信モジュール２１３は、起動クラス２１３１、ＳＯＡＰ通信プラグイン検出クラス２１３２、ＳＯＡＰクライアント生成クラス２１３３、ＳＯＡＰクライアントサービスインタフェースクラス２１３４、ＳＯＡＰクライアントサービスクラス２１３５、ＳＯＡＰクライアントプラグインインタフェースクラス２１３６、スキーマ生成インタフェースクラス２１３７、スキーマ１インタフェースクラス２１３８−１、及びスキーマｎインタフェースクラス２１３８−２等より構成される。
【００３０】
起動クラス２１３１は、ＳＯＡＰ通信モジュール２１３の起動時の初期処理を起動させるクラスである。起動クラス２１３１は、起動メソッドを有する。起動メソッドは、ＳＯＡＰ通信モジュール２１３の起動要求をＯＳＧｉフレームワーク１３より受け付け、起動時の初期処理を起動させる。
【００３１】
ＳＯＡＰ通信プラグイン検出クラス２１３２は、ＳＯＡＰ通信モジュール２１３の起動、又は新たなＳＯＡＰ通信プラグイン２１２のインストールの検知に応じてＳＯＡＰ通信プラグイン２１２を利用可能な状態にするための処理を起動するクラスである。
【００３２】
ＳＯＡＰ通信プラグイン検出クラス２１３２は、起動受付メソッド、プラグイン検出受付メソッド、及びプラグインリスナー登録メソッド等を有する。起動受付メソッドは、起動クラス２１３１よりＳＯＡＰ通信モジュール２１３の起動通知を受け付け、それに応じて現在有効なＳＯＡＰ通信プラグイン２１２を利用可能な状態にするための処理を起動する。プラグイン検出受付メソッドは、ＯＳＧｉフレームワーク１３よりＳＯＡＰ通信プラグイン２１２のインストール通知を受け付け、それに応じて新たにインストールされたＳＯＡＰ通信プラグイン２１２を利用可能な状態にするための処理を起動する。プラグインリスナー登録メソッドは、ＯＳＧｉフレームワーク１３上に対する新たなソフトウェア（バンドル）のインストールの通知を、ＯＳＧｉフレームワーク１３に要求する。すなわち、プラグインリスナー登録メソッドによるＯＳＧｉフレームワーク１３に対する要求により、プラグイン検出受付メソッドを介してＳＯＡＰ通信プラグイン２１２のインストールがＳＯＡＰ通信プラグイン検出クラス２１３２に通知される。
【００３３】
ＳＯＡＰクライアント生成クラス２１３３は、現在有効なＳＯＡＰ通信プラグイン２１２と、ＳＯＡＰ通信モジュール２１３との関連付けの生成又は削除を実行するクラスである。ＳＯＡＰクライアント生成クラス２１３３は、ＳＯＡＰクライアントサービス生成メソッド及びＳＯＡＰクライアントサービス削除メソッド等を有する。ＳＯＡＰクライアントサービス生成メソッドは、ＳＯＡＰクライアントサービス２１３５のインスタンスを生成することにより、ＳＯＡＰ通信プラグイン２１２との関連付けを生成する。ＳＯＡＰクライアントサービス削除メソッドは、ＳＯＡＰクライアントサービス２１３５のインスタンスを削除することにより、ＳＯＡＰ通信プラグイン２１２との関連付けを削除する。
【００３４】
ＳＯＡＰクライアントサービスインタフェースクラス２１３４は、ＷＳＤＬに定義されたＷｅｂサービスのメソッドを呼び出すためのインタフェースが定義された仮想クラスである。ＳＯＡＰクライアントサービスインタフェースクラス２１３４に図示されている「ＳＯＡＰアクション１実行」や「ＳＯＡＰアクション２実行」等は、ＷＳＤＬに定義されたメソッドを表現したものである。アプリケーション３０は、ＳＯＡＰクライアントサービスインタフェースクラス２１３４のメソッドを呼び出すことで、Ｗｅｂサービスの機能を透過的に呼び出すことができる。
【００３５】
ＳＯＡＰクライアントサービスクラス２１３５は、ＳＯＡＰクライアントサービスインタフェースクラス２１３４において定義されたインタフェースの実装が定義されたクラスである。ＳＯＡＰクライアントサービスクラス２１３５は、ＳＯＡＰクライアント属性を有する。ＳＯＡＰクライアント属性は、ＳＯＡＰクライアントプラグインインタフェース型による属性であり、利用対象とされたＳＯＡＰ通信プラグイン２１２との関連付けを保持する。この関連付けによって当該ＳＯＡＰ通信プラグイン２１２は利用可能とされる。
【００３６】
ＳＯＡＰクライアントインタフェースクラス２１３６は、ＳＯＡＰ通信プラグイン２１２が実装すべきメソッドが定義された仮想クラスである。当該メソッドとしては、ＷＳＤＬに定義されたメソッドごとにＳＯＡＰメッセージのシリアライズ用のメソッド（例えば、ＳＯＡＰアクション１シリアライズメソッド、ＳＯＡＰアクションｎシリアライズメソッド）及びデＳＯＡＰメッセージのデシリアライズ用のメソッドがある。
【００３７】
スキーマ生成インタフェース２１３は、スキーマの実体の生成を行うクラスである。本実施の形態においてスキーマとは、データ型（基本データ型や構造体等を含む）を意味する。すなわち、スキーマ生成インタフェース２１３は、Ｗｅｂサービスのメソッドの引数や戻り値として利用される各種データ型の実体を生成する。
【００３８】
スキーマ１インタフェースクラス２１３８−１及びスキーマｎインタフェースクラス２１３８ｎ（以下、総称する場合「スキーマインタフェースクラス２１３８」という。）は、スキーマ（データ型）を表現する仮想クラスであり、スキーマごとに定義される。したがってそのインスタンス（厳密にはスキーマインタフェースクラス２１３８のサブクラスのインスタンス）は、当該スキーマのデータそのものとなる。各スキーマインタフェースクラス２１３８は、当該スキーマの値を設定するためのメソッド及び取得するためのメソッドを有する。
【００３９】
上記の中で、ＳＯＡＰクライアントサービスインタフェースクラス２１３４、スキーマ生成インタフェースクラス２１３７、及びスキーマインタフェースクラス２１３８は、アプリケーション３０より直接利用（操作）される。
【００４０】
一方、ＳＯＡＰ通信プラグインクラス２１２ａ及び２１２ｂは、それぞれ、ＳＯＡＰクライアントクラス２１２１、スキーマ生成クラス２１２２、スキーマ１クラス２１２３−１、スキーマｎクラス２１３３−２等より構成される。なお、ＳＯＡＰ通信プラグインクラス２１２ａ及び２１２ｂのそれぞれのクラスを総称する場合、それぞれを区別するために参照番号に付されている「ａ」又は「ｂ」の符号は削除して説明する。
【００４１】
ＳＯＡＰクライアントクラス２１２１は、ＳＯＡＰクライアントプラグインインタフェースクラス２１３６のサブクラスである。ＳＯＡＰクライアントクラス２１２１には、対応するＳＯＡＰエンジン２１１を利用してシリアライズ及びデシリアライズを実行するための処理が実装される。
【００４２】
スキーマ生成クラス２１２２は、スキーマ生成インタフェース２１３７のサブクラスであり、対応するＳＯＡＰエンジン２１１に応じたスキーマの実体の生成処理が実装される。
【００４３】
スキーマ１クラス２１２３−１及びスキーマクラス２１３３−２（以下、総称する場合「スキーマクラス２１２３」という。）は、それぞれのスキーマ（データ型）に係るスキーマインタフェースクラス２１３８のサブクラスであり、対応するＳＯＡＰエンジン２１１に応じたスキーマの実体を操作するための処理が実装される。
【００４４】
以上のように、各ＳＯＡＰ通信プラグイン２１２は、ＳＯＡＰ通信モジュール２１３において定義されているインタフェース（ＳＯＡＰクライアントプラグインインタフェース２１３６、スキーマ生成インタフェース２１３７、及びスキーマインタフェースクラス２１３８等）を継承することにより、ＳＯＡＰ通信モジュール２１３によって予め定められたインタフェースにより呼び出し可能とされている。また、ＳＯＡＰ通信プラグイン２１２を構成するクラスは、ＳＯＡＰ通信モジュール２１３が予定している、予め定められたクラス名によって実装される。
【００４５】
以下、複合機１におけるＳＯＡＰ通信に関する処理手順について説明する。図６は、ＳＯＡＰ通信モジュール起動時の処理手順を説明するためのシーケンス図である。なお、シーケンス図において、各クラスのインスタンス（オブジェクト）には、当該クラスと同一の参照番号を付す。また、「ＸＸＸクラス」のインスタンスを「ＸＸＸオブジェクト」と呼ぶ。
【００４６】
例えば、複合機１の起動時等において、ＯＳＧｉフレームワーク１３は、起動オブジェクト２１３１の起動メソッドを呼び出すことにより、ＳＯＡＰ通信モジュール２１３の起動を要求する（Ｓ１０１）。起動オブジェクト２１３１は、起動メソッドの呼び出しに応じ、ＳＯＡＰ通信プラグイン検出オブジェクト２１３２の起動受付メソッドを呼び出す（Ｓ１０２）。ＳＯＡＰ通信プラグイン検出オブジェクト２１３２は、起動受付メソッドの呼び出しに応じ、自らのプラグインイントールリスナー登録メソッドを呼び出す（Ｓ１０３）。続いて、ＳＯＡＰ通信プラグイン検出オブジェクト２１３２は、プラグインイントールリスナー登録メソッド内において、ソフトウェアがインストールされた際の通知をＯＳＧｉフレームワーク１３に要求する（Ｓ１０４）。当該要求では、ＳＯＡＰ通信プラグイン検出オブジェクト２１３２の識別情報（例えば、参照）がＯＳＧｉフレームワーク１３に引き渡される。
【００４７】
続いて、ＳＯＡＰ通信プラグイン検出オブジェクト２１３２は、ＳＯＡＰクライアント生成オブジェクト２１３３のＳＯＡＰクライアントサービス生成メソッドを呼び出すことにより、現在有効なＳＯＡＰ通信プラグイン２１２を利用可能な状態とするよう要求する（Ｓ１０５）。ＳＯＡＰクライアント生成オブジェクト２１３３は、ＳＯＡＰクライアントサービス生成メソッドの呼び出しに応じ、現在有効なＳＯＡＰ通信プラグイン２１２におけるＳＯＡＰクライアントクラス２１２１及びスキーマ生成クラス２１２２のクラス名を判別する。
【００４８】
現在有効なＳＯＡＰ通信プラグイン２１２は、ＨＤＤ６３３等の記憶装置に記録されている情報に基づいて判断すればよい。具体的には、ＳＯＡＰ通信プラグイン２１２は、予め定められた場所（フォルダ）に、予め定められた名前（プラグイン名）によってインストールされるのであれば、当該フォルダに保存されているファイルに基づいて判別すればよい。また、ＳＯＡＰクライアントクラス２１２１及びスキーマ生成クラス２１２２のクラス名は、当該ＳＯＡＰ通信プラグイン２１２のパッケージ（ＪＡＲファイル）内における定義情報等に基づいて判別すればよい。なお、ここでは、現在有効なＳＯＡＰ通信プラグイン２１２は、ＳＯＡＰ通信プラグイン２１２ａであるとする。
【００４９】
続いて、ＳＯＡＰクライアント生成オブジェクト２１３３は、ＳＯＡＰクライアントサービスオブジェクト２１３５を生成（インスタンス化）する（Ｓ１０６）。この際、例えば、コンストラクタの引数としてＳＯＡＰ通信プラグイン２１２ａにおけるＳＯＡＰクライアントクラス２１２１ａのクラス名がＳＯＡＰクラアイントサービスオブジェクト２１３５に引き渡される。
【００５０】
ＳＯＡＰクライアントサービスオブジェクト２１３５は生成に応じ、引き渡されたクラス名に基づいてＳＯＡＰ通信プラグイン２１２ａのＳＯＡＰクライアントオブジェクト２１２１ａを生成（インスタンス化）する（Ｓ１０７）。ＳＯＡＰクライアントサービスオブジェクト２１３５は、生成されたＳＯＡＰクライアントオブジェクト２１２１ａの参照をＳＯＡＰクライアント属性に保持する。
【００５１】
続いて、ＳＯＡＰクライアント生成オブジェクト２１３３は、スキーマ生成インタフェースオブジェクト２１３７を生成（インスタンス化）する（Ｓ１０８）。この際、例えば、コンストラクタの引数としてＳＯＡＰ通信プラグイン２１２ａにおけるスキーマ生成クラス２１２２ａのクラス名がスキーマ生成インタフェースオブジェクト２１３７に引き渡される。
【００５２】
スキーマ生成インタフェースオブジェクト２１３７は生成に応じ、引き渡されたクラス名に基づいてＳＯＡＰ通信プラグイン２１２ａのスキーマ生成オブジェクト２１２２ａを生成（インスタンス化）する（Ｓ１０９）。スキーマ生成インタフェースオブジェクト２１３７は、生成されたスキーマ生成オブジェクト２１２２ａの参照を保持する。
【００５３】
以上によって、ＳＯＡＰ通信プラグイン２１２を介してＳＯＡＰエンジン２１１ａを用いたＳＯＡＰ通信が可能となる。なお、ＳＯＡＰエンジン１１は、予めインストールされている必要がある。
【００５４】
次に、図７は、アプリケーションによるＳＯＡＰ通信モジュール利用時の処理手順を説明するためのシーケンス図である。
【００５５】
アプリケーション３０は、ＳＯＡＰによって呼び出すメソッドにおいて利用するスキーマ（ここでは、スキーマ１とする）に対応するスキーマ１オブジェクト２１２３ａ−１を生成する（Ｓ２０１）。なお、厳密には、スキーマオブジェクト２１２３はスキーマ生成オブジェクト２１２ａを介して生成されるが、ここでは便宜上省略している。
【００５６】
続いて、アプリケーション３０は、生成されたスキーマ１オブジェクト２１３３ａ−１に対して値を設定する（Ｓ２０２）。続いて、アプリケーション３０は、ＳＯＡＰクライアントサービスオブジェクト２１３５に対して、ＳＯＡＰクライアントサービスインタフェース２１３４において定義されているＷｅｂサービスのメソッドのうち所望のメソッド（例えば、「ＳＯＡＰアクション１実行メソッド」）の呼び出しを実行する（Ｓ２０３）。当該メソッドの引数には、スキーマ１オブジェクト２１２３ａ−１が指定される。
【００５７】
続いて、ＳＯＡＰクライアントサービスオブジェクト２１３５は、ＳＯＡＰクライアント属性にその参照が保持されている、ＳＯＡＰ通信プラグイン２１２ａのＳＯＡＰクライアントオブジェクト２１２１ａに、ＳＯＡＰアクション１実行メソッドの呼び出し要求のシリアライズを要求する（Ｓ２０４）。ＳＯＡＰクライアントオブジェクト２１２１ａは、ＳＯＡＰエンジン２１１ａにシリアライズを実行させ、その結果をＳＯＡＰクライアントサービスオブジェクト２１３５に返却する（Ｓ２０５）。
【００５８】
続いて、ＳＯＡＰクライアントサービス２１３５は、シリアライズされたＸＭＬ（eXtensible Markup Language）データを含むＳＯＡＰメッセージ（ＳＯＡＰリクエスト）の送信をＨＴＴＰクライアントサービス２２１に要求する（Ｓ２０６）。ＨＴＴＰクライアントサービス２２１は、ＳＯＡＰリクエストをサーバ２に送信し、その処理結果として返信されるＳＯＡＰメッセージ（ＳＯＡＰレスポンス）をサーバ２より受信する。ＨＴＴＰクライアントサービス２２１は、受信されたＳＯＡＰレスポンスをＳＯＡＰクライアントサービスオブジェクト２１３５に返却する（Ｓ２０７）。
【００５９】
ＳＯＡＰクライアントサービスオブジェクト２１３５は、返却されたＳＯＡＰレスポンスのデシリアライズ（ＸＭＬ形式からプログラム言語に応じたデータ形式への変換）をＳＯＡＰ通信プラグイン２１２ａのＳＯＡＰクライアントオブジェクト２１２１ａに要求する（Ｓ２０８）。ＳＯＡＰクライアントオブジェクト２１２１ａは、ＳＯＡＰエンジン２１１ａにデシリアライズを実行させ、その結果をＳＯＡＰクライアントサービスオブジェクト２１３５に返却する（Ｓ２０９）。
【００６０】
ＳＯＡＰクライアントサービスオブジェクト２１３５は、デシリアライズされたデータ（例えば、メソッドの戻り値）をアプリケーション３０に返却する（Ｓ２１０）。なお、スキーマ１オブジェクト２１２３ａ−１に係る引数がＩＮ／ＯＵＴ型である場合、アプリケーション３０は、スキーマ１オブジェクト２１２３ａ−１より値を取得する（Ｓ２１１、Ｓ２１２）。続いて、アプリケーション３０は、不要となったスキーマ１オブジェクト２１２３ａ−１を削除する（Ｓ２１３）。
【００６１】
このように、アプリケーション３０は、ＳＯＡＰエンジン２１１とは直接やりとりする必要がない。したがって、ＳＯＡＰエンジン２１１が入れ替わったとしても、同一の手順（ソースコード）によって、同一のメソッドを呼び出すことができる。
【００６２】
次に、図８は、新たなＳＯＡＰ通信プラグインのインストール時の処理手順を説明するためのシーケンス図である。同図では、ＳＯＡＰ通信プラグイン２１２ａが利用可能な状態において、ＳＯＡＰ通信プラグイン２１２ｂがインストールされたときの処理手順を説明する。
【００６３】
ＯＳＧｉフレームワーク１３上に新たなソフトウェア（バンドル）がインストールされると、ＯＳＧｉフレームワーク１３は、図６のステップＳ１０４における要求に基づいて、インストールされたソフトウェアの識別名（バンドル名又はプラグイン名等）を引数としてＳＯＡＰ通信プラグイン検出オブジェクト２１３２のプラグイン検出受付メソッドを呼び出すことにより、インストールが行われたことを通知する（Ｓ３０１）。
【００６４】
ＳＯＡＰ通信プラグイン検出オブジェクト２１３２は、プラグイン検出受付メソッドの呼び出しに応じ、インストールされたソフトウェアがＳＯＡＰ通信プラグイン２１２であるか否かを判定する（Ｓ３０２）。当該判定は、引数に指定されている識別名と、ＳＯＡＰ通信プラグイン２１２として予定されている名前とを比較することにより行えばよい。
【００６５】
インストールされたソフトウェアがＳＯＡＰ通信プラグイン２１２でない場合は、以降の処理は実行されない。インストールされたソフトウェアがＳＯＡＰ通信プラグイン２１２である場合、ＳＯＡＰ通信プラグイン検出オブジェクト２１３２は、ＳＯＡＰクライアント生成オブジェクト２１３３のＳＯＡＰクライアントサービス削除メソッドを呼び出すことにより、現在利用されているＳＯＡＰ通信プラグイン２１１ａの無効化を要求する（Ｓ３０３）。
【００６６】
ＳＯＡＰクライアント生成オブジェクト２１３３は、ＳＯＡＰクライアントサービス削除メソッドの呼び出しに応じ、ＳＯＡＰクライアントサービスオブジェクト２１３５を削除する（Ｓ３０４）。ＳＯＡＰクライアントサービスオブジェクト２１３５は、削除に応じ、ＳＯＡＰ通信プラグイン２１２ａのＳＯＡＰクライアントオブジェクト２１２１ａ及びスキーマ生成オブジェクト２１２２ａを削除する（Ｓ３０５、Ｓ３０６）。
【００６７】
以上によって、ＳＯＡＰ通信モジュール２１３とＳＯＡＰ通信プラグイン２１２ａとの関連付けは削除される。
【００６８】
続いて、ステップＳ３０７〜Ｓ３１１において、図６のステップＳ１０５〜Ｓ１０９と同様の処理が、ＳＯＡＰ通信プラグイン２１２ｂを対象として実行される。その結果、ＳＯＡＰ通信プラグイン２１２ｂが利用可能とされる。
【００６９】
次に、図９は、ＳＯＡＰ通信プラグインのアンインストール時の処理手順を説明するためのシーケンス図である。同図では、ＳＯＡＰ通信プラグイン２１２ｂが利用可能な状態において、ＳＯＡＰ通信プラグイン２１２ｂがアンインストールされたときの処理手順を説明する。
【００７０】
ＯＳＧｉフレームワーク１３上のソフトウェア（バンドル）がアンインストールされると、ＯＳＧｉフレームワーク１３は、図６のステップＳ１０４における要求に基づいて、アンインストールされたソフトウェアの識別名（バンドル名又はプラグイン名等）を引数としてＳＯＡＰ通信プラグイン検出オブジェクト２１３２のプラグイン検出受付メソッドを呼び出すことにより、アンインストールが行われたことを通知する（Ｓ４０１）。
【００７１】
ＳＯＡＰ通信プラグイン検出オブジェクト２１３２は、プラグイン検出受付メソッドの呼び出しに応じ、アンインストールされたソフトウェアがＳＯＡＰ通信プラグイン２１２であるか否かを判定する（Ｓ４０２）。
【００７２】
アンインストールされたソフトウェアがＳＯＡＰ通信プラグイン２１２でない場合は、以降の処理は実行されない。アンインストールされたソフトウェアがＳＯＡＰ通信プラグイン２１２である場合、ステップＳ４０３〜Ｓ４０６において、図８のステップＳ３０３〜Ｓ３０６と同様の処理が、ＳＯＡＰ通信プラグイン２１２ｂを対象として実行される。その結果、ＳＯＡＰ通信モジュール２１３とＳＯＡＰ通信プラグイン２１２ｂとの関連付けは削除され、ＳＯＡＰ通信プラグイン２１２ｂ及びＳＯＡＰエンジン２１１ｂは利用対象でなくなる。
【００７３】
上述したように、本実施の形態における複合機１によれば、ＳＯＡＰ通信プラグイン２１２によって各ＳＯＡＰエンジン２１１に固有の仕様が吸収される。また、ＳＯＡＰ通信モジュール２１３によって、利用対象とするＳＯＡＰ通信プラグイン２１２が自動的に判別される。したがって、アプリケーション３０は、いずれのＳＯＡＰエンジン２１１が利用されるかは意識する必要はなく、ＳＯＡＰ通信モジュール２１３によって提供されるインタフェースを意識していればよい。よって、アプリケーション３０のソースコードを、利用されるＳＯＡＰエンジン２１１に応じて修正する必要はない。
【００７４】
また、ＳＯＡＰ通信モジュール２１３とＳＯＡＰ通信プラグイン２１２との間は、予め定められたインタフェースによってやりとりが行われる。したがって、ＳＯＡＰ通信モジュール２１３とＳＯＡＰ通信プラグイン２１２との関連付けを動的なものとすることができ、新たなＳＯＡＰ通信プラグイン２１２が追加された場合であっても、ＳＯＡＰ通信モジュール２１３のソースコードを修正することなく対応することができる。
【００７５】
なお、本実施の形態では通信プロトコルとしてＳＯＡＰを例として説明したが、本発明の適用範囲はＳＯＡＰに限られない。
【００７６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態におけるシステム構成例を示す図である。
【図２】本発明の実施の形態における複合機のハードウェア構成の一例を示す図である。
【図３】本発明の実施の形態における複合機のソフトウェア構成例を示す図である。
【図４】ＳＯＡＰ通信制御部の構成例を示す図である。
【図５】ＳＯＡＰ通信モジュール及びＳＯＡＰ通信プラグインのクラス構成例を示す図である。
【図６】ＳＯＡＰ通信モジュール起動時の処理手順を説明するためのシーケンス図である。
【図７】アプリケーションによるＳＯＡＰ通信モジュール利用時の処理手順を説明するためのシーケンス図である。
【図８】新たなＳＯＡＰ通信プラグインのインストール時の処理手順を説明するためのシーケンス図である。
【図９】ＳＯＡＰ通信プラグインのアンインストール時の処理手順を説明するためのシーケンス図である。
【符号の説明】
【００７８】
１          複合機
２          サーバ
３          ネットワーク
１０        基本プラットフォーム
１１        ＯＳ
１２        ＪＶＭ
１３        ＯＳＧｉフレームワーク
２０        システムサービス
２１        ＳＯＡＰ通信制御部
２２        ＨＴＴＰ通信制御部２２
３０        アプリケーション
２１１ａ    ＳＯＡＰエンジン
２１１ｂ    ＳＯＡＰエンジン
２１２ａ    ＳＯＡＰ通信プラグイン
２１２ｂ    ＳＯＡＰ通信プラグイン
２１３      ＳＯＡＰ通信モジュール
２２１      ＨＴＴＰクライアントサービス
６０４      撮像部
６０５      印刷部
６０１      コントローラ
６０２      オペレーションパネル
６０３      ファクシミリコントロールユニット
６１１      ＣＰＵ
６１２      ＡＳＩＣ
６２１      ＮＢ
６２２      ＳＢ
６３１      ＭＥＭ−Ｐ
６３２      ＭＥＭ−Ｃ
６３３      ＨＤＤ
６３４      メモリカードスロット
６３５      メモリカード
６４１      ＮＩＣ
６４２      ＵＳＢデバイス
６４３      ＩＥＥＥ１３９４デバイス
６４４      セントロニクスデバイス
２１３１    起動クラス
２１３２    ＳＯＡＰ通信プラグイン検出クラス
２１３３    ＳＯＡＰクライアント生成クラス
２１３４    ＳＯＡＰクライアントサービスインタフェースクラス
２１３５    ＳＯＡＰクライアントサービスクラス
２１３６    ＳＯＡＰクライアントプラグインインタフェースクラス
２１３７    スキーマ生成インタフェースクラス
２１３８−１  スキーマ１インタフェースクラス
２１３８−２  スキーマｎインタフェースクラス
２１２１ａ  ＳＯＡＰクライアントクラス
２１２２ａ  スキーマ生成クラス
２１２３ａ−１  スキーマ１クラス
２１３３ａ−２  スキーマｎクラス
【図１】
0005020046.tif 000002
【図２】
0005020046.tif 000003
【図３】
0005020046.tif 000004
【図４】
0005020046.tif 000005
【図５】
0005020046.tif 000006
【図６】
0005020046.tif 000007
【図７】
0005020046.tif 000008
【図８】
0005020046.tif 000009
【図９】
0005020046.tif 000010