(57)【要約】【課題】  オブジェクト指向プログラミングにより作成されたアプリケーションにおいて、異なる仮想マシン上のプロセス間でオブジェクトを共有する。【解決手段】  通信手段１０１が仮想マシン１１１上で動作するプロセス１２１からオブジェクト登録要求とオブジェクト１２３を受信すると、制御手段１０３は、そのオブジェクト１２３を格納手段１０２に登録する。次に、通信手段１０１が仮想マシン１１２上で動作するプロセス１２２からオブジェクト取得要求を受信すると、制御手段１０３は、格納手段１０２からオブジェクト１２３を取得し、通信手段１０１は、取得されたオブジェクト１２３をプロセス１２２に送信する。【選択図】図１
2006268123.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムのバイトコードを実行環境に適したマシンコードに変換することで該アプリケーションプログラムを該実行環境で実行する機能を有する仮想マシン間で、情報を共有するための情報共有装置であって、
第１の仮想マシン上で動作する第１のプロセスと第２の仮想マシン上で動作する第２のプロセスのそれぞれと通信する通信手段と、
前記第１および第２のプロセスが共有する情報を保持するオブジェクトを格納する格納手段と、
前記第１のプロセスからオブジェクト登録要求とオブジェクトを受信したとき、該第１のプロセスから受信したオブジェクトを前記格納手段に登録する制御を行い、前記第２のプロセスからオブジェクト取得要求を受信したとき、前記格納手段から登録されたオブジェクトを取得して該第２のプロセスに送信する制御を行う制御手段と
を備えることを特徴とする情報共有装置。
【請求項２】
アプリケーションプログラムのバイトコードを実行環境に適したマシンコードに変換することで該アプリケーションプログラムを該実行環境で実行する機能を有する仮想マシン間で、情報を共有する処理を実行するコンピュータのための情報共有プログラムであって、
第１の仮想マシン上で動作する第１のプロセスからオブジェクト登録要求とオブジェクトを受信したとき、該第１のプロセスと第２の仮想マシン上で動作する第２のプロセスが共有する情報を保持するオブジェクトを格納する格納手段に、該第１のプロセスから受信したオブジェクトを登録し、
前記第２のプロセスからオブジェクト取得要求を受信したとき、前記格納手段から登録されたオブジェクトを取得して該第２のプロセスに送信する
処理を前記コンピュータに実行させることを特徴とする情報共有プログラム。
【請求項３】
前記情報共有プログラムは、前記コンピュータ内の第３の仮想マシンで実行されることを特徴とする請求項２記載の情報共有プログラム。
【請求項４】
前記第１のプロセスは、前記オブジェクトをシリアル化して前記第３の仮想マシンに転送し、該第３の仮想マシンは、転送されたデータから該オブジェクトを復元して前記格納手段に登録し、登録されたオブジェクトをシリアル化して前記第２のプロセスに転送することを特徴とする請求項３記載の情報共有プログラム。
【請求項５】
前記第３の仮想マシンは、前記格納手段に最初に登録されたオブジェクトを最後に取得することを特徴とする請求項３または４記載の情報共有プログラム。
【請求項６】
前記第３の仮想マシンは、前記格納手段に最初に登録されたオブジェクトを最初に取得することを特徴とする請求項３または４記載の情報共有プログラム。
【請求項７】
前記第３の仮想マシンは、前記第１のプロセスから受信したオブジェクトにキーを設定して前記格納手段に登録し、前記第２のプロセスから受信したキーに対応するオブジェクトを取得して該第２のプロセスに送信することを特徴とする請求項３または４記載の情報共有プログラム。
【請求項８】
アプリケーションプログラムのバイトコードを実行環境に適したマシンコードに変換することで該アプリケーションプログラムを該実行環境で実行する機能を有する仮想マシン間で、情報を共有するための情報共有方法であって、
通信手段が、第１の仮想マシン上で動作する第１のプロセスからオブジェクト登録要求とオブジェクトを受信し、
制御手段が、前記第１のプロセスと第２の仮想マシン上で動作する第２のプロセスが共有する情報を保持するオブジェクトを格納する格納手段に、該第１のプロセスから受信したオブジェクトを登録し、
前記通信手段が、前記第２のプロセスからオブジェクト取得要求を受信し、
前記制御手段が、前記格納手段から登録されたオブジェクトを取得し、
前記通信手段が、取得されたオブジェクトを前記第２のプロセスに送信する
ことを特徴とする情報共有方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向プログラミングにより作成されたアプリケーションを実行するシステムにおいて、異なる仮想マシン上のプロセス間で情報を共有するための装置に関する。
【背景技術】
【０００２】
Ｗｅｂアプリケーションは、インターネットやイントラネットのように、情報源となるサーバからユーザ端末に画面情報を配信する通信ネットワーク上で使用されるソフトウェアである（例えば、下記特許文献１を参照）。
【０００３】
図１２は、このようなＷｅｂアプリケーションの構成例を示している。この例では、Ｗｅｂアプリケーション１１は、クライアントレイヤ２１、プレゼンテーションレイヤ２２、ビジネスレイヤ２３、および永続化レイヤ２４の４つのレイヤからなる。クライアントレイヤ２１はクライアント端末上で動作する。プレゼンテーションレイヤ２２、ビジネスレイヤ２３、および永続化レイヤ２４はサーバ上で動作し、Ｊａｖａ（登録商標）と呼ばれるオブジェクト指向プログラミング言語で作成される。
【０００４】
クライアントレイヤ２１は、Ｗｅｂブラウザに対応し、プレゼンテーションレイヤ２２に対して要求を送信する。プレゼンテーションレイヤ２２は、クライアントレイヤ２１からの要求に応じて、Ｗｅｂ画面を表示するための画面情報をクライアントレイヤ２１に送信する。また、プレゼンテーションレイヤ２２は、ログイン時のクライアント認証等の処理も行う。
【０００５】
ビジネスレイヤ２３は、プレゼンテーションレイヤ２２からの要求に応じて、Ｗｅｂアプリケーションの業務処理（ビジネスロジック）を実行し、処理結果をプレゼンテーションレイヤ２２に転送する。永続化レイヤ２４は、ビジネスレイヤ２３が処理に用いるデータを、データベース１２に格納して永続化する。
【０００６】
このようにＷｅｂアプリケーションでは、サーバ上で動作するソフトウェアを、Ｗｅｂブラウザに画面を表示する機能と、画面表示から独立したビジネスロジックを実行する機能と、データベースアクセスに特化した機能とに分割することで、各機能の独立性と汎用性を高めている。
【０００７】
各機能の独立性を高めれば、アプリケーション開発や修正を機能毎に行うことが可能となり、作業が効率化される。例えば、プレゼンテーションレイヤとビジネスレイヤを分離することで、これらのレイヤのプログラムを効率よく開発することができ、開発コストの削減と品質の確保が期待できる。
【０００８】
また、イントラネット等において複数のユーザ端末間で情報を共有するシステムも知られている（例えば、下記特許文献２を参照）。
【特許文献１】特開２００３−１５８７０号公報
【特許文献２】特開２００３−８５０９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来のＷｅｂアプリケーションには、次のような問題がある。
プレゼンテーションレイヤとビジネスレイヤを完全に分離するためには、これらのレイヤを別々のＪａｖａ仮想マシンで実行することが望ましい。
【００１０】
Ｊａｖａ仮想マシンは、アプリケーションとプラットフォームの間に位置し、ハードウェアをエミュレートする。Ｊａｖａ仮想マシンは、Ｊａｖａ（登録商標）で作成されたアプリケーションのバイトコードを、使用するハードウェアおよびオペレーティングシステムに適したマシンコードに変換することで、アプリケーションを異なる実行環境で動作させることができる。
【００１１】
一方、Ｗｅｂアプリケーションにおいては、ログインしているユーザのユーザ名等のセッション情報がプレゼンテーションレイヤとビジネスレイヤの両方で必要となる場合がある。この場合、プレゼンテーションレイヤとビジネスレイヤがセッション情報を保持するセッションオブジェクトを共有することが望ましい。
【００１２】
しかしながら、異なるＪａｖａ仮想マシン間でオブジェクトを共有する仕組みがないため、プレゼンテーションレイヤとビジネスレイヤの両方がセッション情報を利用できるようにするためには、以下のいずれかの方法を用いる必要がある。
（１）セッション情報を一旦データベースに保存し、必要なときにそれを読み出す。
（２）プレゼンテーションレイヤとビジネスレイヤを同一のＪａｖａ仮想マシンで実行する。
【００１３】
（１）の方法では、データベースアクセスの時間がかかり過ぎるため、Ｗｅｂアプリケーションの処理速度が低下し、実用的な用途には適していない。（２）の方法では、処理の高速性は維持できるが、プレゼンテーションレイヤとビジネスレイヤの独立性が損なわれ、アプリケーション開発の効率が低下してしまう。
【００１４】
本発明の課題は、プレゼンテーションレイヤとビジネスレイヤのように、オブジェクト指向プログラミングにより作成されたアプリケーションにおいて、異なる仮想マシン上のプロセス間でオブジェクトを共有することである。
【課題を解決するための手段】
【００１５】
図１は、本発明の情報共有装置の原理図である。図１の情報共有装置は、アプリケーションプログラムのバイトコードを実行環境に適したマシンコードに変換することでそのアプリケーションプログラムをその実行環境で実行する機能を有する仮想マシン間で、情報を共有するための装置である。情報共有装置は、通信手段１０１、格納手段１０２、および制御手段１０３を備える。
【００１６】
通信手段１０１は、第１の仮想マシン１１１上で動作する第１のプロセス１２１と第２の仮想マシン１１２上で動作する第２のプロセス１２２のそれぞれと通信する。格納手段１０２は、プロセス１２１および１２２が共有する情報を保持するオブジェクト１２３を格納する。
【００１７】
制御手段１０３は、プロセス１２１からオブジェクト登録要求とオブジェクト１２３を受信したとき、プロセス１２１から受信したオブジェクト１２３を格納手段１０２に登録する制御を行い、プロセス１２２からオブジェクト取得要求を受信したとき、格納手段１０２から登録されたオブジェクト１２３を取得してプロセス１２２に送信する制御を行う。
【００１８】
通信手段１０１がプロセス１２１からオブジェクト登録要求とオブジェクト１２３を受信すると、制御手段１０３は、通信手段１０１からそのオブジェクト１２３を受け取り、共有オブジェクトとして格納手段１０２に登録する。次に、通信手段１０１がプロセス１２２からオブジェクト取得要求を受信すると、制御手段１０３は、格納手段１０２からオブジェクト１２３を取得して通信手段１０１に転送する。そして、通信手段１０１は、受け取ったオブジェクト１２３をプロセス１２２に送信する。
【００１９】
これにより、仮想マシン１１１上で動作するプロセス１２１と仮想マシン１１２上で動作するプロセス１２２の間で、オブジェクト１２３が保持する情報を共有することが可能になる。
【００２０】
通信手段１０１、格納手段１０２、および制御手段１０３は、例えば、後述する図４の通信インタフェース部４０１、オブジェクト格納部４０３、および入出力コントローラ部４０２にそれぞれ対応する。
【発明の効果】
【００２１】
本発明によれば、複数の異なる仮想マシン上のプロセス間でオブジェクトを共有することが可能になり、そのオブジェクトが保持する情報をこれらのプロセスが利用することができる。
【００２２】
したがって、Ｗｅｂアプリケーションにおけるプレゼンテーションレイヤとビジネスレイヤを異なる仮想マシンで実行した場合でも、セッション情報等をレイヤ間で共有することができる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図２は、実施形態のＷｅｂアプリケーションの構成例を示している。図２のＷｅｂアプリケーション２０１は、クライアントレイヤ２１１、プレゼンテーションレイヤ２１２、ビジネスレイヤ２１３、および永続化レイヤ２１４からなる。クライアントレイヤ２１１は、クライアント端末上で動作するＷｅｂブラウザ２２１を有する。プレゼンテーションレイヤ２１２、ビジネスレイヤ２１３、および永続化レイヤ２１４は、通信ネットワークを介してクライアント端末と接続されたサーバ上で動作する。
【００２４】
プレゼンテーションレイヤ２１２は、単独のＪａｖａ仮想マシンで実行され、ビジネスレイヤ２１３と永続化レイヤ２１４は、同一のＪａｖａ仮想マシンで実行される。プレゼンテーションレイヤ２１２のＪａｖａ仮想マシンとビジネスレイヤ２１３および永続化レイヤ２１４のＪａｖａ仮想マシンは、同一のサーバ上にあってもよく、別々のサーバ上にあってもよい。
【００２５】
プレゼンテーションレイヤ２１２は、プレゼンテーションの基盤技術としてＪＳＦ（Java Server Faces ）２３２を用いたアプリケーションサーバ２３１を有する。ＪＳＦ２３２は、ビジネスロジックとプレゼンテーションデザインの分離を目的とした、Ｗｅｂアプリケーションのインタフェースのためのフレームワークである。
【００２６】
ＪＳＦ２３２は、グラフィカルユーザインタフェース（ＧＵＩ）でＷｅｂアプリケーションを開発できるツールであり、Ｗｅｂアプリケーションを構成する画面コンポーネントをマウスでドラッグ＆ドロップすることにより、画面フォーム上に配置できる。また、コンポーネント毎に、イベントハンドラに相当するManaged Bean２３３を記述することができる。
【００２７】
ビジネスレイヤ２１３は、ビジネスオブジェクト２４２を生成するビジネスロジックコンテナ２４１を有し、ビジネスオブジェクト２４２は、ビジネスロジックを実行する。ビジネスオブジェクト２４２としては、例えば、ＰＯＪＯ（Plain Old Java Object ）が用いられる。これにより、ビジネスオブジェクト２４２の開発・試験時に特別な試験環境を必要とせず、また再利用性が高まる。
【００２８】
ビジネスロジックコンテナ２４１は、プレゼンテーションレイヤ２１２から処理要求が届くと、ビジネスオブジェクト２４２を生成して業務処理を依頼する。そして、業務処理が完了すると、そのビジネスオブジェクト２４２は廃棄される。同時に複数の処理要求が届いた場合は、複数のビジネスオブジェクト２４２が同時に生成される。
【００２９】
永続化レイヤ２１４は、データベース２０２にアクセスするためにＯＲマッピング２４５を有する。ＯＲマッピング２４５は、Ｊａｖａオブジェクトモデルのデータ表現を、ＳＱＬ（Structured Query Language ）ベースのスキーマを持つリレーショナルデータモデルにマッピングする。また、ＯＲマッピング２４５は、データベース２０２のスキーマからデータアクセスオブジェクト（ＤＡＯ）２４３を生成する。
【００３０】
アプリケーションサーバ２３１は、Ｗｅｂブラウザ２２１から要求を受信すると、その要求をManaged Bean２３３に通知し、Managed Bean２３３は、ビジネスロジックコンテナ２４１を呼び出す。これを受けて、ビジネスロジックコンテナ２４１は、ビジネスオブジェクト２４２を生成する。
【００３１】
生成されたビジネスオブジェクト２４２は、データベースアクセスを行うためにＤＡＯ２４３を獲得し、ＤＡＯ２４３を用いて、データベース２０２の表に相当するマッピングクラス２４４を獲得する。そして、マッピングクラス２４４のメソッドを使用して、データベース２０２を更新する。
【００３２】
処理結果は、データベース２０２からビジネスオブジェクト２４２、ビジネスロジックコンテナ２４１、Managed Bean２３３、アプリケーションサーバ２３１、Ｗｅｂブラウザ２２１の順番に通知される。
【００３３】
このようなＷｅｂアプリケーション２０１とは別に、プレゼンテーションレイヤを持たないアプリケーション２０３および２０４も設けられる。アプリケーション２０３および２０４は、Ｗｅｂアプリケーション２０１とは異なり、設定時刻に処理を起動したり、常に処理を実行し続けるタイプのものが多い。
【００３４】
アプリケーション２０３は、ビジネスレイヤ２５１および永続化レイヤ２５２からなり、ビジネスレイヤ２５１はバッチプロセス２５３を有し、永続化レイヤ２５２はＯＲマッピング２５４を有する。アプリケーション２０４は、ビジネスレイヤ２６１および永続化レイヤ２６２からなり、ビジネスレイヤ２６１はバッチプロセス２６３を有し、永続化レイヤ２６２はＯＲマッピング２６４を有する。
【００３５】
バッチプロセス２５３および２６３は、例えば、他サーバとの連携処理、夜間に実行されるデータ処理、ハードウェアとの通信処理等を行う。また、ビジネスオブジェクト２４２や他のバッチプロセスからイベントの通知を受け取ったり、他のバッチプロセスにイベントを通知したりすることができる。
【００３６】
ところで、Ｗｅｂアプリケーション２０１では、Managed Bean２３３およびビジネスオブジェクト２４２がオブジェクト共有機構２１５を介して、セッション情報や処理結果等のデータを持つオブジェクトを共有することができる。以下では、このオブジェクト共有機構２１５を用いたデータ共有の仕組みについて、図３から図１１までを参照しながら説明する。
【００３７】
図３は、図２のＷｅｂアプリケーション２０１を実現するオブジェクト共有システムの構成例を示している。図３のシステムは、クライアント端末３０１、サーバ３０２、およびデータベース２０２からなり、クライアント端末３０１にはクライアントレイヤ２１１が実装され、サーバ３０２にはプレゼンテーションレイヤ２１２、ビジネスレイヤ２１３、および永続化レイヤ２１４が実装される。
【００３８】
サーバ３０２のメモリ３１１上にはオブジェクト共有機構２１５が設けられる。プロセス３２１および３２２は、プレゼンテーションレイヤ２１２のＪａｖａ仮想マシン、またはビジネスレイヤ２１３および永続化レイヤ２１４のＪａｖａ仮想マシンに対応し、オブジェクト共有機構２１５にオブジェクトを登録したり、登録されたオブジェクトを取得したりする。
【００３９】
オブジェクト共有機構２１５は、それ自身が単独のＪａｖａ仮想マシンとして動作し、プロセス３２１および３２２からのアクセスはドライバクラスを用いて行われる。プロセス３２１および３２２とオブジェクト共有機構２１５の間の通信には、ＲＭＩ（Remote Method Invocation）が用いられる。
【００４０】
ＲＭＩは、異なる装置上のプロセス間で通信ネットワークを介して通信を行う機構であり、転送されるオブジェクトの内部状態をバイトストリームに変換するシリアル化（serialize ）の機能と、そのバイトストリームから再び元と同じ内容を持ったオブジェクトを復元する機能とを含む。したがって、共有されるオブジェクトは、シリアル化可能である必要がある。
【００４１】
プロセス３２１、３２２、およびオブジェクト共有機構２１５は、同じサーバ３０２内に存在するが、別々のサーバ上に存在する場合と同様の手順で、ＲＭＩによりプロセス間通信を行う。
【００４２】
サーバ３０２は、ＣＰＵ（中央処理装置）を備えた情報処理装置（コンピュータ）であり、メモリ３１１に格納されたプログラムを実行することで、プロセス３２１、３２２、およびオブジェクト共有機構２１５を動作させる。動作に必要なプログラムは、外部装置からの搬送信号や可搬記録媒体を介してサーバ３０２に供給される。
【００４３】
図４は、オブジェクト共有機構２１５の構成例を示している。図４のオブジェクト共有機構は、通信インタフェース部４０１、入出力コントローラ部４０２、オブジェクト格納部４０３、名称管理部４０４、タイプ管理部４０５、および最大登録数管理部４０６からなる。
【００４４】
通信インタフェース部４０１は、ＲＭＩによりプロセス３２１および３２２との通信処理を行う。オブジェクト格納部４０３は、メモリ３１１上でオブジェクトを格納する共有の格納領域として用いられ、名称管理部４０４、タイプ管理部４０５、および最大登録数管理部４０６は、その格納領域の名称、共有タイプ、および最大登録数をそれぞれ保持する。また、入出力コントローラ部４０２は、これらの各部の動作を制御する。
【００４５】
格納領域の名称は、その領域の生成時に設定されるユニークな識別情報であり、最大登録数は、その領域に登録可能なオブジェクトの最大数である。また、格納領域の共有タイプとしては、例えば、スタック、キュー、およびランダムアクセスの３種類が用意される。
【００４６】
スタックタイプの格納領域では、オブジェクトを１つずつ登録し、１つずつ取得することで、オブジェクトの受け渡しが行われる。最初に登録されたオブジェクトが最後に取り出されるため、ＦＩＬＯ（First In Last Out ）型とも呼ばれる。
【００４７】
キュータイプの格納領域では、スタックタイプと同様に、オブジェクトを１つずつ登録し、１つずつ取得することで、オブジェクトの受け渡しが行われる。最初に登録されたオブジェクトが最初に取り出されるため、ＦＩＦＯ（First In First Out）型とも呼ばれる。
【００４８】
ランダムアクセスタイプの格納領域では、登録されるオブジェクトにキーを設定することで、複数のキーに対応する複数のオブジェクトの取得が可能になる。登録に際して、キーの重複は認められない。
【００４９】
格納領域からオブジェクトを取得する方法には、参照および取り出しの２通りがある。参照の場合は、格納領域にオブジェクトが登録されたままの状態でそのオブジェクトが取得され、取り出しの場合は、オブジェクトを取得したときに格納領域からそのオブジェクトが削除される。
【００５０】
図５は、オブジェクト共有機構２１５による格納領域の初期化処理のフローチャートである。この初期化処理では、指定された名称を持つ格納領域を利用可能にするため、オブジェクト格納部４０３、名称管理部４０４、タイプ管理部４０５、および最大登録数管理部４０６が生成される。
【００５１】
入出力コントローラ部４０２は、プロセス３２１から初期化指示とともに、名称、共有タイプ、および最大登録数を指定パラメータとして受け取ると、その名称を保持する名称管理部４０４を生成し、対応するオブジェクト格納部４０３の領域を確保する（ステップ５０１）。また、受け取った共有タイプおよび最大登録数をそれぞれ保持するタイプ管理部４０５および最大登録数管理部４０６を生成する。
【００５２】
このとき、名称管理部４０４には、オブジェクト格納部４０３、タイプ管理部４０５、および最大登録数管理部４０６にアクセスするためのアドレス情報が登録される。
図６は、共有タイプとしてスタックまたはキューが指定された場合のオブジェクト登録処理のフローチャートである。この登録処理では、格納先の空きと最大登録数のチェックを行った後に、格納領域の先頭に指定されたオブジェクトが格納される。
【００５３】
まず、プロセス３２１は、登録要求とともに格納先の名称と登録すべきオブジェクトを、ＲＭＩを用いてオブジェクト共有機構２１５に送信する。このとき、オブジェクトは、プロセス３２１によりシリアル化されて転送される。通信インタフェース部４０１は、受信データからオブジェクトを復元し、名称とともに入出力コントローラ部４０２に転送する。
【００５４】
入出力コントローラ部４０２は、受け取った名称を保持する名称管理部４０４にアクセスし、その名称を持つオブジェクト格納部４０３に空きがあるか否かをチェックする（ステップ６０１）。ここでは、オブジェクト格納部４０３に登録済みのオブジェクトの数と最大登録数管理部４０６に保持された最大登録数を比較することで、オブジェクト格納部４０３の空きがチェックされる。
【００５５】
オブジェクト格納部４０３に空きがあれば、入出力コントローラ部４０２は、そのオブジェクト格納部４０３の先頭にオブジェクトを格納する（ステップ６０２）。
図７は、共有タイプとしてランダムアクセスが指定された場合のオブジェクト登録処理のフローチャートである。この登録処理では、格納先の空きと最大登録数のチェックを行った後に、指定されたキーがすでに登録されているか否かが確認される。指定されたキーがすでに登録されていれば、登録済みのオブジェクトを削除した後に、格納領域の先頭に指定されたオブジェクトが格納される。
【００５６】
まず、プロセス３２１は、登録要求とともに格納先の名称、登録すべきオブジェクト、およびキーを、ＲＭＩを用いてオブジェクト共有機構２１５に送信する。
入出力コントローラ部４０２は、受け取った名称を持つオブジェクト格納部４０３に空きがあるか否かをチェックする（ステップ７０１）。オブジェクト格納部４０３に空きがあれば、そのオブジェクト格納部４０３にキーの重複があるか否かをチェックする（ステップ７０２）。ここでは、受け取ったキーを持つオブジェクトがオブジェクト格納部４０３から取得できるかどうかを確認することで、キーの重複がチェックされる。そして、キーの重複があれば、そのキーで登録済みのオブジェクトをオブジェクト格納部４０３から削除する（ステップ７０５）。
【００５７】
次に、登録すべきオブジェクトに受け取ったキーを設定し（ステップ７０３）、そのオブジェクト格納部４０３の最後にオブジェクトを格納する（ステップ７０４）。
図８は、共有タイプとしてスタックが指定された場合のオブジェクト取得処理のフローチャートである。この取得処理では、指定された名称の格納領域の先頭からオブジェクトが取得される。このとき、削除指定の有／無に応じて取り出し／参照が行われる。
【００５８】
入出力コントローラ部４０２は、プロセス３２２から取得要求とともに、名称および削除指定の有／無を指定パラメータとして受け取ると、受け取った名称を保持する名称管理部４０４にアクセスし、その名称を持つオブジェクト格納部４０３の先頭からオブジェクトを取得する（ステップ８０１）。これにより、オブジェクト格納部４０３に登録されたオブジェクトのうち、最後に登録されたものが取得される。
【００５９】
次に、削除指定の有／無をチェックし（ステップ８０２）、削除指定が有れば、そのオブジェクト格納部４０３の先頭にあるオブジェクトを削除する（ステップ８０３）。
入出力コントローラ部４０２は、取得したオブジェクトを通信インタフェース部４０１に転送し、通信インタフェース部４０１は、そのオブジェクトをＲＭＩを用いてプロセス３２２に送信する。このとき、オブジェクトは、通信インタフェース部４０１によりシリアル化されて転送され、プロセス３２２は、受信データからオブジェクトを復元する。
【００６０】
図９は、共有タイプとしてキューが指定された場合のオブジェクト取得処理のフローチャートである。この取得処理では、指定された名称の格納領域の最後からオブジェクトが取得される。このとき、削除指定の有／無に応じて取り出し／参照が行われる。
【００６１】
ステップ９０１〜９０３の処理は、基本的には図８のステップ８０１〜８０３の処理と同様である。ただし、ステップ９０１では、オブジェクト格納部４０３の最後からオブジェクトが取得され、ステップ９０３では、オブジェクト格納部４０３の最後にあるオブジェクトが削除される。
【００６２】
図１０は、共有タイプとしてランダムアクセスが指定された場合のオブジェクト取得処理のフローチャートである。この取得処理では、指定された名称の格納領域から、指定された１つ以上のキーにそれぞれ対応するオブジェクトが取得される。このとき、削除指定の有／無に応じて取り出し／参照が行われる。
【００６３】
入出力コントローラ部４０２は、プロセス３２２から取得要求とともに、名称、キー、および削除指定の有／無を指定パラメータとして受け取ると、受け取った名称を持つオブジェクト格納部４０３から、受け取ったキーに対応するオブジェクトを取得する（ステップ１００１）。複数のキーを受け取った場合は、キーの数だけオブジェクトの取得が繰り返される。
【００６４】
次に、削除指定の有／無をチェックし（ステップ１００２）、削除指定が有れば、そのオブジェクト格納部４０３から、受け取ったキーに対応するオブジェクトを削除する（ステップ１００３）。複数のキーを受け取った場合は、キーの数だけオブジェクトの削除が繰り返される。
【００６５】
入出力コントローラ部４０２は、取得したオブジェクトを通信インタフェース部４０１に転送し、通信インタフェース部４０１は、そのオブジェクトをＲＭＩを用いてプロセス３２２に送信する。
【００６６】
図１１は、格納領域の開放処理のフローチャートである。この開放処理では、指定された名称を持つ格納領域を開放するため、オブジェクト格納部４０３、名称管理部４０４、タイプ管理部４０５、および最大登録数管理部４０６が削除される。
【００６７】
入出力コントローラ部４０２は、プロセス３２１から開放指示とともに、名称を指定パラメータとして受け取ると、その名称を保持する名称管理部４０４にアクセスし、対応するオブジェクト格納部４０３の領域を開放する（ステップ１１０１）。そして、対応するタイプ管理部４０５および最大登録数管理部４０６を削除し、名称管理部４０４を削除する。
【００６８】
以上説明した実施形態では、メモリ３１１上に設けられたオブジェクト格納部４０３のみにオブジェクトが格納され、開放処理によりオブジェクトが削除されてしまう。そこで、登録されたオブジェクトを再利用したい場合は、オブジェクト格納部４０３からデータベース２０２にオブジェクトを保存しておき、必要なときにデータベース２０２から読み出すようにしてもよい。
【００６９】
また、図３の構成では、プロセス３２１、３２２、およびオブジェクト共有機構２１５が同じサーバ３０２上で動作しているが、これらが別々のサーバ上で動作している場合でも、ＲＭＩにより同様のオブジェクト登録／取得処理を実行することが可能である。
【図面の簡単な説明】
【００７０】
【図１】本発明の情報共有装置の原理図である。
【図２】本発明のＷｅｂアプリケーションの構成図である。
【図３】オブジェクト共有システムの構成図である。
【図４】オブジェクト共有機構の構成図である。
【図５】初期化処理のフローチャートである。
【図６】スタック／キュータイプの登録処理のフローチャートである。
【図７】ランダムアクセスタイプの登録処理のフローチャートである。
【図８】スタックタイプの取得処理のフローチャートである。
【図９】キュータイプの取得処理のフローチャートである。
【図１０】ランダムアクセスタイプの取得処理のフローチャートである。
【図１１】開放処理のフローチャートである。
【図１２】従来のＷｅｂアプリケーションの構成図である。
【符号の説明】
【００７１】
１１、２０１  Ｗｅｂアプリケーション
１２、２０２  データベース
１０１  通信手段
１０２  格納手段
１０３  制御手段
１１１  第１の仮想マシン
１２１  第１のプロセス
１１２  第２の仮想マシン
１２２  第２のプロセス
１２３  オブジェクト
２１、２１１  クライアントレイヤ
２２、２１２  プレゼンテーションレイヤ
２３、２１３、２５１、２６１  ビジネスレイヤ
２４、２１４、２５２、２６２  永続化レイヤ
２１５  オブジェクト共有機構
２２１  Ｗｅｂブラウザ
２３１  アプリケーションサーバ
２３２  Java Server Faces 
２３３  Managed Bean
２４１  ビジネスロジックコンテナ
２４２  ビジネスオブジェクト
２４３  データアクセスオブジェクト
２４４  マッピングクラス
２４５、２５４、２６４  ＯＲマッピング
２０３、２０４  アプリケーション
２５３、２６３  バッチプロセス
３０１  クライアント端末
３０２  サーバ
３１１  メモリ
３２１、３２２  プロセス
４０１  通信インタフェース部
４０２  入出力コントローラ部
４０３  オブジェクト格納部
４０４  名称管理部
４０５  タイプ管理部
４０６  最大登録数管理部
【図１】
2006268123.tif 000003
【図２】
2006268123.tif 000004
【図３】
2006268123.tif 000005
【図４】
2006268123.tif 000006
【図５】
2006268123.tif 000007
【図６】
2006268123.tif 000008
【図７】
2006268123.tif 000009
【図８】
2006268123.tif 000010
【図９】
2006268123.tif 000011
【図１０】
2006268123.tif 000012
【図１１】
2006268123.tif 000013
【図１２】
2006268123.tif 000014