JP2011242941A - 部品結合装置及びその処理方法 - Google Patents
部品結合装置及びその処理方法 Download PDFInfo
- Publication number
- JP2011242941A JP2011242941A JP2010113422A JP2010113422A JP2011242941A JP 2011242941 A JP2011242941 A JP 2011242941A JP 2010113422 A JP2010113422 A JP 2010113422A JP 2010113422 A JP2010113422 A JP 2010113422A JP 2011242941 A JP2011242941 A JP 2011242941A
- Authority
- JP
- Japan
- Prior art keywords
- component
- instance
- application
- property data
- data
- 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.)
- Withdrawn
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】 ソフトウェア部品を組み合わせて構築したアプリケーションにおいて、ソフトウェア部品のデータを永続化できる装置及び方法を提供する。
【解決手段】 ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置において、部品を動作させる前に部品結合定義に従って部品を結合する。部品のインスタンスのプロパティデータを永続化させるべく保存し、部品のインスタンス作成時に、保存されたプロパティデータをインスタンスに設定する。
【選択図】 図1
【解決手段】 ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置において、部品を動作させる前に部品結合定義に従って部品を結合する。部品のインスタンスのプロパティデータを永続化させるべく保存し、部品のインスタンス作成時に、保存されたプロパティデータをインスタンスに設定する。
【選択図】 図1
Description
本発明は、ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置及びその処理方法に関する。
従来、ソフトウェア部品(以下、「部品」と称す)を組み合わせてアプリケーションを構築する多様な技術が存在する。この技術の一つに、Open SOA Collaborationが仕様策定したサービスコンポーネントアーキテクチャー仕様(以下、「SCA」と称す)がある。部品やコンポーネント(部品のSCA用語)のインタフェースを、サービス、リファレンス、プロパティに単純化し、異言語部品や多様な通信プロトコル等の組み合わせを容易にしたところに特徴がある。その組み合わせ仕様は下記の非特許文献1に詳細に記載されている。
ここで、SCA仕様では、部品の結合はXML言語で記述された定義ファイルを用いて行う。ある部品が別の部品を利用する場合、それらの部品は定義ファイルが定める方法によって結合される。部品が結合される時、結合の具体的な方法は部品からは不可視になる。実際には結合される二つの部品は異なるコンピュータ上に存在し、部品間の呼び出しはネットワーク通信を通じて行われるかもしれない。そのような場合にも利用する側の部品は結合の具体的な方法を意識することなく、利用される側の部品の機能を利用することができる。
定義ファイルの読み出しや解析、部品の結合を行うのは、一般的にはSCAランタイムと呼ばれるプログラムである。SCAランタイムは、定義ファイルの解析結果に基づき、部品の結合を行う。
定義ファイルでは、部品に設定すべきプロパティ値を記述することができる。この場合、個々の部品に対して、プロパティ名とプロパティ値が記述される。また、部品は複数のプロパティを持つことができるので、プロパティ名とプロパティ値の組も複数個記述することができる。
部品のインスタンスを作成時、定義ファイルに記述されたプロパティ値がインスタンスに設定される。設定を行うのはSCAランタイムである。プロパティ値がインスタンスにどのように設定されるかは、部品を実現するプログラミング言語によって異なる。例えば、Java(登録商標)言語の場合、その仕様は非特許文献2に記述されている。同文献の1.2.3.1項Property Injectionによれば、Java(登録商標)アノテーションを、部品を実装するクラスのソースコードのセッターメソッドやフィールド、コンストラクタに記述することができる。SCAランタイムはこれを解釈し、定義ファイルに記述されたプロパティ名からプロパティ値設定を実行すべきセッターメソッドやフィールド、コンストラクタを特定する。そして、定義ファイルに記述されたプロパティ値と、特定された手法を用いて設定を実行する。
一方、データの永続化に関する従来技術を説明する。ここで「永続化」とは、データ(例えばオブジェクトの中身)をハードディスク等の不揮発性記憶装置に退避し、後で退避データから元のデータ(オブジェクト)を復元する処理のことである。一般的には、不揮発性記憶装置への退避処理を永続化と呼ぶ場合もあるが、後で復元することが退避処理の目的であることが多いため、ここでは両者をまとめて永続化処理と呼ぶことにする。
シリアライズ処理は永続化処理と類似の概念である。Java(登録商標)オブジェクトの中身を、ネットワークを隔てた場所に送る場合、シリアライズ化(直列化とも呼ぶ)が行われる。尚、用途はネットワーク送信に限定されておらず、データの蓄積時に用いても良い。このシリアライズ処理では、標準的な方法でデータの変換、通信、蓄積が行われる。
従って、シリアライズ処理の具体的な方法が明らかであれば、他の異なるシステムともデータをやり取りできる。復元する処理はデシリアライズ処理である。退避、復元用途に使えるので永続化の手法としても使える。
永続化やシリアライズ化の技術として、例えば特許文献1には、完全なアイテムの復元を達成するため、アイテム及びその関連エンティティをシリアライゼーション、デシリアライゼーションするシステム及び方法が開示されている。
また、標準シリアライゼーションプロバイダではカバーできないカスタムオブジェクトタイプ用のカスタムシリアライゼーションプロバイダをロードし、シリアライゼーションマネージャを拡張できる(例えば、特許文献2参照)。
また、例えば特許文献3には、ユーザの要求やシステムの構造等に応じて、システムやオブジェクトの動作を変更できるオブジェクト指向データベースシステムが開示されている。各オブジェクトに対応して、オブジェクトの構造や動作に関するメタデータと、オブジェクトに関する操作を行うメタ手続きを有するメタオブジェクトを記憶する。本システムは、メタ手続きを変更し、オブジェクトの生成時、データの書き込み前後、入出力手続き呼出し前後の各処理をカスタマイズ可能にする。これにより、オブジェクトのデータの値や構造を変更した場合にディスクへの記憶を行う。
SCA Service Component Architecuture Assembly Model Specification Version 1.00, March 15 2007
SCA Service Component Architecuture Java Component Implementation Specification Version 1.00, 15 February 2007
部品を組み合わせて構築したアプリケーションにおいて、部品のデータを永続化しようとする場合、次のような課題が生じる。即ち、従来の永続化方法を適用しようとすれば、アプリケーションが永続化対象を決定し、それに対して永続化する処理を実装する必要がある。つまり何を永続化するのか、どの記憶装置に対して、どのように永続化するのかをアプリケーション側で実装しなければならない。
また、従来のSCA仕様では、部品のプロパティの永続化というコンセプトを取り入れていない。従って、SCAランタイムが動作する装置又はアプリケーションを再起動した場合、部品のプロパティの値は定義ファイルに書かれた初期値に戻り、再起動前の最後に設定した値は失われてしまう。
また、部品側で永続化コードを書くこともできない。部品は複数のアプリケーションから共通に使用され得る。その際、アプリケーション毎に異なる部品インスタンスを使用することはよく行われる。固定された1箇所の記憶場所に部品がそのデータを退避したとすると、データが衝突するため異なるアプリケーションから異なる部品インスタンスデータを永続化させることができない。
この問題を回避する方法として、部品がどのアプリケーションから使われているのかを部品側で識別することも考えられる。そうすれば、部品がアプリケーション毎に記憶場所を分けてデータを退避することも可能である。しかし、それを実現するためには、部品がアプリケーションを識別するためのインタフェースを設けなければならない。
そもそもあらゆるアプリケーションが永続化を必要としている訳ではない。部品側では永続化が必要とされるかどうかは不明であるのに、永続化処理を実装しておかなければならないのは煩わしい。
本発明は、ソフトウェア部品を組み合わせて構築したアプリケーションにおいて、ソフトウェア部品のデータを永続化できる装置及び方法を提供することを目的とする。
本発明は、ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置であって、
前記部品を動作させる前に部品結合定義に従って部品を結合する結合手段と、
前記部品のインスタンスのプロパティデータを永続化させるべく保存する保存手段と、
前記部品のインスタンスを作成する時に、保存されたプロパティデータを前記インスタンスに設定する設定手段と、
を備えることを特徴とする。
前記部品を動作させる前に部品結合定義に従って部品を結合する結合手段と、
前記部品のインスタンスのプロパティデータを永続化させるべく保存する保存手段と、
前記部品のインスタンスを作成する時に、保存されたプロパティデータを前記インスタンスに設定する設定手段と、
を備えることを特徴とする。
本発明によれば、ソフトウェア部品を組み合わせて構築したアプリケーションにおいて、ソフトウェア部品のデータを永続化することができる。
また、部品に対して最後に設定した値を、装置もしくはアプリケーションの再起動後に用いることができる。また、異なるアプリケーションが同一部品を使用していた場合でもデータの衝突は発生しない。また、永続化処理のための実装をアプリケーションや部品が行う必要がない。
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。
[第1の実施形態]
図1は、第1の実施形態における部品結合装置の構成を示すブロック図である。図1に示すように、部品結合装置100には、CPU101、HDD102、ネットワークI/F103、ROM104、RAM105、FlashROM106、ディスプレイ107、操作部108が含まれる。
図1は、第1の実施形態における部品結合装置の構成を示すブロック図である。図1に示すように、部品結合装置100には、CPU101、HDD102、ネットワークI/F103、ROM104、RAM105、FlashROM106、ディスプレイ107、操作部108が含まれる。
CPU101は部品結合装置100全体を制御し、後述する部品結合処理、保存処理、プロパティ設定処理を実行する。HDD102はハードディスクドライブであり、不揮発性大容量記憶装置である。ネットワークI/F103は部品結合装置100の外部に存在するネットワーク150を接続するインタフェースである。ROM104には、各種動作プログラムが読み取り可能な形式で格納されている。RAM105はプログラム動作中の一時的な値の保存に用いる。
FlashROM106は、各種設定データファイルを保存しておくための不揮発性のメモリである。尚、不揮発性という性質がHDD102に近いことからFlashROM106を記憶装置として用いることも可能である。
ディスプレイ107は、各種情報をユーザに対して表示する。操作部108は具体的にはキーボード、マウス、タッチディスプレイ等で構成され、ユーザが操作を指示するものである。
図1に示すように、RAM105にはアプリケーション120が格納されている。この図1ではアプリケーション実行時の状態を示している。尚、アプリケーション120は、最初HDD102にインストールされていても良い。その場合、アプリケーションを実行する際に、CPU101がHDD102からアプリケーション120を読み出し、RAM105に格納する。また、図1では、RAM105の中にアプリケーション120が一つだけ存在するが、異なるアプリケーションが共存していても良い。
また、アプリケーション120は、1以上のソフトウェア部品(以下、部品)121で構成される。部品121はプロパティ124を含む。プロパティ124は、部品121が有するデータの一部であり、部品121の状態を示すためのデータ、或いは部品121を外部から制御するためのデータである。例えば、Java(登録商標)言語の場合、クラスの中で定義されたフィールドがプロパティとなり得る。プロパティ124は型(或いはクラス)及び名前(プロパティ名)を指すものであり、プロパティ値が格納される場所ではない。このプロパティ値が格納されるのは後述するプロパティデータ131である。
尚、第1の実施形態では、Java(登録商標)言語を用いて説明するが、本発明は特定のプログラミング言語に依存したものではなく、Java(登録商標)言語以外のプログラミング言語を用いても実現可能である。
また、部品121には、不図示であるが、ソフトウェアとしての機能を実現するためのプログラムコード、型或いはクラス情報、リソースも含まれる。また、アプリケーション120は、それが有する部品121の結合方法が記述された部品結合定義122を含む。また、部品として提供されるソフトウェア以外のソフトウェア、つまりアプリケーションコード123もアプリケーション120に含まれる。アプリケーションコード123は、部品121を利用することにより、所定の機能を提供する。
RAM105には更に、1以上の部品インスタンス130が格納される。この部品インスタンス130は、部品121がインスタンス化されたものである。各部品インスタンス130はプロパティデータ131を有する。ここで、プロパティデータ131は、上述の部品121に含まれるプロパティ124に対する実体データ(プロパティ値)である。
ROM104には、部品結合ランタイム160が含まれる。部品結合ランタイム160は、SCA仕様でのSCAランタイムとして機能し、部品結合定義122の解釈や部品インスタンス130の生成等の処理を行う。また、部品結合ランタイム160はプログラムである。このプログラムをCPU101がROM104から読み出し実行することにより処理が行われる。
HDD102には、部品永続化データ140と部品永続化データ関連付けテーブル141とが格納される。部品永続化データ140は、プロパティデータ131がHDD102に格納されたものである。プロパティデータ131がHDD102に格納されるとき、データは適宜変換される。例えば、部品インスタンス130がJava(登録商標)言語のオブジェクトインスタンスであれば、一般的なシリアライゼーションを用いた変換方法が利用可能である。また、プロパティデータ131をXML言語形式に変換するためのデータバインディングも利用可能である。例えば、Java(登録商標)オブジェクトインスタンスをXML言語形式に変換するために、JAXB(Java Architecture for XML Binding)仕様を実装したプログラムが使える。また、Java(登録商標)以外の言語もデータバインディングのための各種API(Application Programming Interface)を提供している。
部品永続化データ関連付けテーブル141は、アプリケーション120、部品121、プロパティ124、及び部品永続化データ140のそれぞれの格納場所を関連付けた関連付けテーブルである。
図2の(A)に、部品永続化データ関連付けテーブル141の例を示す。(A)に示す部品永続化データ関連付けテーブル141は、アプリケーション列201、部品列202、プロパティ列203、及び永続化データ格納場所列204で構成される。この例では、2つのアプリケーション120(APP_AとAPP_B)に関連するデータが格納されている。アプリケーションAPP_Aは永続化対象の部品121としてCOMPO_AとCOMPO_Bを有する。更に、COMPO_Aは永続化対象のプロパティ124としてPROP_AとPROP_Bを有し、COMPO_Bは永続化対象のプロパティ124としてPROP_Cを有する。
図2に示す(A)のテーブルの1行を例にとると、アプリケーションAPP_A、部品COMPO_A、プロパティPROP_Aに対応するプロパティデータ131が部品永続化データ140に格納される。これと同時に、その格納場所を示すデータが永続化データ格納場所列204に格納される。尚、永続化データ格納場所に格納する場所データは格納場所が特定されればどのようなものでも良い。例えば、部品永続化データ140がHDD102上の1個のファイルとして存在するならば、そのファイル中のオフセットデータであっても良い。また、部品永続化データ140がHDD102上の不図示のデータベースの中に置かれるならば、所望の永続化データがデータベースから取得できるように、場所データがデータベースのキーデータであっても良い。
部品永続化データ関連付けテーブル141は、CPU101による部品結合定義122の解析結果に基づいて作成される。図3に、部品永続化データ関連付けテーブル141を作成したときの部品結合定義122の例を示す。尚、部品結合定義122はSCA仕様に則って記述したものであり、説明のために行番号が付与されているが、本来はXML言語形式で記述されるものである。
図3に示す部品結合定義122はアプリケーションAPP_Aの部品結合定義であり、部品COPO_Aと部品COMPO_Bに関する定義を含む。部品COMPO_Aはプロパティ124として、プロパティPROP_A、PROP_B、PROP_Dを含む。このPROP_A、PROP_B、PROP_Dは、name属性の値として示されていることから分かるように、これらはプロパティ名を示す。それらのデフォルトのプロパティ値はプロパティ要素のコンテンツとして示される通り、それぞれ、AAA、BBB、DDDである。
プロパティPROP_AとPROP_Bに関してはpersistent属性がtrueとなっている。このことは、それらのプロパティ124が永続化対象であることを示す。尚、部品COMPO_Bの記述に関しても上述と同様に解釈される。
以上の構成を有する部品結合装置100において、アプリケーション120を実行する際に、永続化対象である部品121のプロパティ124を永続化させる処理を説明する。まず、アプリケーション120の実行手順を、図4を用いて説明する。尚、動作の主体は明記した場合を除き、制御主体であるCPU101である。但し、ハードウエアとしての動作主体はCPU101であっても、ソフトウェア階層から見た動作主体は様々に変わり得るので、それについては明記する。
最初に、アプリケーションコード123がドメインを生成する(S401)。ドメインとはSCA用語であり、部品結合定義122を解釈して得られる、そのアプリケーション120における部品結合情報全体を指すものである。アプリケーションコード123は、部品結合ランタイム160が提供するドメイン生成のためのAPIを呼び出す。
ここで、部品結合ランタイム160により実行されるドメイン生成手順を、図5を用いて説明する。まず、部品結合ランタイム160はドメインを生成する(S501)。典型的には、ドメインクラスのインスタンスを生成する。次に、部品結合ランタイム160はドメインを生成しようとしているアプリケーション120を識別するためのアプリケーション識別子を取得する(S502)。
このアプリケーション識別子は、部品結合装置100が複数のアプリケーションを同時に実行可能なので、どのアプリケーションかを識別するために必要である。このアプリケーション識別子を取得する具体的な方法はいくつか存在する。
一つ目は、部品結合ランタイム160が新たな識別子を生成し、解釈しようとしている部品結合定義122に生成した識別子を関連付けるというものである。アプリケーション120が部品結合定義122を一つだけ有するのであれば有効な方法である。この場合、アプリケーション120の再起動後に、同じアプリケーション120に対して異なるアプリケーション識別子を関連付ける懸念があるが、それは防止できる。解釈しようとしている部品結合定義122に既に関連付けられたアプリケーション識別子があるか否かを確認すれば良い。
二つ目は、ドメイン生成APIの呼び出し時、或いはその前にアプリケーション120からアプリケーション識別子を渡してもらう方法である。アプリケーション120が複数の部品結合定義122を有する場合も、この方法は有効である。この方法の場合、アプリケーション識別子は任意でも良いが、異なるアプリケーション120の間で同じ識別子を使ってしまう心配がある。
上述の同一識別子の使用を防止するためには、例えばOSGi(Open Gateway Service Initiative)フレームワークを使用すれば良い。OSGi規格は、複数のソフトウェアモジュールを管理する手法の一つであり、ソフトウェアモジュールをインストール、開始、停止、アンインストールする、いわゆるライフサイクル管理の仕様を定めている。ここで、ソフトウェアモジュールの管理単位はバンドルと呼ばれ、OSGiフレームワークは各バンドルに対してバンドルコンテキストを割り当てる。
アプリケーション120がバンドルとして実装されていれば、OSGiフレームワークがアプリケーション120に対してバンドルコンテキストを割り当てることになり、これをアプリケーション識別子として利用することができる。また、バンドルコンテキストの割り当てはアプリケーション120の起動時に行われるので、ドメイン生成APIの呼び出し時にアプリケーション識別子として使うことに問題はない。
尚、上述した一つ目と二つ目を組み合せることも可能である。アプリケーション120からアプリケーション識別子を取得できない場合には一つ目の方法を使えば良い。また、アプリケーション120が部品結合定義122を一つだけ有する場合、アプリケーション120がアプリケーション識別子の作成を行う必要がなくなる。
次に、部品結合ランタイム160は部品結合定義122を解釈する(S503)。解釈すべき部品結合定義122は、ドメイン生成API呼び出し時、或いはその前にアプリケーション120から渡してもらう。また、アプリケーション識別子からアプリケーション120を特定し、その中に含まれる部品結合定義122を解釈対象と見なす。この解釈は、図3を用いて説明したように行われる。
次に、部品結合ランタイム160は生成したドメインの中にアプリケーション識別子と部品結合定義122の解釈結果とを格納する(S504)。そして、部品結合ランタイム160は部品永続化データ関連付けテーブル141にプロパティ解析結果を追加する(S505)。例えば、アプリケーションAPP_Aの部品結合定義122を解釈した場合、部品永続化データ関連付けテーブル141にアプリケーションAPP_Aに関するデータが存在するか否かに応じて、以下のように処理する。
部品永続化データ関連付けテーブル141にアプリケーションAPP_Aに関するデータが存在しなければ、アプリケーションAPP_Aのデータを部品永続化データ関連付けテーブル141に追加する。ここでアプリケーションAPP_Aのデータとは、アプリケーションAPP_Aが含む部品121と、部品121が含むプロパティ124のデータとを含む。即ち、アプリケーションAPP_Aが含む、部品COMPO_AとCOMPO_Bのデータ、及び部品COMPO_Aが含むプロパティPROP_AとPROP_B、部品COMPO_Bが含むプロパティPROP_Cのデータを含む。
一方、部品永続化データ関連付けテーブル141にアプリケーションAPP_Aに関するデータが存在すれば、解釈したアプリケーションAPP_Aのデータがテーブル上のデータと一致するか否かを判定する。アプリケーションAPP_Aが更新、再インストールされていた場合、一致しない可能性があるので、それに備える。一致すれば追加する必要はない。一致しなければ、テーブル上のアプリケーションAPP_Aのデータが解釈結果に置き換えられる。
尚、部品永続化データ関連付けテーブル141にプロパティ解析結果を追加するのは、永続化対象となっているプロパティ124が存在する場合である。部品121にプロパティ124が存在しても、何れも永続化対象となっていない場合、追加は行わない。
最後に、部品結合ランタイム160はドメインへの参照をアプリケーション120に返す(S506)。
ここで図4に戻り、ドメイン参照を得たアプリケーションコード123はドメイン参照からサービスを取得する(S402)。サービスとは、SCA仕様における用語であり、部品121が外部に対して公開している、機能のアクセスポイントである。典型的な例で言えば、部品121がJava(登録商標)クラスとして実現されている場合、部品121のクラスが提供する、公開目的のメソッドである。但し、サービスを通じてこのメソッドが呼び出せるからといっても、取得したサービスは部品121のインスタンスへの参照そのものではない。これについては、後述するサービス取得手順で更に詳述する。サービス取得は部品結合ランタイム160が提供するAPIを通じて行う。
次に、アプリケーションコード123は取得したサービスを用いてサービスメソッドを実行する(S403〜S405)。尚、一つのサービスにつき1個以上のメソッドが実行可能であり、サービスメソッドを実行する順序と回数はアプリケーションコード123に任されている。そこで、図4では、このサービスメソッドの実行をループで表現したものである。
次に、サービスメソッドの実行が終了すると、最後にアプリケーションコード123はドメインをクローズして終了する(S406)。尚、部品結合装置100が再起動された時も、上述した図4に示すシーケンスが実行される。
次に、部品結合ランタイム160によるサービス取得手順を、図6を用いて説明する。上述のS402で、アプリケーションコード123がサービス取得APIを呼び出す際にアプリケーションコード123はサービスを取得する対象となる部品121を指定する。ここでは図3の部品結合定義122における部品COMPO_Aを指定したとする。
部品結合ランタイム160は、指定された部品121の情報から部品121を実装しているクラスの情報を得る(S601)。この例では、部品結合定義122における6行目のimplementation.java要素のclass属性が実装クラスを示している。尚、ドメイン生成時に部品結合定義122を解釈済みなので、実装クラス情報の取得は簡単に行える。
この実装クラスを用いて部品結合ランタイム160は、部品インスタンス130を生成する(S602)。ここで、生成した部品インスタンス130への参照をドメインに登録しておく。上述のS402で説明したように、サービス取得APIはドメイン参照から呼ばれているので、登録は可能である。このようにしておくと、ドメイン内に存在する部品インスタンス130を把握できる。
次に、生成したインスタンスを初期化する(S603)。このインスタンス初期化手順については後で詳細に説明する。
次に、部品結合ランタイム160は不図示のハンドラクラスのインスタンスを生成する(S604)。このハンドラクラスとは、動的代理クラスから呼ばれるハンドラメソッドを実装したクラスである。また代理クラスとは、あるクラスの操作(メソッド呼び出し)をする際に仲立ちとなるクラスのことであり、プロキシクラスとも呼ばれる。代理クラスは静的に実装することも、或いは動的に生成することも可能である。Java(登録商標)言語では、java.lang.reflect.Proxyクラスを用いて動的代理クラスの生成が可能である。
動的生成の場合、あるクラスのインタフェースに基づいて、代理クラスは生成される。この時、代理クラスは当該インタフェース条件を満たす、1個以上のメソッドを備える。つまり、代理クラスは当該インタフェースを実装したものと見なすことができ、当該インタフェースのメソッドの何れも実行可能となる。
次に、生成したハンドラクラスのインスタンスの中に、S602で生成した部品インスタンス130への参照を設定する(S605)。次に、生成したハンドラクラスのインスタンスの中に、アプリケーション識別子を設定する(S606)。上述したS402で、サービス取得APIはドメイン参照から呼ばれており、またS504で、ドメインの中にはアプリケーション識別子が格納されているので、アプリケーション識別子を取得し、これを設定することは可能である。
次に、生成したハンドラクラスのインスタンスの中に部品識別子を設定する(S607)。この部品識別子は、この例では部品COMPO_Aを識別するための識別子である。部品結合ランタイム160は部品結合定義122を解釈時に、各部品に対して部品識別子を割り当てる。
尚、上述した、生成したハンドラクラスインスタンス中への部品インスタンス130への参照とアプリケーション識別子、部品識別子の設定は、これらをコンストラクタ引数に指定することで、S604と同時に行うことも可能である。
説明の都合上、図2に示す(A)の部品永続化データ関連付けテーブル141において、テーブルのセルにAPP_AやCOMPO_Aと言った、アプリケーション名や部品名が格納されている様子を示した。しかし、もちろんアプリケーション名や部品名の代わりにアプリケーション識別子や部品識別子がセルに格納されていても良い。逆に、アプリケーション名や部品名を識別子として利用することも可能である。また、プロパティ124についても同様である。
また、S602で作成した部品インスタンス130への参照と、アプリケーション識別子、部品識別子の間の関連付け情報をRAM105に格納しておく。このようにしておくことにより、部品インスタンス130の参照から、それを使用しているアプリケーション120の情報と部品121の情報とを後で取得することができる。
次に、部品結合ランタイム160はハンドラクラスインスタンスへの参照と部品121のインタフェースとを入力とし、動的代理クラスのインスタンスたる代理クラスインスタンスを生成する(S608)。これにより、代理クラスインスタンスからハンドラクラスインスタンスへのアクセスが可能となる。また、代理クラスインスタンスが部品121のインタフェースを備える。
最後に、部品結合ランタイム160は生成した代理クラスインスタンスへの参照をアプリケーションコード123に返す(S609)。従って、アプリケーションコード123は、代理クラスインスタンス参照をサービスとして利用することになる。
次に、アプリケーションコード123によるプロパティデータ131の変更手順を説明する。プロパティデータ131を変更するためには、部品121が提供する種々の方法が利用できる。例えば、部品インスタンス130のフィールドに直接アクセスする方法もある。しかし、典型的には部品121が提供するセッターメソッドを用いる。
フィールド直接アクセスの方式では、アプリケーションコード123が部品インスタンス130を直接扱うことが必要である。第1の実施形態では、アプリケーションコード123は部品インスタンス130を直接有しておらず、代理クラスインスタンスを通して間接的に部品インスタンス130にアクセスしている。従って、プロパティデータ131の変更にセッターメソッドを使用する。このセッターメソッドはプロパティ毎に部品121が用意する。
プロパティデータ131を変更するために、S404においてアプリケーションコード123はプロパティデータ131変更用のサービスメソッドたるセッターメソッドを呼び出す。ここでは、セッターメソッドが、部品121が提供するサービスのインタフェースに含まれていることを仮定している。
プロパティデータ131の設定値は、セッターメソッドの引数として渡される。アプリケーションコード123は代理クラスインスタンスを有しているので、セッターメソッド呼び出しは代理クラスインスタンスに対するセッターメソッド呼び出しとなる。
代理クラスインスタンスのセッターメソッドは、ハンドラクラスインスタンスのハンドラメソッドを呼び出す。S608で代理クラスインスタンス生成時に、ハンドラクラスインスタンスがハンドラメソッドの中で部品インスタンス130のプロパティデータ131の変更が行われる。
ここで、ハンドラメソッド実行の詳細な手順を、図7を用いて説明する。ハンドラメソッドは上述のセッターメソッドだけでなく、様々な代理クラスインスタンスメソッドから呼び出され得る。従って、まず、どの代理クラスインスタンスメソッドから呼び出されたのかを判別する(S701)。判別したメソッドがセッターメソッドの一つであれば(S702、Yes)、S703以降を実行する。一方、セッターメソッドでなければ(No)、部品インスタンス130における対応メソッドを呼び出す(S708)。代理クラスインスタンスは、部品121のインタフェースに基づいて作成されているので、同一名、同一引数を持つ対応メソッドを部品121は必ず持つ。
次に、S703では、ハンドラメソッドは現在実行中のアプリケーション識別子を取得する。ハンドラクラスインスタンスにアプリケーション識別子を設定済みなので、これは可能である。次に、ハンドラメソッドは部品識別子を取得する(S704)。ハンドラクラスインスタンスに部品識別子を設定済みなので、これは可能である。
次に、ハンドラメソッドはセッターメソッドが設定対象とするプロパティ124が永続化対象か否かを判定する(S705)。ここで、セッターメソッド名から設定対象のプロパティ名を識別する。Java(登録商標)言語の場合、例えばプロパティ名がpropaであれば、セッターメソッド名がsetPropaになるので、セッターメソッド名の先頭からsetを取り除き、頭文字Pを小文字化するか大文字そのままとして、該当するプロパティ124を探す。
プロパティ名を識別した後、ハンドラメソッドは、部品永続化データ関連付けテーブル141において、取得したアプリケーション識別子と部品識別子に対応する行の中に識別したプロパティ124が存在するか否かを判定する。判定の結果、存在すれば永続化対象と見なすことができる。
尚、ハンドラメソッドが部品永続化データ関連付けテーブル141を取得する方法はいくつか考えられる。テーブルを管理している部品結合ランタイム160に対して取得要求を行う方法が一つある。予めドメインインスタンスに部品永続化データ関連付けテーブル141を関連付けておき、アプリケーション識別子からドメインインスタンスを関連付けておき、アプリケーション識別子から部品永続化データ関連付けテーブル141を取得する方法もある。
プロパティ124が永続化対象であれば、セッターメソッドの引数として渡された設定値を部品永続化データ140に書き込み、永続化する(S706)。プロパティ124に対して初めての永続化であれば、まだ部品永続化データ関連付けテーブル141の永続化データ格納場所列204が空欄であるので、書き込みを行った場所の情報を永続化データ格納場所列204に格納する。
また、永続化データ格納場所列204が空欄でない場合は、そこが前回の書き込み場所を示しているので、可能ならば同じ場所に書き込む。この時、必ず前回とは異なる新たな書き込み場所を見つけ、そこに書き込みを行い、永続化データ格納場所列204に格納するようにしても良い。書き込み方法によっては、書き込む容量が前回の書き込んだデータのサイズに制限されてしまう恐れもあるが、必ず新たな場所に書き込む方法だとその心配もない。
また、S705でプロパティ124が永続化対象でなければ、S706をスキップし、ハンドラメソッドは、部品インスタンス130のセッターメソッドを呼ぶ(S707)。尚、セッターメソッドは、上述した対応するメソッドであるので、これを呼ぶことは可能である。また、ハンドラクラスインスタンスに設定されている部品インスタンス130を取得することも容易である。このセッターメソッドによりプロパティデータ131の変更がなされる。
次に、S603におけるインスタンス初期化手順の詳細を図8を用いて説明する。尚、この処理は、部品結合ランタイム160が初期化対象である部品121のそれぞれのプロパティ124に対して実行する処理である。従って、個々のプロパティに対するループとなる(S801、S808)。
まず、部品結合ランタイム160はアプリケーション識別子を取得する(S802)。S606におけるアプリケーション識別子の取得方法と同様の方法で取得が可能である。次に、部品結合ランタイム160は部品識別子を取得する(S803)。これもS607と同様に可能である。
次に、部品結合ランタイム160はプロパティ124が永続化対象か否かを判定する(S804)。ここでは、部品結合ランタイム160は部品永続化データ関連付けテーブル141において、取得したアプリケーション識別子と部品識別子が指す部品の中に、処理対象のプロパティ124が存在するか否かを判定する。判定の結果、存在すれば、永続化対象と見なすことができる。
S804でプロパティ124が永続化対象であれば、部品結合ランタイム160は永続化されたデータが存在するか否かを調べる(S805)。部品永続化データ関連付けテーブル141において、処理対象プロパティ124に対する永続化データ格納場所列204が空欄でなければ、存在すると見なせる。
S805で永続化されたデータが存在する場合、永続化データ格納場所列204が示す場所から永続化されたデータを取得する(S806)。そして、取得したデータを用いて部品インスタンス130のセッターメソッドを呼び、プロパティデータ131を設定する(S807)。この呼び出し対象セッターメソッドは処理対象プロパティ124から特定できる。
一方、S804でプロパティ124が永続化対象でなければ、部品結合ランタイム160は部品結合定義122中に処理対象プロパティ124のデフォルト値が記述されているか否かを調べる(S809)。ここで、デフォルト値が記述されていれば、部品結合ランタイム160はそのデフォルト値を取得する(S810)。そして、取得したデフォルト値でもってS807を実行する。また、S809でデフォルト値が記述されていなければ、そのプロパティ124に対してはセッターメソッドを呼ぶ必要はないので、次のプロパティ124の処理に移る。
上述のS805で永続化されたデータが存在しない場合、S809の処理に移り、上述した処理を行う。この処理は、アプリケーション120の初回起動時、プロパティ124が永続化対象であるにも関わらず、永続化されたデータが存在しない場合があり得るからである。
第1の実施形態によれば、永続化対象となるプロパティ124の指示を部品結合定義122で行える。つまり、永続化したいプロパティを選択できる。永続化したいプロパティが部品中の一部のデータだけである場合、全体を永続化するのは記憶領域とCPUの無駄であるので、プロパティを選択できるのは効率的である。
また、部品結合定義122を作成するのはアプリケーションの開発者であるが、永続化処理を行うのは部品結合ランタイム160であり、アプリケーションコード123や部品121で永続化のためのコードを実装する必要はない。
尚、第1の実施形態では、部品永続化データ140をHDD102に格納したが、これをFlashROM106に格納しても良い。更に言えば部品永続化データ140は部品結合装置100内に置かなくても良い。例えば、ネットワーク150に接続された不図示の記憶装置に格納することも可能である。また部品永続化データ関連付けテーブル141に関しても同様である。
また、部品永続化データ関連付けテーブル141からデータを削除する処理は説明していないが、アプリケーション120をアンインストールする時に実行すれば良い。例えば、アプリケーションAPP_Aをアンインストールした時に、アプリケーションAPP_Aに関する行を削除すれば良い。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。尚、第2の実施形態における部品結合装置の構成は、第1の実施形態で説明した図1に示す部品結合装置100の構成と同様であり、その説明は省略する。
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。尚、第2の実施形態における部品結合装置の構成は、第1の実施形態で説明した図1に示す部品結合装置100の構成と同様であり、その説明は省略する。
第1の実施形態では、アプリケーション120と部品121、プロパティ124の組み合わせに永続化データを関連付けた場合を説明した。第2の実施形態では、アプリケーション120と部品121、部品インスタンス130、プロパティ124の組み合わせに永続化データを関連付けた場合を説明する。
アプリケーションコード123が部品121に対する部品インスタンス130を1個しか使用しない場合、その1個の部品インスタンス130のプロパティデータ131を永続化すれば良い。
しかし、アプリケーションコード123が部品121に対する部品インスタンス130を複数個使用する場合、問題が生じる。どの部品インスタンス130のプロパティデータ131を永続化すべきか、部品インスタンス130を初期化する場合に、どの永続化データをどのプロパティデータ131に設定すべきか決定できないからである。第2の実施形態はこの問題を解決するものである。
図2に示す(B)に、第2の実施形態における部品永続化データ関連付けテーブルの例を示す。第1の実施形態における部品永続化データ関連付けテーブル141との違いは、インスタンス列205が追加されていることである。インスタンス列205には、後述する部品インスタンス識別子が格納される。アプリケーションAPP_Aに関する1行目と2行目のデータを見ると、部品列202はCOMPO_A、プロパティ列203はPROP_Aであり、同じであるが、インスタンス列205のデータは、INS_AとINS_Bで異なる。部品永続化データ関連付けテーブルが図2の(B)に示すような構造を持つので、異なった部品インスタンス130に対して、異なった永続化データ格納場所を持つことができる。
部品永続化データ関連付けテーブルへのプロパティ解析結果の追加は、S505の処理と同様に、ドメインを生成時に行っても良い。但し、この場合、アプリケーションコード123がまだ部品インスタンス識別子を生成していない可能性がある。また、ドメインは複数のサービスから共通に使用され得るものなので、ドメイン生成時に特定の部品インスタンス識別子を指定することはできない。
従って、部品永続化データ関連付けテーブルへのプロパティ解析結果の追加をドメイン生成時に行うのであれば、アプリケーション列201、部品列202、プロパティ列203に対してのみ解析結果を格納することになる。インスタンス列205への格納は、後述するサービス取得時に行われる。
但し、この場合も少し問題がある。ドメイン生成時に、部品永続化データ関連付けテーブルにおいて、あるプロパティ124に対応する行が一行追加されたとする。サービス取得がなされ、その一行におけるインスタンス列205への格納がなされると、同じ部品121に対する他のサービス取得時に、インスタンス列205のみが空欄となっている行が見つからなくなってしまう。
この問題を回避するためには、同一アプリケーション、同一部品、同一プロパティの行をコピーした新たな行を追加し、そのインスタンス列205に対して格納を行う必要がある。例えば、図2に示す(B)の部品永続化データ関連付けテーブルにおいて部品インスタンスINS_Aに対する1行目と3行目のデータが存在し、部品インスタンスINS_Bに対する2行目と4行目のデータはまだ存在しないものとする。部品インスタンスINS_Bに対するデータを部品永続化データ関連付けテーブル141Bに格納するとき、異なるプロパティ124を持つ1行目と3行目が2行目と4行目にそれぞれコピーされる。次に、2行目と4行目のインスタンス列205に対して部品インスタンスINS_Bの識別子が格納される処理が行われる。
上述した手順でも良いが、サービス取得手順において、ドメイン生成手順で行っていた部品永続化データ関連付けテーブルへのプロパティ行の追加を行っても良い。以下の手順ではそれを行った場合について説明する。
第2の実施形態における部品結合ランタイム160によるサービス取得手順を、図9を用いて説明する。S402でアプリケーションコード123がサービス取得APIを呼び出す時、アプリケーションコード123はサービスを取得する対象となる部品121を指定すると共に、部品インスタンス130を識別するための部品インスタンス識別子を指定する。
アプリケーションコード123は取得したサービスの使い方を知っているので、サービスを複数取得する時もその区別はつく。従って、異なるサービス取得呼び出しに対して、異なる部品インスタンス識別子を指定することができる。尚、部品インスタンス識別子の形式は任意である。アプリケーション120内で一意であれば良い。
尚、S901〜S907での処理は、第1の実施形態で説明した図6に示すS601〜S607での処理と同じであり、その説明は省略する。
次に、部品結合ランタイム160は、生成したハンドラクラスのインスタンスの中に、サービス取得API呼び出し時に指定された部品インスタンス識別子を設定する(S908)。
次に、部品結合ランタイム160は、アプリケーション名、部品名、部品インスタンス識別子、その部品121が有する永続化対象のプロパティ名の組み合わせを、図2に示す(B)の部品永続化データ関連付けテーブルに追加する(S909)。その部品121が有する永続化対象のプロパティの個数分、行が追加される。アプリケーション名はアプリケーション識別子から取得される。部品名は部品識別子から取得される。
図2に示す(B)の部品永続化データ関連付けテーブルに指定された部品インスタンス識別子を持つ行が既にあれば、S505の処理と同様に、一致確認処理が行われる。また、S902で作成した部品インスタンス130への参照と、アプリケーション識別子、部品識別子、部品インスタンス識別子の間の関連付け情報をRAM105に格納しておく。このようにしておけば、部品インスタンス130の参照から、それを使用しているアプリケーション120の情報と、部品121の情報、部品インスタンス識別子情報を後で取得することができる。S910〜S911での処理は、S608〜S609と同様である。
次に、第2の実施形態におけるハンドラメソッド実行の詳細な手順を、図10を用いて説明する。尚、S1001〜S1004での処理は、第1の実施形態で説明した図7に示すS701〜S704での処理と同様である。
次に、ハンドラメソッドは部品インスタンス識別子を取得する(S1005)。上述のS907で、ハンドラクラスインスタンスに部品インスタンス識別子を設定済みなので、これは可能である。
次に、ハンドラメソッドはセッターメソッドが設定対象とするプロパティ124に対応するプロパティデータ131が永続化対象か否かを判定する(S1006)。ここでは、図2に示す(B)の部品永続化データ関連付けテーブルにおいて、取得したアプリケーション識別子と部品識別子、部品インスタンス識別子に対応する行の中に、識別したプロパティ124が存在するか否かを判定する。判定の結果、存在すれば、プロパティ124に対応するプロパティデータ131を永続化対象と見なすことができる。
S1006でプロパティデータ131が永続化対象であれば、セッターメソッドの引数として渡された設定値を部品永続化データ140に書き込み、永続化する(S1007)。そのプロパティデータ131に対して初めての永続化であれば、まだ部品永続化データ関連付けテーブルの永続化データ格納場所列204が空欄であるので、書き込みを行った場所の情報を永続化データ格納場所列204に格納する。また、永続化データ格納場所列204が空欄でない場合は、そこが前回の書き込み場所を示しているので、可能であれば同じ場所に書き込む。
一方、S1006でプロパティデータ131が永続化対象でなければ、S1007をスキップする。尚、S1008での処理は、S707での処理と同様であり、S1009での処理はS708での処理と同様である。
次に、第2の実施形態におけるインスタンス初期化手順の詳細を、図11を用いて説明する。尚、S1101〜S1103での処理は、第1の実施形態で説明した図8に示すS801〜S803と同様である。
次に、部品結合ランタイム160は、部品インスタンス識別子を取得する(S1104)。サービス取得API呼び出しにおいて、部品インスタンス識別子がアプリケーションコード123から渡されているので、部品インスタンス識別子の取得は可能である。
部品結合ランタイム160は、処理対象のプロパティ124に対応するプロパティデータ131が永続化対象か否かを判定する(S1105)。部品結合ランタイム160は、図2に示す(B)の部品永続化データ関連付けテーブルにおいて、取得したアプリケーション識別子と部品識別子、部品インスタンス識別子の組み合わせが指す行の中に、処理対象のプロパティ124が存在するか否かを判定する。判定の結果、存在すれば、永続化対象と見なすことができる。尚、これ以降のS1106〜S1111での処理は、S805〜S810と同様である。
[第3の実施形態]
次に、図面を参照しながら本発明に係る第3の実施形態を詳細に説明する。尚、第3の実施形態における部品結合装置の構成は、第1の実施形態で説明した図1に示す部品結合装置100の構成と同様であり、その説明は省略する。
次に、図面を参照しながら本発明に係る第3の実施形態を詳細に説明する。尚、第3の実施形態における部品結合装置の構成は、第1の実施形態で説明した図1に示す部品結合装置100の構成と同様であり、その説明は省略する。
第1及び第2の実施形態では、セッターメソッド実行時に永続化処理を行う例について述べてきた。第3の実施形態では、インスタンスを終了する処理を実行時に永続化処理を行う例を説明する。
アプリケーション実行手順のS406のドメインクローズ時に、そのアプリケーションコード123が作成した部品インスタンス130の終了処理を行う。S602で説明したように、ドメイン内の部品インスタンス130の情報が把握されているので、ドメイン内に持つ全ての部品インスタンス130に対して、終了処理を呼び出す。ドメインクローズのためのAPIは部品結合ランタイム160が提供する。
第3の実施形態におけるインスタンス終了手順を、図12を用いて説明する。まず部品結合ランタイム160は、処理対象の部品インスタンス130への参照から、アプリケーション識別子を取得する(S1201)。尚、図9のサービス取得手順で説明したように、部品インスタンス130への参照と、アプリケーション識別子の関連付け情報を持っているので取得が可能である。また、部品識別子と部品インスタンス識別子についても同様である。
次に、部品識別子を取得する(S1202)。そして、部品インスタンス識別子を取得する(S1203)。尚、ここでは第2の実施形態のように、部品インスタンス識別子を使用する場合について考えている。また、第1の実施形態のように、使用しない場合は、この処理はスキップされる。
次に、部品インスタンス130が有するプロパティデータ131を永続化する(S1204)。即ち、ここで取得した識別子を用いて部品永続化データ関連付けテーブル141から永続化データ格納場所情報を取得し、その格納場所に部品インスタンス130が有するプロパティデータ131を格納する。
最後に、部品結合ランタイム160は、部品インスタンス130の終了処理メソッドを呼び出す(S1205)。これは、部品121の終了時に後片付けが必要な場合に、部品121が提供するものである。
この第3の実施形態によれば、第1及び第2の実施形態で説明したセッターメソッドでの永続化処理が不要になるので、セッターメソッドの動作が速くなる。また、部品121がプロパティ124のセッターメソッドを提供しない場合、例えばセッターメソッド以外のメソッドやフィールドアクセスによってプロパティデータ131を変更する場合にも、永続化処理が可能である。
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
Claims (9)
- ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置であって、
前記部品を動作させる前に部品結合定義に従って部品を結合する結合手段と、
前記部品のインスタンスのプロパティデータを永続化させるべく保存する保存手段と、
前記部品のインスタンスを作成する時に、保存されたプロパティデータを前記インスタンスに設定する設定手段と、
を備えることを特徴とする部品結合装置。 - 前記保存手段は、前記アプリケーションが前記部品のインスタンスのプロパティデータを変更した時に、前記変更された部品のインスタンスのプロパティデータを、前記部品を使用するアプリケーションに関連付けて保存することを特徴とする請求項1に記載の部品結合装置。
- 前記保存手段は、前記アプリケーションが前記部品のインスタンスのプロパティデータを変更した時に、前記変更された部品のインスタンスのプロパティデータを、前記部品のインスタンスを作成する時にアプリケーションが指定したインスタンス識別子に関連付けて保存することを特徴とする請求項1に記載の部品結合装置。
- 前記保存手段は、前記部品のインスタンスを終了した時、前記部品を使用するアプリケーションに関連付けて保存された前記部品のインスタンスのプロパティデータを削除することを特徴とする請求項1に記載の部品結合装置。
- 前記手段は、前記部品のインスタンスを作成する時に、プロパティデータが保存されている場合、当該プロパティデータを前記インスタンスに設定し、保存されていない場合、前記部品結合定義に記述されているプロパティデータを前記インスタンスに設定することを特徴とする請求項1乃至4の何れか1項に記載の部品結合装置。
- ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置であって、
前記部品を動作させる前に部品結合定義に従って部品を結合する結合手段と、
前記部品が提供するサービスにアクセスするための代理のインスタンスを作成する作成手段と、
前記代理のインスタンスを用いてサービスの実行が要求された場合に、前記サービスが前記部品のインスタンスのプロパティデータを変更するものであるか否かを判別する判別手段と、
前記要求されたサービスが前記部品のインスタンスのプロパティデータを変更するものであると判別された場合に、前記部品を使用するアプリケーションに関連付けて前記変更された部品のインスタンスのプロパティデータを永続化させるべく保存する保存手段と、
前記部品のインスタンスを作成する時に、保存されたプロパティデータを前記インスタンスに設定する設定手段と、
を備えたことを特徴とする部品結合装置。 - ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置の処理方法であって、
結合手段が、前記部品を動作させる前に部品結合定義に従って部品を結合する結合工程と、
保存手段が、前記部品のインスタンスのプロパティデータを永続化させるべく保存する保存工程と、
設定手段が、前記部品のインスタンスを作成する時に、保存されたプロパティデータを前記インスタンスに設定する設定工程と、
を有することを特徴とする部品結合装置の処理方法。 - ソフトウェアとして実装される部品を結合して構成されたアプリケーションを実行する部品結合装置の処理方法であって、
結合手段が、前記部品を動作させる前に部品結合定義に従って部品を結合する結合工程と、
作成手段が、前記部品が提供するサービスにアクセスするための代理のインスタンスを作成する作成工程と、
判別手段が、前記代理のインスタンスを用いてサービスの実行が要求された場合に、前記サービスが前記部品のインスタンスのプロパティデータを変更するものであるか否かを判別する判別工程と、
保存手段が、前記要求されたサービスが前記部品のインスタンスのプロパティデータを変更するものであると判別された場合に、前記部品を使用するアプリケーションに関連付けて前記変更された部品のインスタンスのプロパティデータを永続化させるべく保存する保存工程と、
設定手段が、前記部品のインスタンスを作成する時に、保存されたプロパティデータを前記インスタンスに設定する設定工程と、
を有することを特徴とする部品結合装置の処理方法。 - コンピュータを請求項1乃至6の何れか1項に記載の部品結合装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010113422A JP2011242941A (ja) | 2010-05-17 | 2010-05-17 | 部品結合装置及びその処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010113422A JP2011242941A (ja) | 2010-05-17 | 2010-05-17 | 部品結合装置及びその処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011242941A true JP2011242941A (ja) | 2011-12-01 |
Family
ID=45409533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010113422A Withdrawn JP2011242941A (ja) | 2010-05-17 | 2010-05-17 | 部品結合装置及びその処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011242941A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015052875A (ja) * | 2013-09-06 | 2015-03-19 | 日本電信電話株式会社 | ソフトウェアコンポーネント生成装置、ソフトウェアコンポーネント生成方法、及びマネジメントエンジンシステム |
-
2010
- 2010-05-17 JP JP2010113422A patent/JP2011242941A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015052875A (ja) * | 2013-09-06 | 2015-03-19 | 日本電信電話株式会社 | ソフトウェアコンポーネント生成装置、ソフトウェアコンポーネント生成方法、及びマネジメントエンジンシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719386B2 (en) | Method for fault handling in a distributed it environment | |
US8176465B2 (en) | Pluggable model elements | |
WO2016123920A1 (zh) | 支持多类型数据库操作的集成接口的实现方法及系统 | |
US20110154226A1 (en) | Chip model of an extensible plug-in architecture for enterprise mashups | |
US8122433B2 (en) | Software documentation manager | |
JP2008501173A (ja) | 一般アプリケーションプログラムインタフェースを実装するためのシステム及び方法 | |
US9189223B2 (en) | Connecting method and apparatus for connecting a component included in an application with an external service | |
KR20080017351A (ko) | 데이터 중심형 워크플로의 방법, 시스템 및 컴퓨터판독가능 매체 | |
US10089084B2 (en) | System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language | |
JP2013537340A (ja) | ポータブルコンピューティングデバイスのリソースを管理するためのシステムおよび方法 | |
US20080127164A1 (en) | Configuration File Sharing | |
US9336020B1 (en) | Workflows with API idiosyncrasy translation layers | |
CN110716720A (zh) | 一种实现应用热部署的方法和装置 | |
US8738746B2 (en) | Configuration management for real-time server | |
CN111371851B (zh) | 一种连接方法、装置及电子设备和存储介质 | |
US20140114916A1 (en) | Code generation and implementation method, system, and storage medium for delivering bidirectional data aggregation and updates | |
US20080216050A1 (en) | Method and System for Accessing a Resource Implemented in a Computer Network | |
CN101136780A (zh) | 获取用户命令信息的方法、系统及用户命令注册的装置 | |
CN106055348B (zh) | 一种通知系统属性更新的方法和装置 | |
KR20110099214A (ko) | 동결된 개체들을 위한 형식 설명자 관리 | |
JP2007065837A (ja) | 状態制御方法、状態制御プログラムおよび状態制御プログラムを記録した記録媒体 | |
US10268496B2 (en) | System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment | |
JP2011242941A (ja) | 部品結合装置及びその処理方法 | |
JP2008305021A (ja) | 情報処理装置及びアプリケーション管理方法 | |
US8756243B2 (en) | Non-programmatic access to enterprise messaging administration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130806 |