(57)【要約】    【課題】  ＥＪＢ規約に準拠したＥＪＢを利用したアプリケーションにおいても、アプリケーション共通のデータを参照する場合に発生していた非効率な手順を低減し、メモリ常駐型オブジェクトの単一性を保証した場合と同じ結果を得ることができる情報処理方法を提供する。    【解決手段】  共通情報クラス１０４がインスタンス化されると、Servlet基底クラス１０３は、ＥＪＢコンテナ１０２の共通情報を取得するＥＪＢ２０３を呼び出す。ＥＪＢ２０３を呼び出したServlet基底クラス１０３は、呼び出されたＥＪＢ２０３がデータベースサーバ１１０のデータベース１１１にアクセスして収集した共通情報２０４をＥＪＢ２０３からの返り値として受け取る。さらに、共通情報クラス１０４は、Servlet基底クラス１０３から共通情報２０４を受け取り、自身の変数として保持する。【選択図】      図１
2006107372.tif 000002
【特許請求の範囲】
【請求項１】
ＥＪＢに共通情報取得機能を持たせ、
ＥＪＢクライアントが共通情報の単一オブジェクトを作成し、ＥＪＢの共通情報取得機能を呼び出して取得した共通データを前記作成された単一オブジェクトに格納する
ことを特徴とする情報処理方法。
【請求項２】
前記ＥＪＢクライアントが作成した前記単一オブジェクトに、ＥＪＢの共通情報取得機能を呼び出させ、共通データを取得させ、該単一オブジェクト自身に格納させることを特徴とする請求項１記載の情報処理方法。
【請求項３】
前記単一オブジェクトを用いてＥＪＢに対して処理を依頼するために、前記ＥＪＢの呼び出しの際に渡すメソッド引数の１つに前記単一オブジェクトが含まれることを特徴とする請求項１または２記載の情報処理方法。
【請求項４】
前記ＥＪＢの呼び出しの際に渡すメソッド引数の１つである他のオブジェクトの変数に前記単一オブジェクトが含まれることを特徴とする請求項３記載の情報処理方法。
【請求項５】
前記ＥＪＢクライアントが共通情報の単一オブジェクトとして少なくとも１つのオブジェクトを作成し、既存の共通情報のオブジェクトを破棄して前記作成された単一オブジェクトに置き換え、前記ＥＪＢクライアントがＥＪＢの共通情報取得機能を呼び出して取得した共通データを置き換え後の単一オブジェクトに格納することを特徴とする請求項１または２記載の情報処理方法。
【請求項６】
前記ＥＪＢクライアントが、共通データを格納しているデータベースから、共通情報のオブジェクトを置き換えるためのデータ更新完了通知を受け取ることを特徴とする請求項５記載の情報処理方法。
【請求項７】
ＷＷＷクライアントから共通情報を置き換える処理の実行依頼が出されると、前記ＥＪＢクライアントが、共通情報のオブジェクトを置き換えるための通知を受け取ることを特徴とする請求項５記載の情報処理方法。
【請求項８】
前記ＥＪＢクライアントが置き換えた単一オブジェクトにＥＪＢの共通情報取得機能を呼び出させ、共通データを取得させ、前記単一オブジェクト自身に格納させることを特徴とする請求項５記載の情報処理方法。
【請求項９】
前記ＥＪＢクライアントが、前記ＥＪＢ内の共通情報更新処理から共通情報のオブジェクトを置き換えるための処理完了通知を受け取ることを特徴とする請求項６記載の情報処理方法。
【請求項１０】
請求項１乃至９に記載の情報処理方法の各処理を、情報処理装置に実行させるためのコンピュータ実行可能なプログラムコード。
【請求項１１】
ＥＪＢに共通情報取得機能を持たせ、
ＥＪＢクライアントが共通情報の単一オブジェクトを作成し、ＥＪＢの共通情報取得機能を呼び出して取得した共通データを前記作成された単一オブジェクトに格納する処理を、ＣＰＵに実行させることを特徴とした情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＪＢクライアントが共通情報の単一オブジェクトを作成する情報処理方法、プログラムコードおよび情報処理装置に関する。
【背景技術】
【０００２】
従来、ＥＪＢ（Enterprise Java（登録商標）Beans）を用いたアプリケーションにおいては、データベースに格納されたデータを、データ取得用のＥＪＢまたはＪＤＢＣを利用したクラスを経由して取得する仕組みが採用されている（例えば特許文献１）。この仕組みにおいては、所属情報テーブルやエラーコードテーブルのような、内容の変更が少なく、複数の処理に共通に利用され、頻繁に参照が繰り返されるデータに関しても、データの取得の都度、ＥＪＢ規約に従ってＥＪＢやＪＤＢＣを利用したクラスを経由しなければならない。そのため、参照までの手順が煩雑であり、参照するテーブルが増加するなどして参照回数が増加し、また多数のユーザが同時にアクセスする場合などには、レスポンスの悪化が生じる場合がある。また、プログラムの保守性の低下などが生じる場合がある。これらは、システムの品質に直結する問題を生じる場合がある。
【０００３】
上記のように頻繁な参照を主目的とする、特に複数の処理に共通に利用されるアプリケーション共通のデータについては、従来、アプリケーションの初期化処理などにおいて共通に参照可能な単一のメモリ常駐オブジェクトを作成し、アプリケーション内の各処理からこのオブジェクトを参照することによってレスポンスの悪化などの不具合が生じないように対策されている。しかし、ＥＪＢにおいては、ＥＪＢ規約により個々のＥＪＢからこのようなメモリ常駐オブジェクトを参照する手法が認められておらず、これを実装することは、ＥＪＢ規約に準拠したものにならない。そのため、複数のＥＪＢを有するアプリケーションの場合には、この方法を採用することができない。
【０００４】
このような共通に参照可能なオブジェクトとして、ＥＪＢ規約においては、単一のＥＪＢを作成するという手段が提供されている。しかしながら、提供される手法は、実際の動作をＷｅｂアプリケーションサーバ毎のＥＪＢコンテナ実装方法に依存するものである。従って、ＥＪＢ規約に準拠したＷｅｂアプリケーションサーバであっても、単一のオブジェクトを参照しているという保証がない。このため、Ｗｅｂアプリケーションサーバによっては、ある時点で一つのＥＪＢは、更新された共通データを参照し、他の一つのＥＪＢは、更新前の共通データを参照するという不整合が発生する可能性がある。
【特許文献１】特開２０００−３５７０８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したように、ＥＪＢを利用したアプリケーションにおいては、データベースに格納されたデータを、データ取得用のＥＪＢまたはＪＤＢＣを利用したクラスを経由して取得する必要があるため、参照までの手順が煩雑であり、参照するテーブルが増加するなどして参照回数が増加する。また、多数のユーザが同時にアクセスする場合などには、レスポンスの悪化が生じる可能性がある。また、プログラムの保守性の低下などが生じる可能性がある。
【０００６】
また、ＥＪＢ規約に準拠する場合、複数のＥＪＢ内の処理で共通に参照可能なメモリ常駐型オブジェクトを作成することはできず、また、共通情報の単一のＥＪＢを作成しても、実際の動作は、Ｗｅｂアプリケーションサーバソフトウェア毎のＥＪＢコンテナの実装方法に依存しており、単一のＥＪＢの参照は保証されないので、複数のＥＪＢ内の処理において、不整合が発生する可能性がある。
【０００７】
本発明の目的は、ＥＪＢ規約に準拠したＥＪＢを利用したアプリケーションにおいても、アプリケーション共通のデータを参照する場合に発生していた非効率な手順を低減し、メモリ常駐型オブジェクトの単一性を保証した場合と同じ結果を得ることができる情報処理方法、プログラムコードおよび情報処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、上記目的を達成するため、ＥＪＢに共通情報取得機能を持たせ、ＥＪＢクライアントが共通情報の単一オブジェクトを作成し、ＥＪＢの共通情報取得機能を呼び出して取得した共通データを前記作成された単一オブジェクトに格納することを特徴とする情報処理方法を提供する。
【０００９】
また、本発明は、上記目的を達成するため、上記情報処理方法の各処理を、情報処理装置に実行させるためのコンピュータ実行可能なプログラムコードを提供する。
【００１０】
また、本発明は、上記目的を達成するため、ＥＪＢに共通情報取得機能を持たせ、ＥＪＢクライアントが共通情報の単一オブジェクトを作成し、ＥＪＢの共通情報取得機能を呼び出して取得した共通データを前記作成された単一オブジェクトに格納する処理を、ＣＰＵに実行させることを特徴とした情報処理装置を提供する。
【発明の効果】
【００１１】
本発明によれば、ＥＪＢを利用したアプリケーションにおいて、ＥＪＢ内の処理の中で共通情報を参照する場合、ＥＪＢクライアントから渡されたオブジェクトを参照すればよいため、通常のＥＪＢやＪＤＢＣを利用したクラスを経由したデータ取得を参照の都度行う場合に比して、プログラム記述および動作上の非効率な手順を省くことができ、プログラムの保守性やシステムのレスポンスを向上させることができる。
【００１２】
また、ＥＪＢクライアントが共通情報の単一オブジェクトを作成し、ＥＪＢの処理を呼び出す際に引数の一部として当該単一オブジェクトを渡すため、ＥＪＢ規約に準拠したＥＪＢオブジェクトにおいても、単一のメモリ常駐オブジェクトを参照している場合と同じ結果を得ることができる。従って、ある時点で複数のＥＪＢ内の処理が参照する共通データを同一にし、不整合の発生を未然に防止することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００１４】
図１は本発明の一実施の形態に係る情報処理方法を実施するためのシステム構成を示すブロック図である。
【００１５】
本実施の形態においては、図１に示すように、Ｗｅｂアプリケーションサーバ１００には、Ｊ２ＥＥ規約に準拠したＷｅｂアプリケーションサーバソフトウェアがインストールされ、Servlet（サーブレット）コンテナ１０１とＥＪＢ２０３とが、Ｗｅｂアプリケーションサーバ１００にインストールされている。また、ＥＪＢクライアントとしては、Servletコンテナ１０１が想定されている。また、データベースサーバ１１０が、別のサーバーマシンにインストールされている。
【００１６】
まず、本実施の形態における共通情報クラスの生成方法について説明する。
【００１７】
Servletコンテナ１０１の起動後、ＷＷＷクライアント１１２からネットワーク１１３を介してServlet基底クラス１０３への最初のアクセスが発生した際、Servlet基底クラス１０３は、初期化処理２０１を行い、共通情報クラス生成・更新処理２０２を実行する。これにより、共通情報クラス１０４がインスタンス化される。インスタンス化された共通情報クラス１０４は、Servletコンテナ１０１上のシングルトンとして、唯一のインスタンスが常時、Servletコンテナ１０１に存在するようにし、全てのServletクラスが同一の共通情報クラス１０４にアクセスするようにする。
【００１８】
共通情報クラス１０４がインスタンス化されると、Servlet基底クラス１０３は、ＥＪＢコンテナ１０２の共通情報を取得するＥＪＢ２０３を呼び出す。ＥＪＢ２０３を呼び出したServlet基底クラス１０３は、呼び出されたＥＪＢ２０３がデータベースサーバ１１０のデータベース１１１にアクセスして収集した共通情報２０４をＥＪＢ２０３からの返り値として受け取る。さらに、共通情報クラス１０４は、Servlet基底クラス１０３から共通情報２０４を受け取り、自身の変数として保持する。共通情報クラス１０４は、Servlet基底クラス１０３により一度インスタンス化されると、以後は明示しない限りは再びインスタンス化されない。また、システム利用者からのアクセスがServlet基底クラス１０３に対して発生した場合、Servlet基底クラス１０３は、システム利用者からの要求情報に基づいて、業務処理を記述した個々のServletクラスを呼び出し、業務処理を行う。
【００１９】
次に、共通情報クラスを使用したシステムの利用方法について図２を参照しながら説明する。図２は図１のシステム構成において共通情報クラスの利用方法の一例を模式的に示すブロック図である。
【００２０】
システム利用者は、ＷＷＷクライアント１１２に設けられた画面表示装置を見て入力装置を操作し、ネットワーク１１３を経由して、Ｗｅｂアプリケーションサーバ１００のServletコンテナ１０１にインストールされているServlet基底クラス１０３にアクセスする。Servlet基底クラス１０３は、Servlet処理１０９を実行する。
【００２１】
Servlet基底クラス１０３は、Servlet処理１０９の中でＷＷＷクライアント１１２からの要求情報を参照し、個々の業務処理を行うServletクラスを呼び出す。ここで、Servletクラス１０５は、さらにＥＪＢ１０７を呼び出す。その際、呼び出すＥＪＢ１０７のメソッドが処理で共通情報を参照するため、Servletクラス１０５は、ＥＪＢ１０７を呼び出す際に、共通情報クラスを引数として渡す。Servletクラス１０６は、ＥＪＢ１０８を呼び出す。ＥＪＢ１０８はＥＪＢ１０７と異なり、処理に共通情報を参照する必要がないため、ＥＪＢ１０８を呼び出すときには共通情報は渡されない。呼び出された個々のＥＪＢは、データベースサーバ１１０のインストールされているデータベース１１１にアクセスし、処理を実行する。処理が終了すると、その結果が個々のＥＪＢから呼び出しをしたServletクラスへ返却されると、Servlet基底クラス１０３を介して、ＷＷＷクライアント１１２に対してレスポンスが返される。
【００２２】
次に、共通情報クラスの更新処理について図３を参照しながら説明する。図３は図１のシステム構成における共通情報クラスの更新処理の一例を模式的に示すブロック図である。
【００２３】
ＷＷＷクライアント１１２上のシステム利用者の操作により、共通情報クラス１０４に対する更新処理の指示が出されたときに、Servlet基底クラス１０３によって共通情報クラス生成・更新処理２０２が実行される。共通情報クラス生成・更新処理２０２は、共通情報クラス１０４がServletコンテナ１０１に存在するか否かを確認し、存在している場合は、共通情報クラス１０１は一旦廃棄される。次に、共通情報クラス１０４は、Servlet基底クラス１０３によりインスタンス化され、その後、Servlet基底クラス１０３は、共通情報を取得するＥＪＢ２０３を呼び出す。呼び出されたＥＪＢ２０３は、データベースサーバ１１０のデータベース１１１にアクセスを行い、共通情報２０４を収集し、Servlet基底クラス１０３に返り値として返却する。Servlet基底クラス１０３により再インスタンス化された共通情報クラス１０４には、Servlet基底クラス１０３によりＥＪＢ２０３から受け取った共通情報２０４が引数として渡され、共通情報クラス１０４は、渡された共通情報２０４を自身の変数として保存する。これにより、共通情報２０４の内容の更新が終了する。
【００２４】
次に、本実施の形態のシステム構成を実現するためのハードウェア構成について図４および図５を参照しながら説明する。図４は共通情報クラスを利用するハードウェア構成の一例を示すブロック図、図５は共通情報クラスを利用するハードウェア構成の他の例を示すブロック図である。
【００２５】
図４に示す構成例は、本発明が適用されるコンピュータ機器のハードウェアの構成を示す好適な一例であり、本例の場合、ＷＷＷクライアント４２０と、Ｗｅｂアプリケーションサーバ４００と、データベースサーバ４１０とによりシステムが構成される。
【００２６】
システム利用者が使用するＷＷＷクライアント４２０は、画面表示装置４２１および入力装置４２２を備える。また、ＷＷＷクライアント４２０には、ＷＷＷクライアントソフトがインストールされている。Ｗｅｂアプリケーションサーバ４００には、アプリケーションサーバソフトウェアがインストールされており、また、ＥＪＢクライアントであるServlet４０１とＥＪＢ４０２とがインストールされている。データベースサーバ４１０には、データベース４１１がインストールされている。
【００２７】
ＷＷＷクライアント４２０とＷｅｂアプリケーションサーバ４００とは、ローカルエリアネットワーク（ＬＡＮ）やイントラネット、インターネットなどのネットワーク４３０を通じて接続され、相互に通信可能である。また、Ｗｅｂアプリケーションサーバ４００とデータベースサーバ４１０とはネットワーク４４０を通じて接続され、相互に通信可能である。
【００２８】
また、図５に示すように、ＷＷＷクライアント５２０と、Ｗｅｂアプリケーションサーバ５００と、データベースサーバ５１０とによりシステムを構成することも可能である。この場合、ＷＷＷクライアント５２０としては、ＷＷＷクライアントソフトを利用可能なノートパソコン５２１、デスクトップパソコン５２２、携帯電話５２３、携帯用個人端末５２４などが用いられる。ＷＷＷクライアント５２０は、有線または無線のネットワーク５３０を通じてＷｅｂアプリケーションサーバ５００と接続され、相互に通信可能である。また、Ｗｅｂアプリケーションサーバ５００は、ネットワーク５３１を通じてデータベースサーバ５１０と接続され、データベースサーバ５１０にインストールされているデータベース５１１を利用可能である。
【００２９】
次に、本実施の形態において、ＷＷＷクライアントがServletを呼び出した際の動作について図６〜図８を参照しながら説明する。図６はＷＷＷクライアントがServletを呼び出した際の動作の手順を示すフローチャート、図７は図６のステップＳ６２０およびステップＳ６６０の処理の手順を詳細に示すフローチャート、図８は図６のステップＳ６９０の処理の手順を詳細に示すフローチャートである。
【００３０】
ＷＷＷクライアントであるＰＣや携帯端末などがServletコンテナ上のServletを呼び出すと、Servletコンテナは、そのServletがメモリにロードされているか否かを判定する（ステップＳ６００）。ここで、Servletがメモリにロードされていない場合は、Servletコンテナは、Servletをメモリにロードし、そのタイミングでServletに実装された初期化処理メソッドを呼び出して初期化処理を行う（ステップＳ６１０）。そして、初期化処理メソッドにより、共通情報クラスのインスタンス化が行われる（ステップＳ６２０）。この共通情報クラスのインスタンス化の詳細については、後述する。次いで、初期化処理メソッドが終了され（ステップＳ６３０）、業務処理メソッドが呼び出される（ステップＳ６４０）。
【００３１】
これに対し、既にメモリ上にServletがロード済みであると判定された場合（ステップＳ６００)、初期化処理メソッドを実行せずに業務処理メソッドが呼び出される（ステップＳ６４０）。
【００３２】
業務処理メッソドが呼び出されると（ステップＳ６４０）、ＷＷＷクライアントから共通情報クラスを最新情報に更新するためのリクエストがあるか否かの判定が行われる（ステップＳ６５０）。ここで、上記リクエストがあれば、共通クラスの内容を一新するために共通情報クラスのインスタンスが作り直される（共通情報クラスの再インスタンス化が行われる）（ステップＳ６６０）。共通情報クラスの再インスタンス化については後述する。そして、業務処理メソッドが終了される（ステップＳ７００）。
【００３３】
これに対し、上記リクエストがない場合（ステップＳ６５０）、共通情報クラスのインスタンスが取得され（ステップＳ６７０）、ＥＪＢのメソッドが呼び出される（ステップＳ６８０）。この際、呼び出されたＥＪＢに、Servletコンテナ上に作成された共通情報クラスのインスタンスが引数として渡される。そして、ＥＪＢにおける処理が実行される（ステップＳ６９０）。この処理の詳細については後述する。ＥＪＢの処理が終了すると、業務処理メソッドが終了される（ステップ７００）。
【００３４】
業務処理メソッドが終了されると、ＷＷＷクライアントにレスポンスが返され（ステップＳ７１０）、ＷＷＷクライアントの端末上に処理結果が表示される。
【００３５】
次に、上記ステップＳ６２０およびステップＳ６６０における処理の詳細について図７を参照しながら説明する。
【００３６】
上記ステップＳ６２０またはステップＳ６６０においては、まず、共通情報クラスオブジェクトがメモリにロードされ、共通情報クラスのコンストラクタ、または任意のメソッドが呼び出される（ステップＳ６２１）。そして、呼び出されたメソッド内で、ＥＪＢにアクセスしてデータベースから共通情報として必要なデータの取得が行われる（ステップＳ６２２）。次いで、取得したデータから、共通情報クラスのプロパティに各情報がセットされ（ステップＳ６２３）。ここで、上記データベースからの情報取得の処理は、ＪＤＢＣを使用して行うことも可能である。
【００３７】
次に、上記ステップＳ６９０における処理の詳細について図８を参照しながら説明する。
【００３８】
上記ステップＳ６９０においては、まず、共通情報を参照するか否かの判定が行われ（ステップＳ６９１）、共通情報を参照する場合、引数として渡された共通情報クラスのインスタンスに対して、そのプロパティが参照される（ステップＳ６９２）。そして、業務処理が実行される（ステップＳ６９３）。これに対し、共通情報を参照しない場合（ステップＳ６９１）、業務処理が実行される（ステップＳ６９３）。
【００３９】
このように、ＥＪＢを利用したアプリケーションにおいて、ＥＪＢ内の処理の中で共通情報を参照する場合、ＥＪＢクライアントから渡されたオブジェクトを参照すればよいため、通常のＥＪＢやＪＤＢＣを利用したクラスを経由したデータ取得を参照の都度行う場合に比して、プログラム記述および動作上の非効率な手順を省くことができ、プログラムの保守性やシステムのレスポンスを向上させることができる。
【００４０】
また、ＥＪＢクライアントが共通情報の単一オブジェクトを作成し、ＥＪＢの処理を呼び出す際に引数の一部として当該単一オブジェクトを渡すため、ＥＪＢ規約に準拠したＥＪＢオブジェクトにおいても、単一のメモリ常駐オブジェクトを参照している場合と同じ結果を得ることができる。従って、ある時点で複数のＥＪＢ内の処理が参照する共通データを同一にし、不整合の発生を未然に防止することができる。
【００４１】
なお、上述した本発明をコンピュータ装置（情報処理装置）に実施させるためのプログラムコードは、ハードディスクなどの記憶媒体に格納され、ＣＰＵによって適宜読み出されて実行されることになる。なお、該プログラムコードは、記憶媒体で供給されるほかに、ネットワークを介して配信されるものであってもよい。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施の形態に係る情報処理方法を実施するためのシステム構成を示すブロック図である。
【図２】図１のシステム構成において共通情報クラスの利用方法の一例を模式的に示すブロック図である。
【図３】図１のシステム構成における共通情報クラスの更新処理の一例を模式的に示すブロック図である。
【図４】共通情報クラスを利用するハードウェア構成の一例を示すブロック図である。
【図５】共通情報クラスを利用するハードウェア構成の他の例を示すブロック図である。
【図６】ＷＷＷクライアントがServletを呼び出した際の動作の手順を示すフローチャートである。
【図７】図６のステップＳ６２０およびステップＳ６６０の処理の手順を詳細に示すフローチャートである。
【図８】図６のステップＳ６９０の処理の手順を詳細に示すフローチャートである。
【符号の説明】
【００４３】
１００，４００，５００  Ｗｅｂアプリケーションサーバ
１０１  Servletコンテナ
１０２  ＥＪＢコンテナ
１０３  Servlet基底クラス
１０４  共通情報クラス
１０５，１０６  Servletクラス
１０７，１０８，４０２  ＥＪＢ
１１０，４１０，５１０  データベースサーバ
１１１，４１１，５１１  データベース
１１２，４２０，５２０  ＷＷＷクライアント
１１３，４３０，４４０，５３０，５３１  ネットワーク
１１４  共通情報クラス
１１５  Servletクラス群
４０１  Servlet
【図１】
2006107372.tif 000003
【図２】
2006107372.tif 000004
【図３】
2006107372.tif 000005
【図４】
2006107372.tif 000006
【図５】
2006107372.tif 000007
【図６】
2006107372.tif 000008
【図７】
2006107372.tif 000009
【図８】
2006107372.tif 000010