JP2004252774A - コンポーネント生成実行機構およびプログラム - Google Patents
コンポーネント生成実行機構およびプログラム Download PDFInfo
- Publication number
- JP2004252774A JP2004252774A JP2003043304A JP2003043304A JP2004252774A JP 2004252774 A JP2004252774 A JP 2004252774A JP 2003043304 A JP2003043304 A JP 2003043304A JP 2003043304 A JP2003043304 A JP 2003043304A JP 2004252774 A JP2004252774 A JP 2004252774A
- Authority
- JP
- Japan
- Prior art keywords
- component
- application
- environment
- middleware
- generation
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【解決手段】コンポーネント動作条件定義記述17A,17Bの読み込みや実体生成の際のコンポーネント13A,13Bへの提供をミドルウェア12に代わって行うコンポーネント生成管理部18を設ける。これによりミドルウェア12に依存するコンポーネント動作条件定義記述の場所や、形式、定義内容に課せられていた制約が無くなる。また、従来のEJBでは、コンポーネントはミドルウェア用の固有のインタフェースを持っていたが、コンポーネントのインタフェースをコンポーネントI/F適用部19A,19Bによって高い自由度で提供可能にしたことでコンポーネントの採り得る構造にミドルウェアによる制約が課せられなくなり、汎用性の高いコンポーネント構造にできる。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、ミドルウェア上でコンポーネントを利用したアプリケーションを動作させるためのコンポーネント生成実行機構およびプログラムに関する。
【0002】
【従来の技術】
コンポーネントとは、アプリケーションを構築するためのビジネスロジックなどを実装したソフトウェア部品である。例として、米国Sun Microsystems社が提唱している規約であるEJB(Enterprise Java(登録商標) Beans)などがある。EJBは、Javaプログラム言語で分散オブジェクト指向の業務アプリケーションを構築するための標準コンポーネントアーキテクチャであり、異なるベンダのツールを使用し開発したコンポーネントを組み合わせることで分散アプリケーションの構築を可能とするものである。EJBを利用することによって、開発者は、アプリケーション開発時にビジネスロジックの開発だけに専念でき、効率的なアプリケーション開発が可能になる。
【0003】
EJBアーキテクチャにおいては、EJBコンポーネントの実行環境をコンテナが提供するようになっている。通常、このコンテナはEJBサーバによって管理される。EJBクライアント(アプリケーション)が、コンテナが提供する標準化されたインターフェイスを介してコンテナにEJBのオブジェクト生成を要求すると、コンテナは、Deployment Descripterと呼ばれる、コンポーネントの動作条件(トランザクション管理、セキュリティ管理などの属性値)を定義する記述を読み込み、これに基づいてコンポーネントの組み込み、インスタンス生成を行う。これにより実行可能なコンポーネントが生成される(たとえば、特許公報1参照)。
【0004】
【特許文献1】
特開2002−49496号公報
【0005】
さらに、EJBクライアントがコンテナが提供する標準化されたインターフェイスを介してコンポーネントのビジネスメソッドを呼び出すと、コンテナによってコンポーネントの実体に実装されたビジネスメソッドが呼び出されて、アプリケーションの機能として実行される。
【0006】
以上のように、EJBアーキテクチャにおいて、EJBコンポーネントを動作させるにはその実行環境を提供するEJBコンテナ、さらにこのEJBコンテナを管理するEJBサーバが不可欠である。これはEJBコンポーネントの実体の構造がEJB固有のものであり、他の動作環境でEJBコンポーネントを動作させることはできないことを意味する。
【0007】
また、EJBアーキテクチャでは、前述したように、コンテナがコンポーネントの動作条件定義記述を読み込むことによって実行可能なコンポーネントを生成しているが、動作条件の定義記述の置き場所はコンテナベンダーによって決められ、コンテナにその場所情報にアクセスする機能が実装されている。また、動作条件の定義記述の形式もコンテナに依存している。すなわち、EJBアーキテクチャでは、定義記述の場所、その記述形式、定義内容について多くの制約が課せられており、このことがシステムの設計の自由度を損ね、開発効率の向上を阻んでいた。
【0008】
たとえば、Deployment Descripterでは、コンポーネントの拡張実装などの定義は範疇外とされ、単一階層のキーと値の定義のみに制限され、ツリー構造を持つような複雑な設定情報を記述することはできない。このコンポーネントの拡張実装を実現するには、その拡張のための情報をアプリケーションもしくはコンポーネントの内部にハードコーディング、すなわち特定の動作環境で動作させることを前提とした処理やデータをソースコードの中に書き込んでプログラミングしなければならなかった。
【0009】
また、アプリケーションとコンポーネントとの間の相互作用をフレームワークで管理する方式は既に存在する(たとえば、特許公報2参照)。フレームワークとは、一般的には、多くの業務(アプリケーション)の共通部分のみを実装した雛形を指し、変更可能な部分についてはコンポーネント(ビジネスロジック)を組み込む(プラグインする)ことによって、個々の要求を満たすアプリケーションを少ない労力で開発することを可能とするものである。この特許公報の発明において、フレームワークは、アプリケーションからサービスの実装の要求、その実装に課せられる制約などを受けて、そのサービス(コンポーネント)の実装を動的に構築するものとして用いられている。
【0010】
【特許文献2】
特開2001−216162号公報
【0011】
【発明が解決しようとする課題】
本発明が解決しようとする課題としては、前述したように、EJBアーキテクチャにおけるコンポーネントの実体の構造に課せられた制約と、コンポーネント動作条件の定義記述の場所、記述形式、定義内容に課せられた制約がある。EJBコンポーネントの実体の構造に課せられた制約は、コンポーネントの実装を特定ミドルウェアに依存しない汎用的なものとすることを妨げ、コンポーネント動作条件の定義記述に関する制約は、コンポーネント型ソフトウェア開発の自由度を損ね、開発効率の向上を阻む一要因となっていた。
【0012】
本発明はこのような課題を解決するためになされたもので、コンポーネントの実体の構造に課せられる制約を軽減できるコンポーネント生成実行機構およびプログラムの提供を目的とする。
また、本発明は、コンポーネント動作条件定義記述の場所、記述形式、定義内容の制約を軽減できるコンポーネント生成実行機構およびプログラムの提供を目的とする。
【0013】
【課題を解決するための手段】
かかる目的を達成するために、本発明のコンポーネント生成実行機構は、オペレーティング・システム上で動作するミドルウェアと、前記ミドルウェア上で動作するアプリケーションと、前記アプリケーションによって利用されるコンポーネントと、前記コンポーネントが実体化して動作するのに必要な動作条件を記述したコンポーネント動作条件定義記述と、少なくとも前記コンポーネント動作条件定義記述が存在する任意の場所を含む前記コンポーネントの動作環境が記述され、前記ミドルウェアに読み込み処理が依存するコンポーネント環境定義記述と、前記コンポーネント環境定義記述の読み込みを前記ミドルウェアに依頼し、当該ミドルウェアによって読み込まれた前記コンポーネント環境定義記述に基づいて前記コンポーネントの動作環境を設定、管理するコンポーネント環境管理部と、前記コンポーネントのインタフェースを提供するコンポーネントI/F適用部と、前記コンポーネント環境管理部によって設定された前記動作環境に基づいて前記コンポーネント動作条件定義記述を読み込み、前記コンポーネントI/F適用部を通じて前記コンポーネントに動作条件を与えるとともに実体の生成を要求するコンポーネント生成管理部とを具備する。
【0014】
この発明によれば、コンポーネント動作条件定義記述の読み込みや実体生成の際のコンポーネントへの提供を、ミドルウェアに代わってコンポーネント生成管理部が行うことで、これまでのミドルウェアに依存するコンポーネント動作条件定義記述の場所や、形式、定義内容に課せられていた制約が無くなり、コンポーネント型ソフトウェア開発の自由度、開発効率の向上を図ることができる。
【0015】
また、コンポーネントのインタフェースをコンポーネントI/F適用部によって高い自由度で提供できるので、コンポーネントの採り得る構造にミドルウェアによる制約が課せられることがなくなり、汎用性の高いコンポーネント構造とすることが可能になる。
【0016】
また、本発明において、アプリケーションへの処理要求の発生時、アプリケーションは、コンポーネントI/F適用部にコンポーネントの生成要求を行い、この要求によりコンポーネントI/F適用部はコンポーネント環境管理部に環境情報の取得を要求し、コンポーネント環境管理部はこの要求に応じて環境情報をコンポーネントI/F適用部を介してコンポーネント生成管理部に渡すようにしてもよい。
【0017】
さらに、本発明において、コンポーネントは取得した動作条件に基づいて自らを実体化し、この実体への参照をコンポーネントI/F適用部を通じてアプリケーションに返し、アプリケーションは実体への参照を取得するとコンポーネントI/F適用部を介してコンポーネントに処理要求を行い、この処理要求によりコンポーネントは自らの実体に基づいて処理を実行し、その結果をコンポーネントI/F適用部を介してアプリケーションに返し、アプリケーションは当該処理結果を利用して自らの実装に基づいた処理を行い、その結果をミドルウェアを介して前記ユーザに返すようにしてもよい。
【0018】
さらに、本発明は、ミドルウェア上で動作するフレームワークを有し、このフレームワークにコンポーネント環境管理部およびコンポーネント生成管理部の機能がプラグインされた構成とすることも可能である。
【0019】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
図1に、本発明のコンポーネント生成実行機構を実施した一形態である情報システム100の構成を示す図である。
【0020】
同図に示すように、この情報システム100は、CPU1、メモリ2、外部記憶装置3、バス4などの一般的なコンピュータアーキテクチャを有するサーバコンピュータ10に構築されている。このサーバコンピュータ10はインターネットやLANなどのネットワーク5にネットワーク接続装置6を通じて接続されている。
【0021】
この情報システム100のソフトウェア要素としては、オペレーティング・システム11(以下、OSと呼ぶ。)と、ミドルウェア12と、アプリケーション14が利用するロジックを実装した1つ以上のコンポーネント13A,13Bと、各コンポーネント13A,13Bを利用するアプリケーション14と、コンポーネント環境定義記述15と、コンポーネント環境定義記述15に基づいて個々のコンポーネント13A,13Bの動作条件を記述したコンポーネント動作条件定義記述17A,17Bの場所を管理するコンポーネント環境管理部16と、コンポーネント動作条件定義記述17A,17Bに基づいてコンポーネント13A,13Bの実体生成を行うコンポーネント生成管理部18と、コンポーネント13A,13Bごとのインタフェースを提供するコンポーネントI/F適用部19A,19Bとを備えている。ここでコンポーネントの数は2としたが、その数に特に限定や制限はない。
【0022】
ミドルウェア12はOS11上で動作する。ミドルウェア12はアプリケーション・サーバと同義であり、トランザクション処理、負荷分散処理、データベース処理、そしてコンポーネント環境管理部16からの要求によりミドルウェア12に依存して決められた場所からコンポーネント環境定義記述15を読み込んでコンポーネント環境管理部16にその内容(環境情報)を返す処理などを行う。
【0023】
コンポーネントI/F適用部19A,19Bは個々のコンポーネント13A,13Bごとに用意され、それぞれアプリケーション14からの実体生成や利用の要求を受けて、自身に対応するコンポーネント13A,13Bにその処理を委譲する。また、コンポーネントI/F適用部19A,19Bは実体生成をコンポーネントに委譲する時、コンポーネント生成管理部18によって読み込まれたコンポーネント動作条件定義記述17A,17Bに基づく動作条件を対応するコンポーネント13A,13Bに引き渡し、対応するコンポーネント13A,13Bから渡された実体への参照をアプリケーション14に返す。
【0024】
コンポーネント環境定義記述15は、コンポーネント動作条件定義記述17A,17Bの場所などをコンポーネント環境管理部16に公開する定義文であり、たとえばXML(Extensible Markup Language)などの言語で記述される。図2に、XMLによるコンポーネント環境定義記述15の記述例を示す。201はコンポーネントを定義する記述の行、202はコンポーネント動作条件定義記述17A,17BのXMLファイルの場所の記述行である。
【0025】
コンポーネント動作条件定義記述17A,17Bは、コンポーネント13A,13Bを実体化する際のカスタマイズ方法などの動作条件がXMLなどの言語により記述された情報である。図3に、XMLによるコンポーネント動作条件定義記述の例を示す。XMLのスキーマはコンポーネント独自のものを利用することができる。このXMLの文書はファイル、あるいはデータベースのレコードとして存在することができる。
【0026】
この例はメールの送受信を行うコンポーネントのコンポーネント動作条件定義記述の例である。メールコンポーネントの実体はこのコンポーネント動作条件定義記述により指定することができる。メールコンポーネントの実体には、たとえばJavaMailと呼ばれる汎用のメールライブラリィやコンポーネントの開発者が独自に作成した実装クラスなどを指定することが可能である。
【0027】
符号301で示す<smtp−info>タグと</smtp−info>タグとの間はメール送信のための動作条件定義記述の記述、符号302で示す<pop−info>タグと</pop−info>タグとの間はメール受信のための動作条件定義記述の記述、符号303で示す<sender−handler>タグと</sender−handler>タグとの間はメールを送信する時に実際に用いるクラスの設定、符号304で示す<getter−handler>タグと</getter−handler>タグとの間はメールを受信する時に実際に用いるクラスの設定、符号305で示す<subject−handler>タグと</subject−handler>タグとの間はメール受信のサブジェクトを条件にして起動するプログラムの設定である。
【0028】
コンポーネント動作条件定義記述17A,17Bの場所はミドルウェア12に依存しない任意の場所とすることができる。一方、コンポーネント環境定義記述15はミドルウェア12による読み込みを前提としているので、その場所や、記述の形式、定義内容はミドルウェア12による制約の範囲で決められる。
【0029】
次に、このコンポーネント生成実行機構の動作手順を説明する。
【0030】
1.コンポーネントの実行環境の初期化
図4に示すように、アプリケーション管理者101によって初期化の操作が行われる。これは通常、ミドルウェア12の初期化によって行われる(1.初期化)。ミドルウェア12は登録されているアプケリーション14の初期化とコンポーネント環境管理部16の初期化を行う(2.初期化)。コンポーネント環境管理部16は、ミドルウェア12を通じて、ミドルウェア12に依存した形式で記述されているコンポーネント環境定義記述15を読み込み(3.読み込み)、その内容に基づく環境情報を設定たとえばメモリ2に格納する(5.コンポーネント環境設定)。
【0031】
2.コンポーネントの生成
図5に示すように、ユーザ102はアプリケーション14に対する処理要求を行う(1.処理要求)。ミドルウェア12は処理要求を解釈してアプリケーション14に対して処理要求を行う(2.処理要求)。アプリケーション14がコンポーネントA(13A)を利用するように作成されていた場合、処理要求を受けたアプリケーション14は、コンポーネントA(13A)がアプリケーション14に公開しているインタフェースであるコンポーネントI/F適用部19Aに対して生成要求を行う(3.生成要求)。コンポーネントI/F適用部19Aは、アプリケーション14からの生成要求を受けるとコンポーネント環境管理部16に対して環境情報の取得を要求する(4.環境情報取得)。コンポーネント環境管理部16は、この要求に応じて上記の初期化でメモリ2に格納しておいた環境情報をコンポーネントI/F適用部19Aに返す(5.返却)。
【0032】
コンポーネントI/F適用部19Aは環境情報を受け取ると、コンポーネント生成管理部18に対して環境情報を引き渡すとともにコンポーネントA(13A)の生成要求を行う(6.生成要求)。コンポーネント生成管理部18は、渡された環境情報に基づきコンポーネントA(13A)が実体化して動作するのに必要な動作条件を記述したコンポーネント動作条件定義記述17Aを読み込み(7.読み込み)、コンポーネントI/F適用部19Aに返す(8.返却)。
【0033】
コンポーネントI/F適用部19Aは、渡されたコンポーネント動作条件定義記述17Aに基づいて、汎用的な構造を持つコンポーネントA(13)に対して動作条件を与えるとともに実体の生成を要求する(9.実体生成)。コンポーネントA(13)は、渡された動作条件に基づいて自らを実体化し、この実体への参照をコンポーネントI/F適用部19Aへ返す(10.返却)。
【0034】
なお、実体生成の要求の度にコンポーネントの実体を生成することはハードウェア資源の利用効率の低下を招くので、一度生成された実体をプールしておき、次回以降の実体生成の要求に対しては、このプールされた実体への参照をコンポーネントI/F適用部19Aへ返すようにしてもよい。
【0035】
コンポーネントI/F適用部19Aは、コンポーネントA(13A)から渡された実体への参照をアプリケーション14に返す(11.返却)。このときコンポーネントAの実体はコンポーネントI/F適用部19Aに隠蔽されており、アプリケーション14が直接そのコンポーネントAの実体についての情報を保持する必要はない。
【0036】
3.コンポーネントの利用
アプリケーション14は、コンポーネントI/F適用部19Aに対して処理の要求を行う(12.処理要求)。コンポーネントI/F適用部19Aはアプリケーション14からの処理要求をコンポーネントA(13A)に委譲する(13.処理要求)。処理要求を委譲されたコンポーネントA(13A)は、自らの実体に基づいて処理を実行し、その結果をコンポーネントI/F適用部19Aに返却する(14.返却)。さらに、コンポーネントI/F適用部19AはコンポーネントA(13A)からの処理結果をアプリケーション14に返却する(15.返却)。アプリケーション14は、受け取った処理結果を利用して、自らの実装に基づいた処理を行い、その結果をミドルウェア12へ返却する(16.返却)。そしてミドルウェア12は、自らの実装に基づき処理結果をユーザに返却する(17.返却)。
【0037】
図6は、この実施形態で採用される汎用的なコンポーネントたとえばコンポーネントAの本体の構造例を示すクラス図である。
【0038】
コンポーネント生成共通インタフェース21は、コンポーネントの実体を生成する機能をもつクラスを作成する際に必要な共通部分を抜き出したクラスである。また、コンポーネント生成共通インタフェース21はコンポーネントの実体を生成するための操作方法をユーザに統一的に提供する。コンポーネントA生成クラス22はコンポーネントAの実体を生成する機能を持つ、コンポーネント生成共通インタフェース21のサブクラスであり、コンポーネント生成共通インタフェース21の差分として定義される。
【0039】
コンポーネント共通インタフェース23は、コンポーネントが共通に持つべき機能たとえば設定ファイルの定義内容のキャッシュなどの機能を抜き出したクラスである。また、コンポーネント共通インタフェース23はコンポーネント実体生成のための操作をコンポーネントA生成クラス22に対して統一的に提供する。コンポーネントA実装クラス24はコンポーネントAの機能が実装された、コンポーネント共通インタフェース23のサブクラスである。
【0040】
動作条件定義記述解釈インタフェース25は設定ファイルを読み込む際の共通の機能を抜き出したクラスである。コンポーネントA動作条件定義記述解釈クラス26は、個々のコンポーネント毎に異なる設定ファイルの書式を解釈して、コンポーネントの実装クラスに設定可能な形態に変換する、動作条件定義記述解釈インタフェース25のサブクラスである。
【0041】
図7は、上記の汎用的なコンポーネントAをコンポーネントI/F適用部19AによってEJBに適合させた場合の、コンポーネントI/F適用部19Aの構成の例を示すクラス図である。
【0042】
EJBはその仕様により、ひとつのコンポーネントを作成する場合に2つのインタフェース(Homeインタフェース、Remoteインタフェース)と1つのクラス(EJB実装クラス)を作成することを義務づけている。EJB実装クラスインタフェースはそのうちのEJB実装クラスを作成するときに利用するインタフェースである。
【0043】
EJBHomeインタフェース31とEJBRemoteインタフェース33はEJBの仕様として予め提供されるものである。EJBHomeインタフェース31は、EJBコンポーネントを生成する操作を利用側アプリケーション(EJBクライアントと呼ばれる。)に提供するためのインタフェースが共通に持つ操作を定義した上位インタフェースである。コンポーネントAHomeインタフェース32は、コンポーネントAを生成する操作を利用側アプリケーションに提供する機能をもつ、EJBHomeインタフェース31のサブインタフェースである。
【0044】
EJBRemoteインタフェース33は、EJBコンポーネントが提供する操作をEJBクライアントに提供するためのインタフェースが共通に持つ操作を定義した上位インタフェースである。コンポーネントARemoteインタフェース34は、コンポーネントAが提供する操作を利用側アプリケーションに提供する機能をもつ、EJBRemoteインタフェース33のサブインタフェースである。EJB実装クラスインタフェース35は、EJBコンポーネントの実際の処理を定義するクラスが、その性質毎に共通に持つインタフェースである。性質とは、データを永続化するもの、データを永続化しないもの、また、メッセージ駆動により起動するものの違いである。
【0045】
本来EJB実装クラスは、そのEJBがコンポーネントとして持つべき処理を内包しているが、本実施形態では、コンポーネントの処理はEJBという形態に関わり無く、コンポーネントA実装クラス24に定義されている。コンポーネントAEJB適合実装クラス36は、EJBとしての体裁を整え、かつ、実際の処理をコンポーネントA実装クラス24に委譲する役目を持つ。
【0046】
以上のように、この実施形態のコンポーネント生成実行機構によれば、以下のような効果を奏し得る。
【0047】
▲1▼コンポーネント動作条件定義記述17A,17Bの読み込みや実体生成の際のコンポーネント13A,13Bへの提供を、ミドルウェア12に代わってコンポーネント生成管理部18が行うので、これまでのミドルウェア12に依存するコンポーネント動作条件定義記述の場所や、形式、定義内容に課せられていた制約が無くなり、コンポーネント型ソフトウェア開発の自由度、開発効率の向上を図ることができる。
【0048】
▲2▼また、従来のEJBでは、コンポーネントはミドルウェア用の固有のインタフェースを持っていた。ここでコンポーネントのインタフェースとは、そのコンポーネントの特定の役割をコンポーネントが演じるために必要とされる機能や情報を定義したものである。これに対して本実施形態は、コンポーネントのインタフェースをコンポーネントI/F適用部19A,19Bによって高い自由度で提供できるので、コンポーネントの採り得る構造にミドルウェアによる制約が課せられることがなくなり、汎用性の高いコンポーネント構造とすることが可能になる。
【0049】
次に、本発明の他の実施形態を説明する。
一般的には、フレームワークは、多くの業務(アプリケーション)の共通部分のみを実装した雛形を指し、変更可能な部分についてはコンポーネント(ビジネスロジック)を組み込む(プラグインする)ことによって、個々の要求を満たすアプリケーションを少ない労力で開発することを可能とするものである。
【0050】
このフレームワークを本発明に適用して先の実施形態と同様のコンポーネント生成実行機構を実現することが可能である。
【0051】
図8に、このフレームワークを用いて本発明のコンポーネント生成実行機構を実施した一形態である情報システム100aの構成を示す。
【0052】
同図に示すように、この実施形態では、コンポーネント環境管理部16およびコンポーネント生成管理部18の機能をフレームワーク41にプラグインして構成されたものである。このフレームワーク41はミドルウェア12上で動作し、アプリケーション14はフレームワーク41の上に構築されている。その他の構成は図1と同様である。
【0053】
次に、このフレームワーク41を用いたコンポーネント生成実行機構の動作手順を説明する。
【0054】
1a.コンポーネントの実行環境の初期化
図9に示すように、アプリケーション管理者101によって初期化の操作が行われる。これは通常、ミドルウェア12の初期化によって行われる(1.初期化)。ミドルウェア12は登録されているアプケリーション14の初期化とフレームワーク41の初期化を行う(2.初期化)。続いてフレームワーク41はコンポーネント環境管理部16の初期化を行う(3.初期化)。コンポーネント環境管理部16は、ミドルウェア12、フレームワーク41を通じて、ミドルウェア12に依存した形式で記述されているコンポーネント環境定義記述15を読み込み(4.読み込み)、その内容に基づく環境情報をメモリ2に格納する(5.コンポーネント環境設定)。
【0055】
2a.コンポーネントの生成
図10に示すように、ユーザ102はアプリケーション14への処理要求を行う(1.処理要求)。ミドルウェア12は処理要求を解釈してフレームワーク41に処理要求を行う(2.処理要求)。フレームワーク41はこの処理要求をアプリケーション14に引き渡す(3.処理要求)。アプリケーション14がコンポーネントA(13A)を利用するように作成されていた場合、処理要求を受けたアプリケーション14は、コンポーネントA(13A)がアプリケーション14に公開しているインタフェースであるコンポーネントI/F適用部19Aに対して生成要求を行う(4.生成要求)。コンポーネントI/F適用部19Aは、アプリケーション14からの生成要求を受けるとコンポーネント環境管理部16に対して環境情報の取得を要求する(5.環境情報取得)。コンポーネント環境管理部16は、この要求に応じて上記の初期化でメモリ2に格納しておいた環境情報をコンポーネントI/F適用部19Aに返す(6.返却)。
【0056】
コンポーネントI/F適用部19Aは環境情報を受け取ると、コンポーネント生成管理部18に対して環境情報を提供するとともにコンポーネントA(13A)の生成要求を行う(7.生成要求)。コンポーネント生成管理部18は、渡された環境情報に基づきコンポーネントA(13A)が実体化して動作するのに必要な動作条件をコンポーネント動作条件定義記述17Aから読み込み(8.読み込み)、コンポーネントI/F適用部19Aに返す(9.返却)。
【0057】
コンポーネントI/F適用部19Aは、渡されたコンポーネント動作条件定義記述17Aに基づいて、汎用的な構造を持つコンポーネントA(13)に対して動作条件を与えるとともに実体の生成を要求する(10.実体生成)。コンポーネントA(13)は、渡された動作条件に基づいて自らを実体化し、この実体への参照をコンポーネントI/F適用部19Aへ返す(11.返却)。
【0058】
コンポーネントI/F適用部19Aは、コンポーネントA(13A)から渡された実体への参照をアプリケーション14に返す(11.返却)。このときコンポーネントAの実体はコンポーネントI/F適用部19Aに隠蔽されており、アプリケーション14が直接そのコンポーネントAの実体についての情報を保持する必要はない。
【0059】
3a.コンポーネントの利用
アプリケーション14は、コンポーネントI/F適用部19Aに対して処理の要求を行う(13.処理要求)。コンポーネントI/F適用部19Aはアプリケーション14からの処理要求をコンポーネントA(13A)に委譲する(14.処理要求)。処理要求を委譲されたコンポーネントA(13A)は、自らの実体に基づいて処理を実行し、その結果をコンポーネントI/F適用部19Aに返却する(15.返却)。さらに、コンポーネントI/F適用部19AはコンポーネントA(13A)からの処理結果をアプリケーション14に返却する(16.返却)。アプリケーション14は、受け取った処理結果を利用して、自らの実装に基づいた処理を行い、その結果をフレームワーク41へ返却する(17.返却)。さらにフレームワーク41はその処理結果をミドルウェア12に引き渡す(18.返却)。そしてミドルウェア12は、自らの実装に基づき処理結果をユーザに返却する(19.返却)。
【0060】
以上本発明の実施形態を説明したが、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【0061】
【発明の効果】
以上説明したように、本発明によれば、コンポーネント動作条件定義記述の読み込みや実体生成の際のコンポーネントへの提供を、ミドルウェアに代わってコンポーネント生成管理部が行うことで、これまでのミドルウェアに依存するコンポーネント動作条件定義記述の場所や、形式、定義内容に課せられていた制約が無くなり、コンポーネント型ソフトウェア開発の自由度、開発効率の向上を図ることができる。また、コンポーネントのインタフェースをコンポーネントI/F適用部によって高い自由度で提供できるので、コンポーネントの採り得る構造にミドルウェアによる制約が課せられることがなくなり、汎用性の高いコンポーネント構造とすることが可能になる。
【図面の簡単な説明】
【図1】本発明のコンポーネント生成実行機構を実施した一形態である情報システムの構成を示すブロック図である。
【図2】XMLによるコンポーネント環境定義記述15の例を示す図である。
【図3】XMLによるコンポーネント動作条件定義記述の例を示す図である。
【図4】コンポーネントの実行環境の初期化時の手順を示す図である。
【図5】コンポーネントの生成および利用時の手順を示す図である。
【図6】本実施形態で採用されたコンポーネントの本体の構造例を示すクラス図である。
【図7】図6のコンポーネントをコンポーネントI/F適用部によってEJBに適合させた場合のコンポーネントI/F適用部の構成の例を示すクラス図である。
【図8】フレームワークを用いて本発明のコンポーネント生成実行機構を実施した一形態である情報システムの構成を示すブロック図である。
【図9】図8のコンポーネント生成実行機構でのコンポーネントの実行環境の初期化時の手順を示す図である。
【図10】図8のコンポーネント生成実行機構でのコンポーネントの生成および利用時の手順を示す図である。
【符号の説明】
1・・・CPU、2・・・メモリ、10・・・サーバコンピュータ、11・・・オペレーティング・システム、12・・・ミドルウェア、13A,13B・・・コンポーネント、14・・・アプリケーション、15・・・コンポーネント環境定義記述、16・・・コンポーネント環境管理部、17A,17B・・・コンポーネント動作条件定義記述、18・・・コンポーネント生成管理部、19A,19B・・・コンポーネントI/F適用部、41・・・フレームワーク、100・・・情報システム
Claims (5)
- ミドルウェア上で動作するアプリケーションと、
前記アプリケーションによって利用されるコンポーネントと、
前記コンポーネントが実体化して動作するのに必要な動作条件を記述したコンポーネント動作条件定義記述と、
少なくとも前記コンポーネント動作条件定義記述が存在する任意の場所を含む前記コンポーネントの動作環境が記述され、前記ミドルウェアに読み込み処理が依存するコンポーネント環境定義記述と、
前記コンポーネント環境定義記述の読み込みを前記ミドルウェアに依頼し、当該ミドルウェアによって読み込まれた前記コンポーネント環境定義記述に基づいて前記コンポーネントの動作環境を設定、管理するコンポーネント環境管理部と、
前記コンポーネントのインタフェースを提供するコンポーネントI/F適用部と、
前記コンポーネント環境管理部によって設定された前記動作環境に基づいて前記コンポーネント動作条件定義記述を読み込み、前記コンポーネントI/F適用部を通じて前記コンポーネントに動作条件を与えるとともに実体の生成を要求するコンポーネント生成管理部と
を具備することを特徴とするコンポーネント生成実行機構。 - 前記アプリケーションへの処理要求の発生時、前記アプリケーションは、前記コンポーネントI/F適用部に前記コンポーネントの生成要求を行い、この要求により前記コンポーネントI/F適用部は前記コンポーネント環境管理部に前記環境情報の取得を要求し、前記コンポーネント環境管理部はこの要求に応じて前記環境情報を前記コンポーネントI/F適用部を介して前記コンポーネント生成管理部に渡すことを特徴とする請求項1に記載のコンポーネント生成実行機構。
- 前記コンポーネントは取得した前記動作条件に基づいて自らを実体化し、この実体への参照をコンポーネントI/F適用部を通じて前記アプリケーションに返し、前記アプリケーションは前記実体への参照を取得すると前記コンポーネントI/F適用部を介して前記コンポーネントに処理要求を行い、この処理要求により前記コンポーネントは自らの実体に基づいて処理を実行し、その結果を前記コンポーネントI/F適用部を介して前記アプリケーションに返し、前記アプリケーションは当該処理結果を利用して自らの実装に基づいた処理を行い、その結果を前記ミドルウェアを介して前記ユーザに返すことを特徴とするコンポーネント生成実行機構。
- 前記ミドルウェア上で動作するフレームワークを有し、このフレームワークに前記コンポーネント環境管理部および前記コンポーネント生成管理部の機能がプラグインされていることを特徴とする請求項1に記載のコンポーネント生成実行機構。
- ミドルウェア上で動作するアプリケーションによって利用されるコンポーネントが実体化して動作するのに必要な動作条件を記述したコンポーネント動作条件定義記述の場所を少なくとも含む前記コンポーネントの動作環境が記述され、前記ミドルウェアに読み込み処理が依存するコンポーネント環境定義記述の読み込みを前記ミドルウェアに依頼し、当該ミドルウェアによって読み込まれた前記コンポーネント環境定義記述に基づいて前記コンポーネントの動作環境を設定、管理するコンポーネント環境管理部と、
前記コンポーネントのインタフェースを提供するコンポーネントI/F適用部と、
前記コンポーネント環境管理部によって設定された前記動作環境に基づいて前記コンポーネント動作条件定義記述を読み込み、前記コンポーネントI/F適用部を通じて前記コンポーネントに動作条件を与えるとともに実体の生成を要求するコンポーネント生成管理部
としてコンピュータを機能させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003043304A JP2004252774A (ja) | 2003-02-20 | 2003-02-20 | コンポーネント生成実行機構およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003043304A JP2004252774A (ja) | 2003-02-20 | 2003-02-20 | コンポーネント生成実行機構およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004252774A true JP2004252774A (ja) | 2004-09-09 |
Family
ID=33026343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003043304A Pending JP2004252774A (ja) | 2003-02-20 | 2003-02-20 | コンポーネント生成実行機構およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004252774A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010142943A (ja) * | 2008-12-22 | 2010-07-01 | Korea Electronics Telecommun | ロボット応用プログラム実行装置及び方法 |
-
2003
- 2003-02-20 JP JP2003043304A patent/JP2004252774A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010142943A (ja) * | 2008-12-22 | 2010-07-01 | Korea Electronics Telecommun | ロボット応用プログラム実行装置及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8473896B2 (en) | Computer software development incorporating core and compound services | |
Watsen et al. | Bamboo-a portable system for dynamically extensible, real-time, networked, virtual environments | |
US7627865B2 (en) | Method and apparatus for accessing instrumentation data from within a managed code environment | |
US5860004A (en) | Code generator for applications in distributed object systems | |
US7546606B2 (en) | System and method using a connector architecture for application integration | |
US6721777B1 (en) | Modular and portable deployment of a resource adapter in an application server | |
US6564377B1 (en) | Self-describing components within a software catalog | |
Satoshi | HORB: Distributed execution of Java programs | |
US6597366B1 (en) | Transparent general purpose object isolation for multi-tier distributed object environments | |
Ben-Shaul et al. | Dynamic adaptation and deployment of distributed components in hadas | |
US20040172637A1 (en) | Code morphing manager | |
WO2003044661A1 (en) | System and method for implementing a service adapter | |
Wang et al. | Evaluating meta-programming mechanisms for ORB middleware | |
Humphrey et al. | An early evaluation of WSRF and WS-notification via WSRF. NET | |
US8676842B2 (en) | Creating multiple Mbeans from a factory Mbean | |
Schaaf et al. | Integrating Java and CORBA: A programmer's perspective | |
Raptis et al. | Multi-technology distributed objects and their integration | |
JP2004252774A (ja) | コンポーネント生成実行機構およびプログラム | |
Little et al. | Building configurable applications in Java | |
Dilley | Object-oriented distributed computing with C++ and OSF DCE | |
Lau et al. | Deployment contracts for software components | |
Mykkänen et al. | Component and Service Technology Families | |
Román et al. | Unified Object Bus: Providing support for dynamic management of heterogeneous components | |
Costanza et al. | The Comparand Pattern. | |
Selamat et al. | Software component models from a technical perspective |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20060110 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090127 |
|
A131 | Notification of reasons for refusal |
Effective date: 20090217 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Effective date: 20090420 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A02 | Decision of refusal |
Effective date: 20090602 Free format text: JAPANESE INTERMEDIATE CODE: A02 |