説明

資源管理プログラム、資源管理装置及び資源管理方法

【課題】Webサービスアプリケーションから複数のリクエストを受信したとしても、継続するリクエスト間で同一のスレッド資源を引き継ぐ。
【解決手段】Webサービスクライアントアプリケーション3AからWebサービスアプリケーション経由で手続型COBOLアプリケーションに対する複数のリクエストを受信したとしても、リクエストに使用するセッションを識別するセッションIDでスレッド資源を資源管理部53内で管理することで、資源管理部53内に管理するセッションIDに対応したスレッド資源を使用して、継続するリクエスト間で同一のスレッド資源を引き継ぐことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、資源管理プログラム、資源管理装置及び資源管理方法に関する。
【背景技術】
【0002】
一般的に企業の在庫管理や財務等の基幹業務を取り扱う基幹系システムでは、多くのサーバアプリケーションがCOBOL(Common Business Oriented Language)で開発されている。更に、近年では、WebアプリケーションとしてJava(登録商標)アプリケーションのクライアントからサーバ側の手続型のCOBOLアプリケーションを呼び出す運用が多くみられる。
【0003】
例えば、汎用的なJavaServletが、Webブラウザからのリクエストに応じて、ユーザインタフェースXMLソースに基づき、トランザクション処理システム配下のCOBOLアプリケーションを呼び出すための電文を自動生成し、トランザクション処理システムで処理された結果を電文として受取り、該受取った電文をユーザインタフェースXMLソースに基づいてWebブラウザ上で表示するHTMLを生成し、Webブラウザからの要求のレスポンスとして返送する技術が知られている(特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2001−509286号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のサーバでは、継続する複数のリクエストを受信したとしても、複数のリクエストに応じた手続型のアプリケーションの処理を同一スレッド上で実行できるとは限らない。その結果、従来のサーバでは、リクエスト毎に手続型のアプリケーションを実行するに際し、継続するリクエスト間で同一のスレッド資源を引き継ぐことができない。
【0006】
開示技術は、上記点に鑑みてなされたものであり、セッションが異なる複数のリクエストを受信したとしても、継続するリクエスト間で同一のスレッド資源を引き継ぐことを目的とする。
【課題を解決するための手段】
【0007】
本願の開示する資源管理プログラムは、一つの態様において、コンピュータに、手続型言語で記述されたプログラムで規定された処理であって、受信した処理要求に要求される処理をスレッドに割り当て、セッションを識別する識別情報とスレッド資源とを予め関連付けて記憶する記憶手段から、前記処理要求についての通信に使用されたセッションを識別する識別情報と関連付けられて記憶されたスレッド資源を読み出し、読み出した前記スレッド資源を用いて、前記スレッドに割り当てた前記処理を実行することを実行させた。
【発明の効果】
【0008】
本願の一つの態様では、Webサービスアプリケーション等のクライアントから、異なるセッションで複数のリクエストを受信したとしても、継続するリクエスト間で同一のスレッド資源を引き継ぐことができる。
【図面の簡単な説明】
【0009】
【図1】図1は、実施例1のサーバ装置の内部構成を示す説明図である。
【図2】図2は、実施例2のWebサービスアプリケーションの利用形態を示す説明図である。
【図3】図3は、Webサービスアプリケーション用サーバ装置の内部構成を示す説明図である。
【図4】図4は、資源管理部内部のテーブル構成を詳細に示す説明図である。
【図5】図5は、Webサービスアプリケーション用サーバ装置の動作を示す説明図である。
【図6】図6は、Webサービスアプリケーション用サーバ装置全体の処理動作を示すフローチャートである。
【図7】図7は、Webサービスアプリケーションの処理動作を示すフローチャートである。
【図8】図8は、手続型COBOLアプリケーションの処理動作を示すフローチャートである。
【図9】図9は、RTSの処理動作を示すフローチャートである。
【図10】図10は、資源管理プログラムを実行するコンピュータを示す説明図である。
【図11】図11は、Webアプリケーションの利用形態を示す説明図である。
【図12】図12は、マルチスレッド方式のWebアプリケーションの利用形態を示す説明図である。
【図13】図13は、Webサービスアプリケーションの利用形態を示す説明図である。
【発明を実施するための形態】
【0010】
本発明の実施形態を説明する前に、図11〜図13を用いて、Javaアプリケーションが手続型のCOBOLアプリケーションを呼び出す形態のWebアプリケーションについて説明する。
【0011】
図11は、Webアプリケーション用サーバ装置(以下、単にサーバと称する)110により実行されるソフトウェアの構造を示す。サーバ110では、Webブラウザ120からインターネット130経由のリクエストに応じて、COBOLアプリケーション112を実行する。更に、サーバ110のJavaアプリケーション111は、Webブラウザ120からインターネット130経由でリクエストを受信する。
【0012】
サーバ110内のフレームワーク113は、Javaアプリケーション111のリクエストをCOBOLアプリケーション112のリクエストに変換する機能を備えたソフトウェアである。更に、サーバ110のCOBOLアプリケーション112は、フレームワーク113で変換されたリクエストを受信すると、プロセス110A上に単一のスレッド114及びCOBOLランタイムシステム(COBOL Run Time System:以下、単にRTSと称する)115を実行する。尚、RTS115は、スレッド114上のCOBOLアプリケーション112が利用するスレッド資源114Aを作成し、このスレッド資源114Aをスレッド114上のCOBOLアプリケーション112に提供する。
【0013】
スレッド資源114Aには、データ、使用ファイルやDBコネクション等が含まれる。例示として、手続型のCOBOLアプリケーション112が住所データに基づいて住所録を作成するプログラムであるとした場合、スレッド資源114Aのデータは郵便番号、住所、電話番号などの格納位置及び読み取り位置などを指定するデータなどであり、使用ファイルとは、郵便番号、住所、電話番号などの住所データが列挙されたファイルなどであり、DBコネクションは、使用ファイルを格納したDBへのコネクションに関する情報であって良い。
【0014】
手続型言語で記述されたプログラムに基づく処理においては、記述された命令を逐次的に実行し、処理の結果に応じて変数の内容を変化させる。処理のリクエストが複数ある場合には、複数のリクエスト間で変数の内容が変化している可能性があり、そのためスレッド資源114Aを引き継ぐ必要がある。
【0015】
プロセス110A上のスレッド114では、Webブラウザ120からのリクエストに応じて、RTS115から取得したスレッド資源114Aを使用してCOBOLアプリケーション112を順次実行する。尚、COBOLアプリケーション112が使用するスレッド資源114Aはスレッド単位で管理される。従って、継続するリクエスト間で同一のスレッド資源114Aを引き継ぐような場合には、全てのリクエストに関わるCOBOLアプリケーションを同一のスレッド114上で実行する必要がある。サーバ110では、継続するリクエスト間で同一のスレッド資源114Aを引き継ぐため、全てのリクエストに関わるCOBOLアプリケーション112を単一のスレッド114上で実行する単一スレッド方式を採用している。
【0016】
しかしながら、サーバ110の運用形態は、インターネット130を経由して複数のWebブラウザ120からのリクエストを受け付ける必要があるため、プロセス110A上に複数のスレッド114を実行するマルチスレッド方式を採用するのが一般的である。
【0017】
マルチスレッド方式を採用するシステムとして、継続するリクエスト間でスレッド資源の一部であるデータを引き継ぎ、この引き継いだデータをクライアント側やサーバ側で保持するシステムがある。図12は、サーバ210により実行されるソフトウェアの構造を示す図である。尚、図11に示す利用形態と同一構成には同一符号を付すことで、その重複する構成及び動作の説明については省略する。
【0018】
図12に示すサーバ210は、プロセス210A上に複数のスレッド214を実行するマルチスレッド方式を採用している。更に、フレームワーク113Aは、Javaアプリケーション111を通じてWebブラウザ120からのリクエストを受信すると、複数のスレッド214の内、リクエストに応じたCOBOLアプリケーション112を実行するスレッド214を割り当てる。そして、RTS215は、スレッド214上のCOBOLアプリケーション112で利用可能なスレッド資源214Aを作成し、このスレッド資源214Aを、COBOLアプリケーション112を実行するスレッド214に提供する。
【0019】
フレームワーク113Aは、Webブラウザ130からのリクエスト“1”を受信した場合に、例えばCOBOLアプリケーション112を実行するスレッド“X”を割り当てる。更に、RTS215は、スレッド“X”上のCOBOLアプリケーション112で利用するスレッド資源214Aを作成し、このスレッド資源214Aをスレッド“X”上のCOBOLアプリケーション112に提供する。
【0020】
更に、スレッド“X”上のCOBOLアプリケーション112は、スレッド資源214Aを使用してリクエスト“1”に関わる処理を実行し、データ“1”を得て、そのデータ“1”を含めてスレッド資源214Aを更新する。そして、COBOLアプリケーション112は、スレッド資源214Aのうちのデータ“1”をJavaアプリケーション111経由でWebブラウザ120に伝送する。
【0021】
次に、Webブラウザ120は、リクエスト“1”に後続するリクエスト“2”を要求する際、リクエスト“2”の他に、データ“1”をJavaアプリケーション111経由でフレームワーク113Aに伝送する。フレームワーク113Aは、Webブラウザ120からリクエスト“2”及びデータ“1”を受信した場合、例えばCOBOLアプリケーション112を実行するスレッド“Y”を割り当てる。
【0022】
更に、RTS215は、スレッド“Y”上のCOBOLアプリケーション112で利用するスレッド資源214Aを作成し、このスレッド資源214Aをスレッド“Y”上のCOBOLアプリケーション112に提供する。スレッド“Y”上のCOBOLアプリケーション112は、このスレッド資源214Aに継続するリクエスト“1”の応答に含まれるデータ“1”を設定する。つまり、リクエスト“1”で得たデータ“1”がリクエスト“2”にも引き継がれたことになる。
【0023】
スレッド“Y”上のCOBOLアプリケーション112は、データ“1”を含むスレッド資源214Aを利用してリクエスト“2”に関わる処理を実行すると、リクエスト“2”のデータ“2”を得る。そして、COBOLアプリケーション112は、そのデータ“2”を含めてスレッド資源214Aを更新する。そして、COBOLアプリケーション112は、今回のデータ“2”及び前回のデータ“1”をJavaアプリケーション111経由でWebブラウザ120に伝送する。
【0024】
次に、Webブラウザ120は、リクエスト“2”に後続するリクエスト“3”を要求する際、リクエスト“3”の他に、前々回のデータ“1”及び前回のデータ“2”をJavaアプリケーション111経由でフレームワーク113Aに伝送する。フレームワーク113Aは、Webブラウザ120からリクエスト“3”、データ“1”及びデータ“2”を受信すると、例えばCOBOLアプリケーション112を実行するスレッド“Z”を割り当てる。
【0025】
更に、RTS215は、スレッド“Z”上のCOBOLアプリケーション112で利用するスレッド資源214Aを作成し、このスレッド資源214Aをスレッド“Z”上のCOBOLアプリケーション112に提供する。スレッド“Z”上のCOBOLアプリケーション112は、このスレッド資源214Aに、前々回のデータ“1”及び前回のデータ“2”を設定する。つまり、リクエスト“1”及びリクエスト“2”で得たデータ”1”及び“2”がリクエスト“3”にも引き継がれたことになる。
【0026】
スレッド“Z”上のCOBOLアプリケーション112は、データ“1”及びデータ“2”を含むスレッド資源214Aを利用してリクエスト“3”に関わる処理を実行すると、リクエスト“3”のデータ“3”を得る。そして、COBOLアプリケーション112は、そのデータ“3”を含めてスレッド資源214Aを更新する。そして、COBOLアプリケーション112は、今回のデータ“3”、前回のデータ“2”及び前々回のデータ“1”をJavaアプリケーション111経由でWebブラウザ120に伝送する。
【0027】
サーバ210では、継続するリクエスト間でレッド資源214Aの一部であるデータのみを引き継ぐが、同一のスレッド資源214Aを引き継ぐことはできない。
【0028】
さらに、サーバ210のWebアプリケーションの利用形態では、継続するリクエストの実行回数が増加するに連れてデータ量が増え、Javaアプリケーション111及びCOBOLアプリケーション112間のネットワーク上の通信負荷が大きくなる。同様に、Webアプリケーションの利用形態では、Javaアプリケーション111及びWebブラウザ120間のネットワーク上の通信負荷も大きくなる。つまり、Webアプリケーションの利用形態では、継続するリクエスト間でスレッド資源214Aの一部であるデータを引き継ぐことはできるものの、継続するリクエストの実行回数の増加に応じてネットワーク上の通信負荷が大きくなる。
【0029】
また、近年ではWebブラウザを使用しなくても、Webアプリケーションを実行できるWebサービスアプリケーションが広がりつつある。図13は、Webサービスアプリケーション用サーバ320(以下、単にサーバ320と称する)のソフトウェア構成を示す。サーバ320では、Webサービスクライアントアプリケーション310からのリクエストに応じてマルチスレッド方式で手続型COBOLアプリケーション324を実行する。尚、Webサービスクライアントアプリケーション310とは、サーバ320に対向したクライアント端末が内蔵するアプリケーションに限定するものではなく、サーバ320に対向した意味でのアプリケーションに相当する。
【0030】
サーバ320のフレームワーク320Bは、Webサービスクライアントアプリケーション310からのリクエストを受信すると、プロセス320A上に実行する複数のスレッド321の内、サーバ側のWebサービスアプリケーション323が実行するスレッド321を割り当てる。
【0031】
Webサービスアプリケーション323は、手続型COBOLアプリケーション324を同一スレッド321上に呼び出す。更に、手続型COBOLアプリケーション324は、RTS322に対して利用するスレッド資源321Aの作成を依頼する。そして、RTS322は、資源作成依頼に応じて、スレッド資源321Aを作成し、そのスレッド資源321Aを手続型COBOLアプリケーション324に提供する。
【0032】
図13に示す利用形態では、Webサービスクライアントアプリケーション310からのリクエストに応じて、サーバ320側の手続型COBOLアプリケーション324が実行される。
【0033】
しかしながら、上記のサーバ320では、Webサービスクライアントアプリケーション310から、継続する複数のリクエストを受信したとしても、リクエスト毎にCOBOLアプリケーション324を同一スレッド321上で実行できるとは限らない。その結果、上記のサーバ320では、リクエスト毎にCOBOLアプリケーション324を実行するに際し、継続するリクエスト間で同一のスレッド資源321Aを引き継ぐことができない。
【0034】
そこで、スレッド資源の一部であるデータをリクエスト間で引き継ぐ図11の方式をサーバ320に採用することも考えられるが、継続するリクエストの実行回数の増加に応じてクライアント及びサーバ間のネットワーク負荷が大きくなってしまう。しかも、その場合、継続するリクエスト間で引き継ぐ資源は、スレッド資源の一部のデータに過ぎず、スレッド資源自体を引き継ぐものではない。
【0035】
以下、図面に基づいて、本願の開示する資源管理プログラム、資源管理装置及び資源管理方法の実施例を詳細に説明する。尚、本実施例により、開示技術が限定されるものではない。
【実施例1】
【0036】
図1は、実施例1のサーバ装置(以下、単にサーバと称する)の内部構成を示す説明図である。サーバ1は、複数のスレッドを実行するマルチスレッド方式を採用していても良い。サーバ1は、スレッド割当部11と、呼出部12と、資源提供部13と、セッションID発行部14と、資源管理部15と、処理部16とを有する。
【0037】
スレッド割当部11は、リクエストを受信すると、リクエストにより要求される処理を実行するスレッドを処理部16に割り当てる。呼出部12は、同一スレッド上にリクエストに要求された、手続型言語で記述されたアプリケーションを呼び出す。
【0038】
資源提供部13は、アプリケーションからの資源要求に応じて、アプリケーションが利用する資源をスレッド上のアプリケーションに提供する。セッションID発行部14は、受信したリクエストに使用されたセッションを識別するセッションIDを発行する。セッションID発行部14は、セッションIDの発行を資源判定部13Aの判定に応じて行なう。
【0039】
処理部16は、スレッド割当部11に割り当てられたスレッドで、呼出部12が呼び出したアプリケーションを、資源提供部13が提供した資源を用いて実行する。サーバ1がマルチスレッド方式を採用している場合、スレッド割当部11は、処理部16に複数のスレッドを割り当て可能である。
【0040】
資源管理部15は、スレッド上のアプリケーションの実行処理が完了すると、アプリケーションが使用した資源をスレッドから待避させる。更に、資源管理部15は、待避させた資源を、リクエストに使用されたセッションを識別するセッションIDに対応付けて管理する。
【0041】
資源提供部13は、資源判定部13Aと、資源復元部13Bとを有する。資源判定部13Aは、アプリケーションに対して資源を提供する際に、リクエストに使用されたセッションのセッションIDを受信すると、セッションIDに対応した資源が資源管理部15にあるか否かを判定する。資源復元部13Bは、資源判定部13AがセッションIDに対応した資源があると判定した場合に、当該資源をリクエストに関わるアプリケーション上に復元する。資源判定部13Aが、セッションIDに対応した資源が資源管理部15にないと判定した場合に、セッションID発行部14にセッションIDを発行させる。
【0042】
実施例1では、複数のセッションのそれぞれにおいてリクエストを受信したとしても、リクエストが使用するセッションのセッションIDをキーにして資源を管理し、継続するリクエスト間で同一の資源を引き継ぐことができる。
【実施例2】
【0043】
図2は、実施例2のWebサービスアプリケーションの利用形態を示す説明図である。図3は、実施例2のWebサービスアプリケーション用サーバ装置の内部構成を示す説明図である。図2に示すWebサービスアプリケーション用サーバ装置(以下、単にサーバと称する)1Aは、Webサービスクライアントアプリケーション3AからWebサービスアプリケーション4A経由で手続型COBOLアプリケーション5Aに対するリクエストを受け付ける。
【0044】
図2に示すサーバ1Aのプロセス20上では、複数のスレッド21及びRTS22を実行している。図3に示すサーバ1Aは、スレッド割当部31と、COBOL呼出部41と、ID発行依頼部42と、ID通知部43と、モード設定部44と、処理部45とを有する。スレッド割当部31は、Webサービスクライアントアプリケーション3Aからリクエストを受信すると、リクエストに要求される処理、例えば、複数のスレッド21の内、Webサービスアプリケーション4Aが実行するスレッド21を処理部45に割り当てる。
【0045】
COBOL呼出部41は、Webサービスアプリケーション4Aが実行する同一スレッド21上にリクエストに要求された手続型COBOLアプリケーション5Aを呼び出す。ID発行依頼部42は、リクエストが使用するセッションを識別するセッションIDの発行をRTS22に依頼する。尚、セッションは、Webサービスクライアントアプリケーション3A及びWebサービスアプリケーション4A間のリクエストに使用したセッションに相当する。また、ID発行依頼部42は、同一スレッド21上の手続型COBOLアプリケーション5Aの実行が完了すると、同リクエストに使用したセッションIDの更新をRTS22に依頼する。
【0046】
ID通知部43は、Webサービスクライアントアプリケーション3A又はRTS22に対してセッションIDを通知する。モード設定部44は、COBOLアプリケーション5Aが利用する資源5Bとして、スレッド資源を使用する通常モード又はEXTERNAL資源を使用するEXTERNALモードに設定する。
【0047】
また、サーバ1Aは、資源提供部51と、セッションID発行部52と、資源管理部53とを有する。資源提供部51は、スレッド21上で実行する手続型COBOLアプリケーション5Aからの資源要求に応じて資源5BをCOBOLアプリケーション5Aに提供する。セッションID発行部52は、スレッド21上で実行するWebサービスアプリケーション4AのID発行依頼部42からのID発行依頼を受信すると、リクエストに使用されたセッションを識別するセッションIDを発行する。セッションID発行部52は、ID発行依頼部42の更新依頼を受信すると、当該セッションIDを更新し、そのセッションIDをWebサービスアプリケーション4Aに再通知する。
【0048】
資源管理部53は、リクエストに使用したセッションを識別するセッションIDに対応付けて、当該リクエストに関わる手続型COBOLアプリケーション5Aに利用した資源5Bを管理する。尚、資源5Bは、スレッド資源又はEXTERNAL資源に相当する。また、処理部45は、スレッド割当部31に割り当てられたスレッド21で、COBOL呼出部41が呼び出した手続型COBOLアプリケーション5Aを、資源提供部51が提供した資源5Bを用いて実行する。サーバ1Aがマルチスレッド方式を採用している場合、スレッド割当部31は、処理部45に複数のスレッド21を割当可能としている。
【0049】
また、資源提供部51は、資源判定部61と、資源復元部62と、資源作成部63と、資源待避部64とを有する。資源判定部61は、手続型COBOLアプリケーション5Aからの資源要求に応じて資源5Bを提供する際にリクエストが使用するセッションのセッションIDを受信すると、セッションIDに対応した資源が資源管理部53内にあるか否かを判定する。
【0050】
資源復元部62は、資源判定部61にてセッションIDに対応した資源がある場合に、資源をリクエストに関わる手続型COBOLアプリケーション5Aに復元する。資源作成部63は、資源判定部61にてセッションIDに対応する資源がない場合に、リクエストに関わる手続型COBOLアプリケーション5Aに新たな資源を作成する。資源待避部64は、スレッド21上の手続型COBOLアプリケーション5Aの実行処理が完了すると、手続型COBOLアプリケーション5Aが使用した資源を手続型COBOLアプリケーション5Aから待避する。更に、資源待避部64は、待避した資源をセッションIDに対応付けて資源管理部53に管理する。
【0051】
図4は、資源管理部53内部のテーブル構成を詳細に示す説明図である。資源管理部53は、リクエスト53C毎に、セッションID53A、資源53B及び実行スレッド53Dを管理する。RTS22は、資源管理部53を参照して、クライアント甲の1回目のリクエストに関し、セッションIDが“SESSION A”、資源53Bがスレッド資源“A”の新規作成、実行スレッドが“X”と認識する。また、RTS22は、クライアント甲の2回目のリクエストに関し、セッションIDが“SESSION A”、資源53Bがスレッド資源“A”の復元、実行スレッドが“Y”と認識する。
【0052】
次に、実施例2のサーバ1Aの動作について説明する。図5は、サーバ1Aの動作を示す説明図である。尚、Webサービスアプリケーション4Aは、例えば、COBOL呼出部41、ID発行依頼部42、ID通知部43及びモード設定部44を使用する。更に、RTS22は、例えば、資源提供部51、セッションID発行部52及び資源管理部53を使用する。図5に示すサーバ1Aのフレームワーク30は、Webサービスクライアントアプリケーション3Aから初回のリクエスト“1”を受信すると、Webサービスアプリケーション4Aを実行するスレッド21“X”を割り当てる。Webサービスアプリケーション4Aは、同一スレッド21“X”上に手続型COBOLアプリケーション5Aを呼び出す。手続型COBOLアプリケーション5Aは、RTS22から利用する資源5Bを取得する。
【0053】
更に、Webサービスアプリケーション4Aは、同一スレッド21“X”上の手続型COBOLアプリケーション5Aの実行が完了すると、初回のリクエスト“1”のセッションを識別するセッションIDの発行依頼をRTS22に通知する。RTS22は、セッションIDを発行し、そのセッションIDをWebサービスアプリケーション4Aに通知する。更に、RTS22は、スレッド21“X”上の手続型COBOLアプリケーション5Aの資源5Bを待避する。更に、Webサービスアプリケーション4Aは、セッションIDを受信すると、そのセッションIDをWebサービスクライアントアプリケーション3Aに通知する。
【0054】
次に、フレームワーク30は、Webサービスクライアントアプリケーション3Aから2回目のリクエスト“2”及びセッションIDを受信すると、Webサービスアプリケーション4Aを実行するスレッド21“Y”を割り当てる。Webサービスアプリケーション4Aは、Webサービスクライアントアプリケーション3AからのセッションIDを受信すると、セッションIDをRTS22に通知する。
【0055】
更に、Webサービスアプリケーション4Aは、同一スレッド21“Y”上に手続型COBOLアプリケーション5Aを呼び出す。更に、RTS22は、受信したセッションIDに対応する資源5Bをスレッド21“Y”上の手続型COBOLアプリケーション5Aに復元する。更に、Webサービスアプリケーション4Aは、同一スレッド21“Y”上の手続型COBOLアプリケーション5Aの実行が完了すると、現在リクエストである2回目のリクエスト“2”のセッションを識別するセッションIDの更新をRTS22に依頼する。更に、RTS22は、スレッド21“Y”上の手続型COBOLアプリケーション5Aの資源5Bを待避すると共に、更新依頼のセッションIDを更新してWebサービスアプリケーション4Aに再通知する。更に、Webサービスアプリケーション4Aは、更新したセッションIDをWebサービスクライアントアプリケーション3Aに通知する。
【0056】
図6は、Webサービスアプリケーション全体の処理動作を示すフローチャートである。図6においてWebサービスクライアントアプリケーション3Aは、手続型COBOLアプリケーション5Aの実行リクエストをサーバ1Aに要求する(S11)。サーバ1Aのスレッド21上で実行するWebサービスアプリケーション4Aは、セッションIDが存在するか否かを判定する(S12)。
【0057】
Webサービスアプリケーション4AのID通知部43は、セッションIDが存在する場合(S12肯定)、セッションIDをRTS22に通知する(S13)。更に、Webサービスアプリケーション4AのCOBOL呼出部41は、同一スレッド21上に手続型COBOLアプリケーション5Aを呼び出す(S14)。
【0058】
手続型COBOLアプリケーション5Aは、自分で使用する資源5Bの作成をRTS22に依頼する(S15)。RTS22は、セッションIDが通知済みであるか否かを判定する(S16)。RTS22の資源作成部63は、セッションIDが通知済みでない場合(S16否定)、新規の資源5Bを手続型COBOLアプリケーション5A側のスレッド21上に作成する(S17)。
【0059】
また、RTS22の資源復元部62は、セッションIDが通知済みである場合(S16肯定)、セッションIDと一致する作成済み資源5Bを手続型COBOLアプリケーション5A側のスレッド21上に復元する(S18)。手続型COBOLアプリケーション5Aは、資源5Bを使用した手続型COBOLアプリケーション5Aの実行処理が完了する(S19)。更に、Webサービスアプリケーション4Aは、手続型COBOLアプリケーション5Aの実行処理が完了すると、セッションIDが存在するか否かを判定する(S19A)。
【0060】
Webサービスアプリケーション4AのID発行依頼部42は、セッションIDが存在しない場合(S19A否定)、新規のリクエストと判断し、リクエストが使用するセッションを識別するセッションID発行をRTS22に依頼する(S20)。RTS22のセッションID発行部52は、セッションIDの発行依頼を受信すると、セッションIDを発行し、そのセッションIDをWebサービスアプリケーション4Aに通知する。更に、RTS22の資源待避部64は、手続型COBOLアプリケーション5Aが使用する資源5Bを待避する(S21)。尚、資源待避部64は、資源5Bを待避すると、当該リクエストのセッションを識別するセッションIDに対応付けて資源5Bを資源管理部53に管理する。
【0061】
Webサービスアプリケーション4Aは、RTS22からのセッションIDを受信すると、セッションIDをWebサービスクライアントアプリケーション3Aに通知する(S22)。そして、Webサービスクライアントアプリケーション3Aは、手続型COBOLアプリケーション5Aへの実行リクエストを完了し(S23)、この処理動作を終了する。
【0062】
Webサービスアプリケーション4Aは、セッションIDが存在する場合(S19A肯定)、そのセッションIDの更新をRTS22に依頼する(S24)。そして、RTS22の資源待避部64は、COBOLアプリケーション5Aが使用する資源5Bを待避すると共に、そのセッションIDを更新してWebサービスアプリケーション4Aに再通知し(S25)、S22に移行する。
【0063】
図7は、Webサービスアプリケーション4Aの処理動作を示すフローチャートである。図7においてWebサービスアプリケーション4Aは、セッションIDを取得し(S31)、セッションIDが存在するか否かを判定する(S32)。Webサービスアプリケーション4AのID通知部43は、セッションIDが存在する場合(S32肯定)、セッションIDをRTS22に通知する通知APIを呼び出す(S33)。
【0064】
Webサービスアプリケーション4AのCOBOL呼出部41は、手続型COBOLアプリケーション5Aをロードし(S34)、同一スレッド21上に手続型COBOLアプリケーション5Aを呼び出す(S35)。更に、Webサービスアプリケーション4AのID発行依頼部42は、セッションIDが発行済みであるか否かを判定する(S35A)。ID発行依頼部42は、セッションIDが発行済みでない場合(S35A否定)、リクエストに使用したセッションを識別するセッションIDの発行をRTS22に依頼する(S36)。
【0065】
Webサービスアプリケーション4AのID通知部43は、セッションIDの発行依頼に対応するセッションIDを受信すると、セッションIDをWebサービスクライアントアプリケーション3Aに通知し(S37)、この処理動作を終了する。また、Webサービスアプリケーション4AのID通知部43は、セッションIDが発行済みである場合(S35A肯定)、そのセッションIDの更新をRTS22に依頼し(S38)、S37に移行する。
【0066】
図8は、手続型COBOLアプリケーション5Aの処理動作を示すフローチャートである。図8において手続型COBOLアプリケーション5Aは、Webサービスアプリケーション4Aの呼出動作に応じて初期化処理を実行し(S41)、COBOLソースに指定された作業領域の獲得をRTS22に依頼する(S42)。手続型COBOLアプリケーション5Aは、EXTERNAL句指定のデータがあるか否かを判定する(S43)。手続型COBOLアプリケーション5Aは、EXTERNAL句指定のデータがある場合(S43肯定)、EXTERNAL句指定の領域の獲得をRTS22に依頼する(S44)。
【0067】
手続型COBOLアプリケーション5Aは、リクエストに応じた動作処理を実行し、その実行結果に基づき作業域の内容や資源5Bを更新し(S45)、その実行処理を完了すべく、終了処理を実行する(S46)。手続型COBOLアプリケーション5Aは、終了処理を実行すると、COBOLソースに指定された作業域の削除をRTS22に依頼し(S47)、この処理動作を終了する。
【0068】
また、手続型COBOLアプリケーション5Aは、EXTERNAL句指定のデータがない場合(S43否定)、リクエストに応じた動作処理を実行すべく、S45に移行する。
【0069】
図9は、RTS22の処理動作を示すフローチャートである。図9においてRTS22は、Webサービスアプリケーション4AからセッションIDを受信したか否かを判定する(S51)。RTS22は、セッションIDを受信しなかった場合(S51否定)、新規セッション状態と判断する(S52)。RTS22の資源作成部63は、新規セッション状態と判断した後、手続型COBOLアプリケーション5Aから資源5Bの作成依頼を受信すると(S53)、スレッド資源/EXTERNAL資源を新規作成する(S54)。
【0070】
RTS22は、スレッド資源/EXTERNAL資源を新規作成すると、手続型COBOLアプリケーション5Aの実行処理に応じて必要な情報を更新し(S55)、セッションIDの発行依頼又は更新依頼を受信したか否かを判定する(S56)。RTS22は、セッションIDの発行依頼又は更新依頼を受信した場合(S56肯定)、EXTERNAL動作モードであるか否かを判定する(S57)。
【0071】
RTS22のセッションID発行部52は、EXTERNAL動作モードである場合(S57肯定)、発行依頼に応じてセッションIDを発行し、そのセッションIDをWebサービスアプリケーション4Aに通知する(S58)。また、セッションID発行部52は、EXTERNAL動作モードである場合(S57肯定)、更新依頼に応じてセッションIDを更新し、そのセッションIDをWebサービスアプリケーション4Aに再通知する(S58)。更に、RTS22の資源待避部64は、手続型COBOLアプリケーション5Aで使用したEXTERNAL資源を待避し(S58)、この処理動作を終了する。尚、資源管理部53は、この待避したEXTERNAL資源をセッションIDに対応付けて管理する。
【0072】
また、RTS22のセッションID発行部52は、EXTERNAL動作モードでない場合(S57否定)、発行依頼に応じてセッションIDを発行し、そのセッションIDをWebサービスアプリケーション4Aに通知する(S59)。また、セッションID発行部52は、EXTERNAL動作モードでない場合(S57否定)、更新依頼に応じてセッションIDを更新し、そのセッションIDをWebサービスアプリケーション4Aに再通知する(S59)。更に、RTS22の資源待避部64は、手続型COBOLアプリケーション5Aを使用したスレッド資源を待避し(S59)、この処理動作を終了する。尚、資源管理部53は、この待避したスレッド資源をセッションIDに対応付けて管理する。
【0073】
また、RTS22は、セッションIDの発行依頼又は更新依頼を受信しなかった場合(S56否定)、EXTERNAL動作モードであるか否かを判定する(S60)。RTS22の資源提供部51は、EXTERNAL動作モードである場合(S60肯定)、EXTERNAL資源を破棄し(S61)、この処理動作を終了する。尚、資源管理部53は、EXTERNAL資源及び、そのセッションIDを破棄する。
【0074】
また、RTS22の資源提供部51は、EXTERNAL動作モードでない場合(S60否定)、スレッド資源を破棄し(S62)、この処理動作を終了する。尚、資源管理部53は、スレッド資源及び、そのセッションIDを破棄する。
【0075】
また、RTS22の資源判定部61は、Webサービスアプリケーション4AからセッションIDを受信した場合(S51肯定)、セッションIDが資源管理部53内に存在するか否かを判定する(S63)。RTS22の資源判定部61は、セッションIDが資源管理部53内に存在しなかった場合(S63否定)、セッション切断状態と判断する(S64)。RTS22は、セッション切断状態と判断した後、手続型COBOLアプリケーション5Aからの資源5Bの作成依頼を受信すると(S65)、スレッド資源/EXTERNAL資源を新規作成すべく、S54に移行する。
【0076】
また、RTS22の資源判定部61は、セッションIDが資源管理部53内に存在した場合(S63肯定)、セッション継続状態と判断する(S66)。RTS22は、セッション継続状態と判断した後、COBOLアプリケーション5Aからの資源作成依頼を受信すると(S67)、EXTERNAL動作モードであるか否かを判定する(S68)。
【0077】
RTS22の資源復元部62は、EXTERNAL動作モードである場合(S68肯定)、資源管理部53に管理されたセッションIDと一致する作成済みのEXTERNAL資源を現スレッド21上に復元し(S69)、S55に移行する。また、RTS22の資源復元部62は、EXTERNAL動作モードでない場合(S68否定)、資源管理部53に管理されたセッションIDと一致する作成済みのスレッド資源を現スレッド21上に復元し(S70)、S55に移行する。
【0078】
実施例2では、Webサービスクライアントアプリケーション3Aから手続型COBOLアプリケーション5Aを実行するリクエストを受信すると、当該リクエスト毎にWebサービスアプリケーション4Aを実行するスレッド21を割り当てる。更に、実施例2では、割り当てられたスレッド21上に手続型COBOLアプリケーション5Aを呼び出し、手続型COBOLアプリケーション5Aからの資源要求に応じて利用する資源5Bを手続型COBOLアプリケーション5Aに提供する。その結果、Webサービスクライアントアプリケーション3Aから手続型COBOLアプリケーション5AをWebサービスとして呼び出す場合でも、安定したマルチスレッド方式に対応できる。
【0079】
実施例2では、手続型COBOLアプリケーション5Aの実行処理が完了すると、リクエストが使用するセッションのセッションIDを発行し、当該手続型COBOLアプリケーション5Aに利用した資源5Bを待避する。更に、実施例2では、待避した資源5BをセッションIDに対応付けて資源管理部53に管理する。その結果、Webサービスクライアントアプリケーション3Aから複数のリクエストを受信したとしても、継続するリクエスト間で同一の資源5Bを引き継ぐことができる。
【0080】
更に、実施例2では、リクエスト受信時にリクエストに関わるセッションのセッションIDに対応した資源5Bがある場合、当該資源5Bを手続型COBOLアプリケーション5A上に復元する。その結果、継続するリクエスト間で同一の資源5Bを引き継ぐことができる。
【0081】
更に、実施例2では、リクエスト受信時にリクエストに関わるセッションのセッションIDに対応した資源5Bがない場合、手続型COBOLアプリケーション5A上に資源5Bを新規作成する。
【0082】
更に、実施例2では、RTS22側でセッションIDを発行すると、そのセッションIDをWebサービスクライアントアプリケーション3Aに通知する。その結果、継続するリクエストを実行する場合はセッションIDを使用して当該セッションIDに対応した資源5Bをリクエスト間で引き継ぐことができる。
【0083】
更に、実施例2では、EXTERNALモード時に手続型COBOLアプリケーション5Aに対して資源5BであるEXTERNAL資源を提供する場合、セッションIDに対応付けてEXTERNAL資源を資源管理部53に管理する。
【0084】
更に、実施例2では、EXTERNALモードではない通常モード時に手続型COBOLアプリケーション5Aに対して資源5Bであるスレッド資源を提供する場合、セッションIDに対応付けてスレッド資源を資源管理部53に管理する。
【0085】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0086】
更に、各装置で行われる各種処理機能は、CPU(Central Processing Unit)(又はMPU(Micro Processing Unit)、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU(又はMPU、MCU等のマイクロ・コンピュータ)で解析実行するプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
【0087】
ところで、実施例1及び実施例2で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下に、図10を用いて、上記実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
【0088】
同図に示すように、コンピュータ500は、HDD(Hard Disk Drive)510、RAM(Random Access Memory)520、ROM(Read Only Memory)530及びCPU540を含み、互いをバス550で接続して構成される。
【0089】
そして、ROM530には、上記の実施例と同様の機能を発揮するプログラムが予め記憶されている。そのプログラムは、スレッド割当プログラム531、呼出プログラム532、資源提供プログラム533、セッションID発行プログラム534及び資源管理プログラム535を含む。更に、資源提供プログラム533は、資源判定プログラム533A及び資源復元プログラム533Bを含む。尚、プログラム531〜535については、図1に示したサーバ1の各構成要素と同様、適宜統合又は分散してもよい。
【0090】
そして、CPU540が、これらのプログラム531〜535をROM530から読み出して実行することで、各プログラム531〜535は各種プロセスとして機能するようになる。各種プロセスは、スレッド割当プロセス541、COBOL呼出プロセス542、資源提供プロセス543、セッションID発行プロセス544及び資源管理プロセス545を含む。更に、資源提供プロセス543は、資源判定プロセス543A及び資源復元プロセス543Bを含む。各プロセス541〜545は、図1に示したスレッド割当部11、呼出部12、資源提供部13、資源判定部13A、資源復元部13B、セッションID発行部14及び資源管理部15に夫々対応する。
【0091】
CPU540は、クライアントからアプリケーションを実行するリクエストを受信すると、当該リクエスト毎にスレッドを割り当てる。更に、CPU540は、割り当てられたスレッド上にアプリケーションを呼び出す。更に、CPU540は、アプリケーションからの資源要求に応じて、アプリケーションが利用する資源を当該アプリケーションに提供する。更に、CPU540は、リクエストに使用したセッションを識別するセッションIDを発行する。
【0092】
更に、CPU540は、スレッド上のアプリケーションの実行処理が完了すると、当該アプリケーションが使用した資源をスレッドから待避する。更に、CPU540は、この待避した資源を当該リクエストが使用するセッションを識別するセッションIDに対応付けて管理する。更に、CPU540は、アプリケーションからの資源要求に応じて資源を提供する際に、当該リクエストが使用するセッションのセッションIDを受信すると、当該セッションIDに対応した資源があるか否かを判定する。更に、CPU540は、セッションIDに対応した資源がある場合に、当該資源を当該リクエストに関わるアプリケーション上に復元する。
【0093】
その結果、クライアントから異なるセッションのそれぞれにおいて複数のリクエストを受信したとしても、同一のセッションを使用した複数の継続するリクエスト間で同一の資源を引き継ぐことができる。
【符号の説明】
【0094】
1 サーバ
1A サーバ
3A Webサービスクライアントアプリケーション
4A Webサービスアプリケーション
5A 手続型COBOLアプリケーション
5B 資源
11 スレッド割当部
12 呼出部
13 資源提供部
13A 資源判定部
13B 資源復元部
14 セッションID発行部
15 資源管理部
16 処理部
21 スレッド
22 RTS
31 スレッド割当部
41 COBOL呼出部
44 モード設定部
45 処理部
51 資源提供部
52 セッションID発行部
53 資源管理部
61 資源判定部
62 資源復元部
63 資源作成部
64 資源待避部

【特許請求の範囲】
【請求項1】
コンピュータに、
手続型言語で記述されたプログラムで規定された処理であって、受信した処理要求に要求される処理をスレッドに割り当て、
セッションを識別する識別情報とスレッド資源とを予め関連付けて記憶する記憶手段から、前記処理要求についての通信に使用されたセッションを識別する識別情報と関連付けられて記憶されたスレッド資源を読み出し、
読み出した前記スレッド資源を用いて、前記スレッドに割り当てた前記処理を実行すること
を実行させることを特徴とする資源管理プログラム。
【請求項2】
前記コンピュータに、さらに、
前記処理の終了後に、前記スレッド資源を、前記処理要求についての通信に使用されたセッション識別する識別情報に関連付けて前記記憶手段に記憶すること
を実行させることを特徴とする請求項1に記載の資源管理プログラム。
【請求項3】
前記コンピュータに、
前記記憶手段に前記処理要求についての通信に使用されたセッションを識別する識別情報が記憶されていない場合に、新たにスレッド資源を作成すること
を実行させることを特徴とする請求項1又は2に記載の資源管理プログラム。
【請求項4】
前記コンピュータに、
前記アプリケーションのソースプログラムで処理に用いるスレッド資源を指定している場合には、指定されたスレッド資源を用いて前記処理を実行すること
を実行させることを特徴とする請求項1〜3のいずれか1つに記載の資源管理プログラム。
【請求項5】
手続型言語で記述されたプログラムで規定された処理であって、受信した処理要求に要求される処理をスレッドに割り当てるスレッド割当部と、
セッションを識別する識別情報とスレッド資源とを予め関連付けて記憶する記憶部と、
前記記憶部から、前記処理要求についての通信に使用されたセッションを識別する識別情報と関連付けられて記憶されたスレッド資源を読み出す資源提供部と、
前記読み出した前記スレッド資源を用いて、前記スレッドに割り当てた前記処理を実行する処理部と
を有することを特徴とする資源管理装置。
【請求項6】
手続型言語で記述されたプログラムで規定された処理であって、受信した処理要求に要求される処理をスレッドに割り当て、
セッションを識別する識別情報とスレッド資源とを予め関連付けて記憶する記憶手段から、前記処理要求についての通信に使用されたセッションを識別する識別情報と関連付けられて記憶されたスレッド資源を読み出し、
読み出した前記スレッド資源を用いて、前記スレッドに割り当てた前記処理を実行することを特徴とする資源管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate