JP2009151744A - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
JP2009151744A
JP2009151744A JP2008168553A JP2008168553A JP2009151744A JP 2009151744 A JP2009151744 A JP 2009151744A JP 2008168553 A JP2008168553 A JP 2008168553A JP 2008168553 A JP2008168553 A JP 2008168553A JP 2009151744 A JP2009151744 A JP 2009151744A
Authority
JP
Japan
Prior art keywords
request
virtual machine
worker
application
information
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.)
Granted
Application number
JP2008168553A
Other languages
English (en)
Other versions
JP4627789B2 (ja
Inventor
Kazuyuki Kumagai
和幸 熊谷
Daisuke Sakai
大介 阪井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2008168553A priority Critical patent/JP4627789B2/ja
Priority to US12/261,795 priority patent/US8239862B2/en
Publication of JP2009151744A publication Critical patent/JP2009151744A/ja
Application granted granted Critical
Publication of JP4627789B2 publication Critical patent/JP4627789B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

【課題】単一の仮想マシン環境と同じ手法でWebアプリケーションの開発を行うことができる情報処理装置を提供する。
【解決手段】この情報処理装置は、複数の仮想マシンが動作する装置であり、各仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、管理情報とクライアントから受信したリクエストに含まれるアドレス情報とからリクエストを処理するアプリケーションを判別するアプリケーション管理部25を備える。複数の仮想マシンの1つは、さらに、他の仮想マシンの管理情報と識別情報とを対応付けて保持し、他の仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを受信した場合に、管理情報および識別情報と受信したリクエストに含まれるアドレス情報とから仮想マシンを判別し、その仮想マシンへリクエストを転送するリクエスト転送部26を備える。
【選択図】 図3

Description

本発明は、複数の仮想マシンが動作する環境において、単一の仮想マシンが動作する環境と同様にしてアプリケーション開発を行うことができる情報処理装置、情報処理方法およびそれを実現するための装置可読なプログラムに関する。
顧客ごとに最適なオフィス環境を提供するために、アプリケーションの追加により顧客ごとにカスタマイズ可能なシステムが検討されている。追加されるアプリケーションには、第3ベンダが開発するものも含まれるが、この追加により、システムの基本機能が損なわれるものであってはならない。ここで、第3ベンダとは、ハードウェアやOS等、既存の環境に組み込むことで、新しい機能を提供するハードウェアまたはソフトウェア等を提供するベンダをいう。
アプリケーションを開発し、追加するにあたって、そのアプリケーションに対するリクエストを受けた場合、そのアプリケーションを実行するリソースへ適切にそのリクエストを振り分けなければならない。
アクセス状況や処理負荷に応じて、サーバに組み込まれたCPUやメモリを制御して最適な処理性能を提供するキャパシティオンデマンドという技術がある。このキャパシティオンデマンドを容易にするために、Webサーバを遠隔かつ動的に構成する方法およびシステムが提案されている(例えば、特許文献1参照)。
この方法およびシステムでは、クライアントからのリクエストを処理するサーバ群1と、リソースを提供するサーバ群3と、サーバ群1のパフォーマンスとサーバ群3のパフォーマンスとが閾値に達しているかどうかを判定するサーバ2とからなり、サーバ群1またはサーバ群3のパフォーマンス状況に応じてサーバ群に対してサーバを追加または削除する。これにより、頑強かつ柔軟なWebサーバを実現している。この方法およびシステムでは、1つのサーバが他のサーバへ処理を適切に振り分けており、リソースの動的追加が可能である。
また、パーソナルコンピュータ(PC)にドライバを必要とすることなく、PCの機種やOSに依存することなく、Webサービスを提供することが可能な画像形成装置が提案されている(例えば、特許文献2参照)。この画像形成装置は、複数のハードウェア資源ごとにWebサービスを提供するための手段を備え、リクエスト内のメッセージ交換プロトコルに従って記述されたメッセージに含まれるWebサービスを特定する情報に対応するWebサービス関数をコールすることにより、Webサービスを特定し、Webサービスに分配してレスポンスを提供している。この装置では、リクエストを解析し、適切な処理部へリクエストを振り分けている。
UNIX(登録商標)等のプロセスベースのオペレーティングシステム(OS)で、上記のアプリケーションの追加により顧客ごとにカスタマイズ可能なシステムを構築する場合、システムの堅牢性を向上させるために、適度な粒度でプロセスを分割するのが一般的である。ここで、堅牢性とは、プログラムにおいて、エラーや例外等に強く、簡単には暴走しないことをいう。
アプリケーションの開発言語としてJava(登録商標)言語を用いる場合、単一のプロセス、すなわち単一の仮想マシン上で複数のアプリケーションを動作させることになる。この場合、細かい粒度でプロセスを分割するのは現実的ではない。しかしながら、仮想マシンを2つにし、少なくとも基本機能を実現するアプリケーションを一方の仮想マシン上で動作させ、第3ベンダが開発したアプリケーションをもう一方の仮想マシン上で動作させるように構成することで、システムの堅牢性を向上させることが可能となる。
特表2005−539298号公報 特開2007−135238号公報
上記特許文献1の技術は、サーバ資源の最適化であり、各サーバがハードウェア的に独立していることを前提とし、複数の仮想マシンが動作する装置に適用することはできない。
上記特許文献2の技術は、利用者の環境に依存することなく、Webサービスを提供するものであり、複数の仮想マシンが動作する環境において、各仮想マシン上で動作するアプリケーションにリクエストを適切に振り分けるものではない。
複数の仮想マシンが動作する環境でアプリケーション開発を行う場合に、1つのHTTPサーバですべての仮想マシンのWebアプリケーションを管理しようとすると、HTTPサーバとWebアプリケーションとの間にプロセス間通信が必要となる。各Webアプリケーションにプロセス間通信の処理を加えることは、アプリケーション開発に大きな負担がかかり、その開発が困難なものとなる。これに対し、単一の仮想マシンが動作する環境では、単一のプロセス上で1つのHTTPサーバおよび複数のアプリケーションが動作するため、プロセス間通信は不要であり、このような問題は生じない。
そこで、Webアプリケーションにプロセス間通信の処理を加えることなく簡単にアプリケーション開発を行うことができ、複数の仮想マシンが動作する環境にその開発したアプリケーションを追加しても、クライアントから受信したリクエストを適切に各仮想マシン上で動作するアプリケーションに振り分けることができる装置の提供が望まれている。
本発明は、上記課題に鑑み、複数の仮想マシンが動作する情報処理装置であって、各前記仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、前記管理情報とクライアントから受信したリクエストに含まれるアドレス情報とから、前記リクエストを処理するアプリケーションを判別するアプリケーション管理部を含み、前記複数の仮想マシンの1つが、さらに、他の前記仮想マシンの前記アプリケーション管理部が保持する前記管理情報と前記他の仮想マシンを識別するための識別情報とをそれぞれ対応付けて保持し、前記他の仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記クライアントから受信した場合に、前記管理情報および前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき前記他の仮想マシンを判別し、前記他の仮想マシンへ前記リクエストを転送するリクエスト転送部を備える。
また、本発明は、複数の仮想マシンが動作する情報処理装置で実行される情報処理方法であって、各前記仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、前記複数の仮想マシンの1つであるマスター仮想マシンが、さらに、他の仮想マシンであるワーカー仮想マシンが保持する前記管理情報と前記ワーカー仮想マシンを識別するための識別情報とをそれぞれ対応付けて保持し、前記ワーカー仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記クライアントから受信した場合に、前記マスター仮想マシンが保持する前記管理情報および前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき前記ワーカー仮想マシンを判別し、前記ワーカー仮想マシンへ前記リクエストを転送するステップと、前記ワーカー仮想マシンにおいて、当該ワーカー仮想マシンが保持する前記管理情報とクライアントから受信したリクエストに含まれるアドレス情報とから、前記リクエストを処理するアプリケーションを判別するステップと、判別された前記アプリケーションを使用して前記リクエストを処理するステップと、処理結果を前記マスター仮想マシンへ送信するステップと、を含む。
また、本発明は、複数の仮想マシンが動作する情報処理装置により読み取り可能な、クライアントからのリクエストを処理するためのプログラムであって、各前記仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、前記複数の仮想マシンの1つであるマスター仮想マシンが、さらに、他の仮想マシンであるワーカー仮想マシンが保持する前記管理情報と前記ワーカー仮想マシンを識別するための識別情報とをそれぞれ対応付けて保持していて、前記プログラムが、前記ワーカー仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記クライアントから受信した場合に、前記マスター仮想マシンが保持する前記管理情報および前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき前記ワーカー仮想マシンを判別し、前記ワーカー仮想マシンへ前記リクエストを転送するステップと、前記ワーカー仮想マシンにおいて、当該ワーカー仮想マシンが保持する前記管理情報とクライアントから受信したリクエストに含まれるアドレス情報とから、前記リクエストを処理するアプリケーションを判別するステップと、判別された前記アプリケーションを使用して前記リクエストを処理するステップと、処理結果を前記マスター仮想マシンへ送信するステップと、を前記情報処理装置に実行させる。
本発明によれば、クライアントから受信したリクエストに含まれるアドレス情報と、管理情報および識別情報とから、このリクエストを処理すべき仮想マシンを判別し、当該仮想マシンへ前記リクエストを転送する。これにより、複数の仮想マシンが動作する環境にその開発したアプリケーションを追加しても、クライアントから受信したリクエストを適切に各仮想マシン上で動作するアプリケーションに振り分けることができる。
図1は、本発明の情報処理装置の一つの実施形態であるサーバ装置を含むネットワーク機器構成を例示した図である。図1では、サーバ装置10と、クライアント装置11とがネットワーク12に接続され、互いに通信可能とされている。
クライアント装置11は、ソフトウェアとしてWebブラウザを実装し、サーバ装置10は、ソフトウェアとしてWebサーバを実装している。Webサーバは、Webブラウザから出されるリクエストを、インターネット等のネットワーク12を介して受信し、Webアプリケーションにより処理し、その処理結果をWebブラウザへ送信する。
Webブラウザが、ユーザにより指定されたURLに対応する情報を取り寄せる場合、Webブラウザは、Webサーバに対し、リクエストとしてそのURLを送る。Webサーバは、そのURLを受け取り、URLに含まれるパス名、すなわちファイル名あるいはディレクトリ名から、Webページを表示させるためのファイルを読み出し、そのファイルを処理結果として返す。
WebブラウザとWebサーバとの間の通信は、HTTP等の通信プロトコルを使用して行われる。このHTTPを用いて通信を行うWebブラウザは、HTTPクライアントと呼ばれ、Webサーバは、HTTPサーバと呼ばれる。以下では、WebブラウザをHTTPクライアント、WebサーバをHTTPサーバと表記する。HTTPサーバは、HTTPクライアントからのリクエストを受信するために、互いを接続する接続口となる外部ポートを開く。この外部ポートは、一般にポート番号80で、1つのみである。このため、HTTPサーバとHTTPクライアントとの間の通信は、この1つの外部ポートのみを介して行われる。
このサーバ装置10およびクライアント装置11は、HTTPサーバおよびHTTPクライアントを動作させるためのCPU、CPUが実行するためのプログラムを格納するメモリ、通信を行うためのネットワークボードやネットワークカードといった通信インタフェースを備えるPCや複合機等とすることができる。なお、図1では、クライアント装置11として1つのPCのみが示されているが、2つ以上のクライアント装置11がネットワーク12に接続され、各クライアント装置11からリクエストを送信することもできる。
次に、図1に示すサーバ装置10に実装されるモジュールの構成を、図2を参照して詳細に説明する。このサーバ装置10は、複数の仮想マシンを備えることができるが、図2では、3つの仮想マシンのみが示されている。ここで、仮想マシンとは、コンピュータのCPUやメモリ等のリソースを、物理的構成によらず柔軟に分割したり統合して仮想化した上で、その仮想化したコンピュータを実行するソフトウェアである。また、仮想マシンは、Java(登録商標)をプログラミング言語とするJava(登録商標)仮想マシンとすることができる。なお、このJava(登録商標)仮想マシンは、各OSに実行ファイルとして存在し、実行後、クラスファイルを読み込み、クラス内のメソッドを呼び出し実行する。
サーバ装置10は、3つの仮想マシンを同時に起動させることができ、このため、同時に異なる3つのOSを実行し、それらOS上でそれぞれ、アプリケーションを動作させることができる。図2では、3つの仮想マシン20、30、40がそれぞれ1つのHTTPサーバ21、31、41を含み、仮想マシン20が3つのWebアプリケーション22a〜22c、仮想マシン30が2つのWebアプリケーション32a、32b、仮想マシン40が2つのWebアプリケーション42a、42bを備えている。各仮想マシン上では、各HTTPサーバおよび各Webアプリケーションを動作させることができる。なお、HTTPサーバ21、31、41は、同一のモジュールである。一方、Webアプリケーション22a〜22c、32a、32b、42a、42bは、互いに異なるモジュールである。
3つの仮想マシン20、30、40は、1つのマスター仮想マシン20と、それ以外のワーカー仮想マシン30、40とに分類される。マスター仮想マシン20は、サーバ装置10の外部から外部ポートを使用してリクエストを受信し、そのリクエストに含まれるURL等のアドレス情報がワーカー仮想マシン30のWebアプリケーションあるいはワーカー仮想マシン40のWebアプリケーションを指し示すものである場合、そのリクエストの処理をそれらの仮想マシンに振り分ける。ワーカー仮想マシン30、40は、マスター仮想マシン20から、サーバ装置10の内部でのみ用いられる内部ポートを使用してリクエストを受け取り、そのリクエストに含まれるURLで指し示されるWebアプリケーションにより処理を実行し、処理結果をマスター仮想マシン20へ返す。その後、マスター仮想マシン20は、リクエストの送信元であるクライアント装置11へ外部ポートを使用してその処理結果を送信する。
Java(登録商標)では、サーブレットやJSP(登録商標)という形でWebアプリケーションを作り、このWebアプリケーションを、上記でいうHTTPサーバに対応するアプリケーションサーバを用いて実行する。ここで、サーブレットとは、サーバで実行するためのJava(登録商標)プログラムで、JSP(登録商標)とは、HTMLにJava(登録商標)プログラムを埋め込んだファイルである。アプリケーションサーバとしては、一例としてTomcat(登録商標)を用いることができ、さらに、Webアプリケーション用フレームワークとしてStruts(登録商標)を用いることができる。このフレームワークは、プログラムの枠組みを提供するライブラリであり、アプリケーションに必要なデータの入出力やエラー処理、画面遷移等の基本的なしくみを提供する。Java(登録商標)アプリケーションを開発する基本ツールとしてJ2SEを用い、Webアプリケーションを作ることができる。作られたWebアプリケーションは、データベースに格納される。
作成されたWebアプリケーションを使用しての具体的な処理を説明すると、Java(登録商標)仮想マシンであるJ2SE上でアプリケーションサーバであるTomcat(登録商標)を稼動させ、Webアプリケーションを読み出し、そのWebアプリケーションを構成するサーブレットおよびJSP(登録商標)を実行してリクエストを処理し、処理結果をHTTPクライアントへ返すことができる。したがって、このJ2SEを仮想マシンとして、Tomcat(登録商標)をHTTPサーバとして利用することができる。
このように、各仮想マシン上にHTTPサーバが存在するため、仮想マシンごとに独立して、Webアプリケーションの開発を行うことができる。また、複数の仮想マシンが動作する環境であっても、単一の仮想マシンが動作する環境と同様に、プロセス間通信の処理を加えることなく、簡単にWebアプリケーションの開発を行うことができ、これにより、Webアプリケーションの開発時の負荷が軽減し、Webアプリケーション開発効率を向上させることができる。
図3を参照して、マスター仮想マシン20上で動作するHTTPサーバの構成について詳細に説明する。HTTPサーバは、クライアント装置11のHTTPクライアント100から出されたリクエストを、ネットワーク12を介して受信し、そのリクエストを解釈するリクエスト受信部23と、Webアプリケーションによる処理結果をレスポンスとして組み立て、ネットワーク12を介してクライアント装置11のHTTPクライアントへ送信するレスポンス送信部24と、複数のWebアプリケーションをそれぞれURLと対応付けて保持するアプリケーション管理部25と、他のHTTPサーバに処理を振り分けるためにリクエストを転送するリクエスト転送部26とを備える。
さらに、図3では、リクエストを一時的にメモリに保存し、要求に応じて取り出すリクエスト保存部27と、複数のワーカーHTTPサーバへリクエストを転送する優先順位に関する優先度情報を保存する仮想マシン制御部28とを備えている。
ここで、マスター仮想マシン20上で動作するHTTPサーバ21は、マスターHTTPサーバであり、ワーカー仮想マシン30、40上で動作するHTTPサーバ31、41は、ワーカーHTTPサーバである。これらのHTTPサーバ21、31、41は、同一のモジュールであるが、それら自身が存在する仮想マシンがマスターであるか、ワーカーであるかにより、マスターHTTPサーバあるいはワーカーHTTPサーバのいずれかとして振る舞う。例えば、マスター仮想マシン20は、基本機能を実現するためのWebアプリケーションを実装する仮想マシンとし、ワーカー仮想マシン30、40は、サーバ装置10の管理者が機能を追加するために作成したWebアプリケーションを実装する仮想マシンや、第3ベンダが作成したWebアプリケーションを実装する仮想マシンとすることができる。
マスターHTTPサーバ21は、サーバ装置10外部の装置であるクライアント装置11とネットワーク12を介して通信を行うために外部ポートを開く。これにより、サーバ装置10の外部、例えばクライアント装置11から、この外部向けのポートに対してアクセスすることが可能となる。
一方、ワーカーHTTPサーバ31、41は、サーバ装置10の内部で通信を行うために内部ポートを開く。この内部ポートは、マスターHTTPサーバ21とワーカーHTTPサーバ31、41との間の通信を可能にするためのもので、内部送信・受信機能であるループバックを使用してアクセスすることができる。内部ポートは、サーバ装置10内部のHTTPサーバ間通信でのみ使用されるため、サーバ装置10外部からワーカーHTTPサーバ31、41へアクセスすることはできない。なお、ポート番号の重複は許されないので、外部ポートと内部ポートとは異なるポート番号が割り当てられる。外部ポートは、一般にポート番号80であるため、内部ポートは、それ以外の、例えばポート番号8080、8081を割り当てることができる。
マスターHTTPサーバ21およびワーカーHTTPサーバ31、41は、自身がマスターであるか、ワーカーであるかを知っている。しかしながら、マスター仮想マシン20およびワーカー仮想マシン30、40上で動作するWebアプリケーション22a〜22c、32a、32b、42a、42bはいずれも、自身がマスターであるか、ワーカーであるかを知らない。これらは、自身がマスターか、ワーカーかを知っているHTTPサーバ21、31、41により管理される。このため、Webアプリケーションをマスターであるか、ワーカーであるかを区別することなく開発することができる。
図4を参照して、マスター仮想マシン20上のWebアプリケーションを、マスターHTTPサーバ21に登録する場合の処理について説明する。Webアプリケーションを登録する場合、マスター仮想マシン20に存在するWebアプリケーションは、マスター仮想マシン20に存在するHTTPサーバ21に対してURLの登録を行う。具体的には、Webアプリケーション22aが、HTTPサーバ21に対して、「url1」のURL登録を要求すると(ステップS11)、HTTPサーバ21に含まれるアプリケーション管理部25が、このURLをWebアプリケーション22aと対応付けて記憶する(ステップS12)。すなわち、そのURLを、Webアプリケーション22aを識別するアプリケーション名等と対応付けて対応テーブル等に記憶する。また、アプリケーション管理部25は、URLの記憶後、記憶が完了したことのレスポンスをWebアプリケーション22aへ返す(ステップS13)。
一方、URLの登録後、クライアント装置11のHTTPクライアント100から、「GET /url1 HTTP/1.1」のリクエストが送信されると(ステップS14)、HTTPサーバ21のリクエスト受信部23がこれを受け取り、リクエストを解釈する(ステップS15)。ここでは、「url1にあるファイルを転送規格HTTP/1.1で取得する」と解釈する。そして、リクエスト受信部23は、このリクエストをどのWebアプリケーションに振り分けるかを決定するため、アプリケーション管理部25に引き渡す(ステップS16)。
アプリケーション管理部25は、対応テーブルを参照し、リクエスト受信部23から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS17)。ここで、対応するWebアプリケーションが見つかった場合、アプリケーション管理部25は、その対応するWebアプリケーション(Webアプリケーション22a)に処理を依頼する(ステップS18)。Webアプリケーション22aでは、依頼された処理を実行し(ステップS19)、この処理結果をレスポンスとしてアプリケーション管理部25へ送信する(ステップS20)。
次いで、アプリケーション管理部25が、Webアプリケーションから受け付けたレスポンスをレスポンス送信部24へ送信し(ステップS21)、レスポンス送信部24は、そのレスポンスをHTTPクライアント100へ送信する(ステップS22)。図4では、見つかったことを示す「HTTP/1.1 200 OK」というメッセージが送信されている。「HTTP/1.1」は転送規格で、「200」は成功を意味するステータスコードである。これらのメッセージとともに、そのアドレスにあるWebページを表示させるためのファイルがHTTPクライアント100へ送られ、クライアント装置11の画面上にWebページが表示される。なお、図4では、Webアプリケーション22aの登録について説明したが、Webアプリケーション22b、22cについても同様の処理が行われるものとする。
ステップS17において、URLに対応するWebアプリケーションが見つからない場合には、リソースが見つからない旨のエラーメッセージをレスポンスとして送信するものとする。以下、図5を参照して、URLに対応するWebアプリケーションが見つからない場合の処理について説明する。なお、図5においてステップS31〜S36の処理については、上述したステップS11〜S16の処理と同様であるため、説明を省略する。
ステップS37において、アプリケーション管理部25は、対応テーブルを参照し、リクエスト受信部23から渡されたURL「foo」に対応するWebアプリケーションを探索する。ここで、対応するWebアプリケーションが見つからないと判定した場合、アプリケーション管理部25は、図5に示したように、リソースが見つからない旨のエラーメッセージ「404 Not Found」を作成し、そのエラーメッセージをレスポンスとしてレスポンス送信部24へ送信する(ステップS38)。レスポンス送信部24は、このエラーメッセージをHTTPクライアント100へ送信する(ステップS39)。HTTPプロトコルにおいて、「404」は見つからなかったことを示すステータスコードである。これにより、クライアント装置11を操作するユーザに、リソースが見つからないことを認識させることができる。
次に、図6を参照して、ワーカー仮想マシン30上のWebアプリケーションをワーカーHTTPサーバ31に登録する場合について説明する。ワーカー仮想マシン30に存在するWebアプリケーション32aは、同じワーカー仮想マシン30に存在するHTTPサーバ31に対してURLの登録を行う。具体的には、Webアプリケーション32aが、HTTPサーバ31に対して「url2」のURL登録を行うと(ステップS41)、アプリケーション管理部35は、このURLをWebアプリケーション32aと対応付け、対応テーブル等に記憶する(ステップS42)。
URLの登録後、HTTPサーバ31は、HTTPサーバ31自身が存在する仮想マシンの種別、すなわちマスターかワーカーかを判別する。この場合、ワーカーと判別し、マスターHTTPサーバ21へリクエストを転送してもらうための依頼を行う(ステップS43)。なお、ワーカーHTTPサーバ31からは、登録を行ったURLと、外部ポートのポート名あるいは番号と、内部ポートのポート名あるいはポート番号とを含む情報が、振り分け依頼登録としてマスターHTTPサーバ21に送信されるものとする。これは、異なるマシンで処理を実行する手続きを規定するリモートプロシージャコール(RPC)を使用することにより実現することができる。このように、RPCを使用することでマスターHTTPサーバ21へWebアプリケーションのURLを動的に登録することができるため、ワーカーHTTPサーバ31、41にWebアプリケーションを追加しても、マスターHTTPサーバ21へ修正を加える必要がなくなる。これにより、Webアプリケーション開発時の負荷が軽減し、Webアプリケーション開発効率を向上させることができる。
マスターHTTPサーバ21が備えるリクエスト転送部26では、ワーカーHTTPサーバ31からURLと、外部ポートのポート名あるいは番号と、内部ポートのポート名あるいはポート番号とを受け取ると、これらの情報をアプリケーション管理部25に渡す(ステップS44)。アプリケーション管理部25は、リクエスト転送部26から受け取った各情報を対応付け、対応テーブル等に記憶すると(ステップS45)、リクエスト転送部26を介して記憶が完了したことを通知するレスポンスをワーカー仮想マシン30のアプリケーション管理部35に送信する(ステップS46、S47)。
一方、アプリケーション管理部35では、リクエスト転送部26から記憶が完了したことを通知するレスポンスを受け付けると、このレスポンスをWebアプリケーション32aに返すことで(ステップS48)、登録処理が完了する。なお、図6では、Webアプリケーション32aの登録について説明したが、Webアプリケーション32bについても同様の処理が行われるものとする。また、図6では、ワーカー仮想マシン30について説明したが、ワーカー仮想マシン40の場合でも同様の処理が行われるものとする。
一方、URLの登録後に、クライアント装置11のHTTPクライアント100から、「GET /url2 HTTP/1.1」がリクエストとして送信されると(ステップS49)、HTTPサーバ21のリクエスト受信部23がこれを受け取り、そのリクエストを解釈する(ステップS50)。この場合、「url2にあるファイルを転送規格HTTP/1.1で取得する」と解釈する。リクエスト受信部23は、受け付けたリクエストをアプリケーション管理部25へ渡すと(ステップS51)、アプリケーション管理部25は、対応テーブルを参照し、このリクエストに含まれたURLに対応するWebアプリケーション32aを探索する(ステップS52)。
ここで、リクエストに含まれたURL“url2”がWebアプリケーション32aに対応するものとすると、Webアプリケーション32aはワーカー仮想マシン30上で動作するアプリケーションであるため、マスター仮想マシン20上では見つからない。そのため、アプリケーション管理部25は、リクエスト転送部26に対し、ワーカー仮想マシン30上で動作するワーカーHTTPサーバ31へ転送するように、リクエストの転送依頼をする(ステップS53)。リクエスト転送部26では、リクエストの転送依頼を受け付けると、転送先となるワーカー仮想マシン30の内部ポートのポート番号に対してリクエストを転送する(ステップS54)。
このように、マスターHTTPサーバ21は、ワーカーHTTPサーバ31、41へHTTPを用いてリクエストを転送する。この場合、ワーカーHTTPサーバ31、41は、一般的なWebブラウザからのリクエストを受けた場合と同じとなるため、ワーカーHTTPサーバ31、41のリクエスト処理に手を加える必要はない。また、マスターHTTPサーバ21は、情報処理装置の外部と通信を行うために外部ポートを使用し、ワーカーHTTPサーバ31、41は、マスターHTTPサーバ21と通信を行うために内部ポートと自身を識別するループバックアドレスとを使用して、リクエストを受信し、リクエストに対する処理結果を送信する。これにより、サーバ装置10の外部からワーカーHTTPサーバ31、41への直接的なアクセスを防止することができるため、セキュリティ面を考慮しなければならないのはマスターHTTPサーバ21のみでよく、装置全体として保守・管理の負担を軽減させることができる。
リクエスト転送部26から送信されたリクエストは、ワーカー仮想マシン30上で動作するワーカーHTTPサーバ31のリクエスト受信部33で解釈が行われた後(ステップS55)、アプリケーション管理部35へ渡される(ステップS56)。アプリケーション管理部35は、対応テーブルを参照し、リクエスト受信部33から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS57)。この場合、ワーカー仮想マシン30上で動作するWebアプリケーション32a、32bの中にそのURLに対応するWebアプリケーション32aが含まれているため、アプリケーション管理部35は、Webアプリケーション32aに処理を依頼する(ステップS58)。Webアプリケーション32aは依頼された処理を実行し(ステップS59)、この処理結果をレスポンスとしてアプリケーション管理部35へ送信する(ステップS60)。アプリケーション管理部35は、Webアプリケーション32aから受け付けたレスポンスをレスポンス送信部34へ送信すると(ステップS61)、レスポンス送信部34は、そのレスポンスをマスター仮想マシン20のリクエスト転送部26に送信する(ステップS62)。
一方、リクエスト転送部26では、レスポンス送信部34からレスポンスを受け付けると、このレスポンスをアプリケーション管理部25に送信する(ステップS63)。続いて、アプリケーション管理部25は、リクエスト転送部26から受け付けたレスポンスをレスポンス送信部24に送信すると(ステップS64)、レスポンス送信部24は、そのレスポンスをHTTPクライアント100へ送信する(ステップS65)。
このように、マスターHTTPサーバ21では、ワーカーHTTPサーバ各々が有するWebアプリケーションのURLと、当該ワーカーHTTPサーバの外部・内部ポートに関する情報とを対応付けた対応テーブルを用いて、HTTPクライアント100から受信したリクエストに含まれるURL(アドレス情報)に対応する仮想マシンを判別し、当該仮想マシンへ前記リクエストを転送する。
次に、各ワーカー仮想マシンのWebアプリケーションが、同一のURLに対応付けられた場合の動作について説明する。まず、各ワーカー仮想マシンのWebアプリケーションに、同一のURLが設定されることになる背景について説明する。
Java(登録商標)を用いてWebアプリケーションを作成する場合、上述したようにStruts(登録商標)等のフレームワークを利用することが一般的に行われている。フレームワークには商用又はオープンソースのものなど多種存在するが、その仕様によっては、URLに含まれたディレクトリ指定部分に関わらず、当該URLで指定されるファイルの拡張子部分に基づいて、Webアプリケーションが処理を行うものがある。このような仕様のフレームワークを用いた場合、Webアプリケーションの夫々が同一の拡張子について処理を行うよう規定されていると、各Webアプリケーションは実質同一のURL、即ちファイル拡張子に対応付けられることになる。以下では、複数のWebアプリケーションが同一のURLに対応付けられた場合の処理について説明する。
図7を参照して、Webアプリケーション32a、42aをワーカーHTTPサーバ31、41に登録する場合の処理について説明する。なお、図7では、Webアプリケーション32a、42aについて説明するが、Webアプリケーション32b、42bについても同様の処理が行われるものとする。また、図7において、ワーカー仮想マシン30及びワーカー仮想マシン40が有するWebアプリケーションの夫々は、同一のURL、つまり同一のファイル拡張子に対応付けられているものとする。
まず、Webアプリケーション32aがHTTPサーバ31に対し、URLの登録を行うと(ステップS71)、上述したように、アプリケーション管理部35が、このURLとアプリケーション32aを対応付け、対応テーブル等に記憶する(ステップS72)。なお、図7では、登録を行うURLを「/*.cgi」(アスタリスクは、任意の文字列)とした例を示しているが、これに限定されないものとする。
URLの登録後、HTTPサーバ31は、HTTPサーバ31自身が存在する仮想マシンの種別、すなわちマスターかワーカーかを判別する。この場合、ワーカーと判別し、マスターHTTPサーバ21へリクエストを転送してもらうための依頼を行う(ステップS73)。
また、Webアプリケーション42aがHTTPサーバ41に対し、Webアプリケーション32aと同じURL(/*.cgi)の登録を行うと(ステップS74)、アプリケーション管理部45は、Webアプリケーション32aと同様に、このURLとWebアプリケーション42aとを対応付け、対応テーブル等に記憶する(ステップS75)。URLの登録後、HTTPサーバ41は、HTTPサーバ41自身が存在する仮想マシンの種別、すなわちマスターかワーカーかを判別する。この場合、ワーカーと判別し、マスターHTTPサーバ21へリクエストを転送してもらうための依頼を行う(ステップS76)。
一方、マスターHTTPサーバ21が備えるリクエスト転送部26では、ワーカーHTTPサーバ31、41からURLと、外部ポートのポート名あるいは番号と、内部ポートのポート名あるいはポート番号とを受け取ると、これらの情報をアプリケーション管理部25に渡す(ステップS77、S78)。アプリケーション管理部25は、リクエスト転送部26から受け取ったワーカーHTTPサーバ31、41についての各情報を夫々対応付け、対応テーブル等に記憶すると(ステップS79、S80)、記憶が完了したことを通知するレスポンスをリクエスト転送部26に送信する(ステップS81、S82)。リクエスト転送部26は、アプリケーション管理部25からレスポンスを受け付けると、ワーカー仮想マシン30、40のアプリケーション管理部35、45の夫々に対し、当該レスポンスを夫々送信する(ステップS83、S84)。一方、アプリケーション管理部35、45の夫々では、リクエスト転送部26から記憶が完了したことを通知するレスポンスを受け付けると、このレスポンスをWebアプリケーション32a、42aに夫々返すことで(ステップS85、S86)、登録処理が完了する。
なお、マスターHTTPサーバ21では、リクエストを振り分けるために、ワーカーHTTPサーバ31、41からURLを受け取り、記憶するが、この場合、同じURLである。しかしながら、ワーカーHTTPサーバ31が開いた内部ポートのポート番号は8080で、ワーカーHTTPサーバ41が開いた内部ポートのポート番号は8081と異なり、この内部ポートのポート番号により判別することができるため、複数のアプリケーションについて同一のURLを登録することができる。これにより、各ワーカーHTTPサーバ31、41のWebアプリケーション開発者は、アプリケーション開発の際、他のワーカーHTTPサーバを有するWebアプリケーションとURLが重複しているかを意識する必要がなくなる。したがって、ワーカーHTTPサーバ間でWebアプリケーションのURLを調整する必要がないため、アプリケーション開発時の負荷を軽減し、アプリケーション開発効率を向上させることができる。
一方、URL登録後に、クライアント装置11のHTTPクライアント100から、「GET /url/app2.cgi HTTP/1.1」のリクエストが送信されると(ステップS87)、HTTPサーバ21のリクエスト受信部23がこれを受け取り、このリクエストを解釈する(ステップS88)。この場合、「ディレクトリ名urlのディレクトリにあるファイル名app2.cgiというファイルを転送規格HTTP/1.1で取得する」と解釈する。
リクエスト受信部23は、HTTPクライアント100から受け付けたリクエストをアプリケーション管理部25へ渡す(ステップS89)。アプリケーション管理部25は、リクエスト受信部23からリクエストを受け取ると、対応テーブルを参照し、このリクエストに含まれたURLに対応するWebアプリケーションを探索する(ステップS90)。この場合、URLに対応するWebアプリケーションはワーカー仮想マシン30またはワーカー仮想マシン40上で動作するアプリケーションであるため、マスター仮想マシン20上では見つからない。そのため、アプリケーション管理部25は、リクエスト転送部26に対し、ワーカー仮想マシン30上で動作するワーカーHTTPサーバ31またはワーカーHTTPサーバ41へリクエストを転送するよう依頼する(ステップS91)。
ここで、2つのWebアプリケーション32a、42aが登録したURLが同じであることから、リクエスト転送部26は、2つのワーカー仮想マシン30、40のどちらかへリクエストを転送する(ステップS92)。この場合、後に残りの仮想マシンへリクエストを再送する可能性があるため、リクエスト転送部26は、受け付けたリクエストをリクエスト保存部27に送信することで(ステップS93)、当該リクエスト保存部27にリクエストを一時的に保存する。
ステップS92において、リクエスト転送部26は、例えば、Webアプリケーションがアプリケーション管理部25に予め登録しておいた各ワーカー仮想マシン(Webアプリケーション)への転送順序や、予め登録しておいた各ワーカー仮想マシン(Webアプリケーション)の優先順位を示す優先度情報等に従ってリクエストを転送する。ワーカー仮想マシン30上で動作するWebアプリケーション32aが先に登録あるいは優先順位が高い場合、リクエスト転送部26は、ワーカー仮想マシン30が開いた内部ポートのポート番号に対してリクエストを転送する。
ワーカー仮想マシン30上で動作するワーカーHTTPサーバ31のリクエスト受信部33では、マスター仮想マシン20から転送されたリクエストを受信すると、このリクエストをリクエスト受信部23と同様に解釈する(ステップS94)。そして、リクエスト受信部33は、このリクエストをどのWebアプリケーションに振り分けるかを決定するため、アプリケーション管理部35に引き渡す(ステップS95)。
アプリケーション管理部35は、対応テーブルを参照し、リクエスト受信部33から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS96)。ここで、リクエストされたファイル“app2.cgi”が、Webアプリケーション32aに対応するものとすると、アプリケーション管理部35は、ワーカー仮想マシン30上で動作するWebアプリケーション32a、32bの中に、そのURLに対応するWebアプリケーション32aが含まれていると判定し、Webアプリケーション32aに処理を依頼する(ステップS97)。Webアプリケーション32aでは、依頼された処理を実行し(ステップS98)、この処理結果をレスポンスとして、成功を示すステータスコード「200」とともにアプリケーション管理部35へ送信する(ステップS99)。アプリケーション管理部35では、Webアプリケーション32aからレスポンスを受け付けると、レスポンス送信部34へ送信し(ステップS100)、レスポンス送信部34では、アプリケーション管理部35から送信されたレスポンスを、マスター仮想マシン20のリクエスト転送部26へ送信する(ステップS101)。
一方、リクエスト転送部26では、ステップS92で転送したリクエストに対するレスポンスを受け付けると、このレスポンスに含まれるステータスコードが予め設定された特別な値、例えば「900」であるか否かを判定する(ステップS102)。ステータスコードが特別な値でない場合、リクエスト転送部26は、アプリケーション管理部25を介してレスポンスをレスポンス送信部24に送信する(ステップS103、S104)。次いで、レスポンス送信部24は、アプリケーション管理部25から受け付けたレスポンスを、HTTPクライアント100へ送信する(ステップS105)。
上記の特別な値は、HTTPプロトコルでのステータスコードとして設定されていない値であればいかなる値であってもよく、例えば、上記のように「900」とすることができる。なお、この「900」というステータスコードは、リクエストが転送されたワーカー仮想マシンにおいて、対応するWebアプリケーションが見つからない場合に送信されるよう予め設定されているものとする。
上記の優先順位は、優先度情報としてユーザにより予め設定され、マスター仮想マシン20上で動作するマスターHTTPサーバ21に含まれる仮想マシン制御部28が保持する。例えば、ワーカー仮想マシン30に対し、優先度1、ワーカー仮想マシン40に対し、優先度2として設定することができる。この優先度情報は、サーバ装置10の起動時に設定され、また、実行時に動的に変更することができる。
この優先度情報を使用した処理について説明すると、マスターHTTPサーバ21のリクエスト転送部26は、仮想マシン制御部28からマスター仮想マシン20の優先度情報を取得し、リクエストを転送していない仮想マシンの中で最も優先度が高いものを選択してリクエストを転送する。その後、予め設定された特別な値のステータスコード、上記でいう「900」を受け取った場合、次の優先度の仮想マシンを選択し、リクエストを転送する。特別な値のステータスコードを受け取らなかった場合は、次の優先度の仮想マシンは選択されず、最も高い優先度の仮想マシン上で動作する、URLに対応したWebアプリケーションにより処理を実行し、処理結果がリクエスト転送部26へ送信される。
上記においてリクエストを再送する可能性がありうることを説明した。しかしながら、サーバ装置10内で利用可能な高速メモリ(RAM)には上限があり、リクエストをすべてこのRAMに保持することができない場合がある。そこで、RAMに保持するサイズの上限を設け、リクエストのサイズが上限を超える場合には、リクエスト保存部27は、その他のHDD等の記憶媒体に一時的に保存することができる。これにより、RAMのメモリサイズに制約がある場合でも、代わりとなる代替記憶媒体を利用することで、リクエストを再送することができる。
アプリケーション管理部25に登録されたURLが同一で、リクエストを先に振り分けたワーカー仮想マシン30上に対応するWebアプリケーションが存在する場合、図7に示した処理となる。しかしながら、先に振り分けたワーカー仮想マシン30上に対応するWebアプリケーションが存在しない場合、図7と同様の処理にはならない。そこで、この場合の処理の流れを、図8を参照して説明する。
まず、クライアント装置11のHTTPクライアント100から、「GET /url/app3.cgi HTTP/1.1」のリクエストが送信されると(ステップS111)、HTTPサーバ21のリクエスト受信部23がこれを受け取り、そのリクエストを解釈する(ステップS112)。この場合、「ディレクトリ名urlのディレクトリにあるファイル名app3.cgiというファイルを転送規格HTTP/1.1で取得する」と解釈する。なお、リクエストされたファイル“app3.cgi”は、Webアプリケーション42aを指定するものとする。
リクエスト受信部23は、リクエストを解釈した後、受け取ったリクエストをアプリケーション管理部25へ渡す(ステップS113)。アプリケーション管理部25は、リクエスト受信部23からリクエストを受け取ると、対応テーブルを参照し、このリクエストに含まれたURLに対応するWebアプリケーションを探索する(ステップS114)。この場合、URLに対応するWebアプリケーションはワーカー仮想マシン30またはワーカー仮想マシン40上で動作するアプリケーションであるため、マスター仮想マシン20上では見つからない。そのため、アプリケーション管理部25は、リクエスト転送部26に対し、ワーカー仮想マシン30上で動作するワーカーHTTPサーバ31またはワーカーHTTPサーバ41へリクエストを転送するよう依頼する(ステップS115)。
リクエスト転送部26は、アプリケーション管理部25から転送の依頼を受け付けると、ワーカー仮想マシン30又は40が開いた内部ポートのポート番号に対してリクエストを転送する(ステップS116)。この場合もアプリケーション管理部25に登録されたURLが同じであることから、リクエスト転送部26は、予め設定された優先順位等に基づいて2つのワーカー仮想マシン30、40のどちらかへリクエストを転送する。また、後に残りの仮想マシンへリクエストを再送する可能性があるため、リクエスト転送部26は、受け付けたリクエストをリクエスト保存部27に送信することで(ステップS117)、このリクエストをリクエスト保存部27に一時的に保存する。
ステップS116において、ワーカー仮想マシン30の優先順位がワーカー仮想マシン40よりも上位であった場合、リクエスト転送部26は、まず、ワーカー仮想マシン30の内部ポートのポート番号に対してリクエストを転送する。ワーカー仮想マシン30では、ワーカーHTTPサーバ31のリクエスト受信部33がリクエストを受け付けると、リクエスト受信部23と同様に解釈した後(ステップS118)、このリクエストをどのWebアプリケーションに振り分けるかを決定するため、アプリケーション管理部35に引き渡す(ステップS119)。
アプリケーション管理部35は、対応テーブルを参照し、リクエスト受信部33から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS120)。しかしながら、ワーカー仮想マシン30上で動作するWebアプリケーション32a、32bの中には、リクエストされたURLに対応するWebアプリケーションは含まれていない。そこで、アプリケーション管理部35は、Webアプリケーション32aを介し、他のワーカー仮想マシン40にリクエストされたURLに対応するWebアプリケーションが存在するか否かを、RPC(VM間通信)を使用して問い合わせる(ステップS121、S122)。なお、ここではWebアプリケーション32aを介して問い合わせを行う態様としたが、これに限らず、ワーカー仮想マシン30上で動作する他のWebアプリケーション(32b)を介して問い合わせを行う態様としてもよい。
一方、問い合わせを受け付けたワーカー仮想マシン40のWebアプリケーション42a(42b)では、リクエストされたURLに対応するWebアプリケーションが自身に該当するか否かを判定する(ステップS123)。ここで、自己のWebアプリケーションがリクエストされたURLに該当すると判定した場合、該当するWebアプリケーション42aは、当該URLに該当することを指示したレスポンス(TRUE)を、問い合わせを行ったWebアプリケーション32aに通知する(ステップS124)。なお、図8の場合、Webアプリケーション42bはリクエストされたURLに対応しないが、この場合、Webアプリケーション42bからはURLに該当しないことを指示するレスポンス(FALSE)が通知されるものとする。このように、リクエストが転送されたワーカーHTTPサーバのアプリケーション管理部は、他のワーカーHTTPサーバが対応するアプリケーションを有するか否かを調査するアプリケーション調査部として機能する。
Webアプリケーション32aでは、他のワーカー仮想マシン40(Webアプリケーション42a)から、レスポンス(TRUE)を受け取ると(ステップS123)、リクエストされたURLに該当するWebアプリケーションが他のワーカー仮想マシンに存在すること示したレスポンスをアプリケーション管理部35に返す(ステップS125)。アプリケーション管理部35では、Webアプリケーション32aからレスポンスを受け付けると、このレスポンスをレスポンス送信部34に送信する(ステップS126)。レスポンス送信部34は、アプリケーション管理部35から受け付けたレスポンス(TRUE)に応じて、予め設定された特別な値のステータスコード(900 Forward Other)を、マスター仮想マシン20のリクエスト転送部26に送信する(ステップS127)。
リクエスト転送部26は、ワーカー仮想マシン30からステータスコードを受け付けると、このステータスコードが他のワーカー仮想マシンに存在することを示す特別な値、即ち、「900」であるか否かを判定する(ステップS128)。ここで、リクエスト転送部26は、ステータスコードが他のワーカー仮想マシンに存在することを示す特別な値であると判定すると、リクエスト保存部27に保持されたリクエストを読み込み(ステップS129)、次の優先順位のワーカー仮想マシン(ワーカー仮想マシン40)に対し、読み込んだリクエストを転送する(ステップS130)。このように、マスターHTTPサーバ21のリクエスト転送部26は、リクエストを転送したワーカーHTTPサーバから、他のワーカーHTTPサーバが対応するアプリケーションを有しているとのレスポンスを受信した場合にのみ、次の優先順位のワーカーHTTPサーバへリクエストを転送する。
一方、ワーカー仮想マシン40では、リクエスト受信部43がリクエストを受信すると、リクエスト受信部23と同様に当該リクエストを解釈する(ステップS131)。次いで、リクエスト受信部43は、このリクエストをどのWebアプリケーションに振り分けるかを決定するため、アプリケーション管理部45に引き渡す(ステップS132)。アプリケーション管理部45は、対応テーブルを参照し、リクエスト受信部43から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS133)。ここで、Webアプリケーション42aは、リクエストされた“app3.cgi”に対応するため、アプリケーション管理部45は、対応するWebアプリケーションがあると判断し、Webアプリケーション42aへ処理を依頼する(ステップS134)。
Webアプリケーション42aでは、依頼された処理を実行すると(ステップS135)、この処理結果とともに、リクエストに対する処理が成功した旨のステータスコード「200」をレスポンスとしてアプリケーション管理部45へ返す(ステップS136)。アプリケーション管理部45では、Webアプリケーション42aからレスポンスを受け付けると、このレスポンスをレスポンス送信部44へ送信する(ステップS137)。また、レスポンス送信部44は、アプリケーション管理部45からレスポンスを受け付けると、このレスポンスをマスター仮想マシン20のリクエスト転送部26へ送信する(ステップS138)。
一方、マスター仮想マシン20のリクエスト転送部26では、ステップS129で転送したリクエストに対するレスポンスを受け付けると、このレスポンスに含まれるステータスコードが他のワーカー仮想マシンに存在することを示す特別な値、即ち「900」であるか否かを判定する(ステップS139)。ステータスコードが特別な値でない場合(本処理では「200」)、リクエスト転送部26は、受け付けたレスポンスを、アプリケーション管理部25を介してレスポンス送信部24に送信する(ステップS140、S141)。次いで、レスポンス送信部24は、アプリケーション管理部25から受け付けたレスポンスをHTTPクライアント100に送信する(ステップS142)。
なお、リクエストされたWebアプリケーションがいずれの仮想マシンにも存在しないような場合も想定される。そこで、図9を参照して、クライアント装置11のHTTPクライアント100から送信されたリクエスト(GET /url/app4.cgi HTTP/1.1)が、各仮想マシンのいずれのWebアプリケーションにも対応しない場合の処理の流れについて説明する。なお、リクエストで指定される“app4.cgi”は、Webアプリケーション22a〜22c、32a、32b、42a、42bの何れにも対応しないものとする。
クライアント装置11のHTTPクライアント100から、「GET /url/app4.cgi HTTP/1.1」を含んだリクエストが送信されると(ステップS151)、上記と同様に、マスター仮想マシン20のリクエスト受信部23は、そのリクエストを受信し、その内容を解釈する(ステップS152)。そして、リクエスト受信部23は、このリクエストをどのWebアプリケーションに振り分けるかを決定するため、アプリケーション管理部25に引き渡す(ステップS153)。
アプリケーション管理部25は、対応テーブルを参照し、リクエスト受信部23から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS154)。この場合、URLに対応するWebアプリケーションはマスター仮想マシン20上では見つからない。そのため、アプリケーション管理部25は、リクエスト転送部26に対し、ワーカー仮想マシン30上で動作するワーカーHTTPサーバ31またはワーカーHTTPサーバ41へリクエストを転送するよう依頼する(ステップS155)。
リクエスト転送部26は、アプリケーション管理部25から転送の依頼を受け付けると、ワーカー仮想マシン30又は40が開いた内部ポートのポート番号に対してリクエストを転送する(ステップS156)。この場合もアプリケーション管理部25に登録されたURLが同じであることから、リクエスト転送部26は、予め設定された優先順位等に基づいて2つのワーカー仮想マシン30、40のどちらかへリクエストを転送する。また、後に残りの仮想マシンへリクエストを再送する可能性があるため、リクエスト転送部26は、受け付けたリクエストをリクエスト保存部27に送信することで(ステップS157)、このリクエストをリクエスト保存部27に一時的に保存する。
ステップS156において、ワーカー仮想マシン30の優先順位がワーカー仮想マシン40よりも上位であった場合、リクエスト転送部26は、まず、ワーカー仮想マシン30の内部ポートのポート番号に対してリクエストを転送する。ワーカー仮想マシン30では、ワーカーHTTPサーバ31のリクエスト受信部33がリクエストを受け付けると、リクエスト受信部23と同様に解釈した後(ステップS158)、このリクエストをどのWebアプリケーションに振り分けるかを決定するため、アプリケーション管理部35に引き渡す(ステップS159)。
アプリケーション管理部35は、対応テーブルを参照し、リクエスト受信部33から受け付けたリクエストに含まれるURLに対応するWebアプリケーションを探索する(ステップS160)。しかしながら、ワーカー仮想マシン30上で動作するWebアプリケーション32a、32bの中には、リクエストされたURLに対応するWebアプリケーションは含まれていない。そこで、アプリケーション管理部35は、Webアプリケーション32aを介し、他のワーカー仮想マシン40にリクエストされたURLに対応するWebアプリケーションが存在するか否かを、RPC(VM間通信)を使用して問い合わせる(ステップS161、S162)。なお、ここではWebアプリケーション32aを介して問い合わせを行う態様としたが、これに限らず、ワーカー仮想マシン30上で動作する他のWebアプリケーション(32b)を介して問い合わせを行う態様としてもよい。
一方、問い合わせを受け付けたワーカー仮想マシン40のWebアプリケーション42a(42b)では、リクエストされたURLに対応するWebアプリケーションが自身に該当するか否かを判定する(ステップS163)。なお、本処理の場合、リクエストされたURLに該当するWebアプリケーションは存在しないため、Webアプリケーション42a(42b)は、リクエストされたURLに該当しないことを指示するレスポンス(FALSE)を、問い合わせを行ったWebアプリケーション32aに通知する(ステップS164)。
Webアプリケーション32aでは、問い合わせを行ったワーカー仮想マシン40の全てのWebアプリケーション(42a、42b)からレスポンス(FALSE)の通知を受けると、リクエストされたURLに対応するWebアプリケーションが存在しないことを示したレスポンスをアプリケーション管理部35に返す(ステップS165)。アプリケーション管理部35では、Webアプリケーション32aからレスポンスを受け付けると、このレスポンスをレスポンス送信部34に送信する(ステップS166)。レスポンス送信部34は、アプリケーション管理部35から受け付けたレスポンス(FALSE)に応じて、HTTPプロトコルにて存在不明を表すステータスコード「404」を、マスター仮想マシン20のリクエスト転送部26にリクエスト転送部26に送信する(ステップS167)。
リクエスト転送部26は、ワーカー仮想マシン30からステータスコードを受け付けると、このステータスコードが他のワーカー仮想マシンに存在することを示す特別な値、即ち、「900」であるか否かを判定する(ステップS168)。ステータスコードが特別な値でない場合(本処理では「404」)、リクエスト転送部26は、受け付けたレスポンスを、アプリケーション管理部25を介してレスポンス送信部24に送信する(ステップS169、S170)。次いで、レスポンス送信部24は、受け付けたレスポンスをHTTPクライアント100に送信する(ステップS171)。
このように、マスターHTTPサーバ21のリクエスト転送部26は、リクエストを転送したワーカーHTTPサーバから、当該リクエストに対応するアプリケーションを有していないとのレスポンスを受信した場合、次の優先順位のワーカーHTTPサーバへリクエストを転送せず、対応するアプリケーションが存在しない旨のレスポンスをクライアントへ送信する。これにより、他の仮想マシンへ無駄にリクエストを転送することを防止することができ、Webブラウザへの応答を速くすることができる。
以上のように、本実施形態によれば、マスターHTTPサーバ21では、対応テーブルと、HTTPクライアント100から受信したリクエストに含まれるURL(アドレス情報)とに基づいて、このリクエストを処理すべき仮想マシンを判別し、当該仮想マシンへ前記リクエストを転送する。これにより、複数の仮想マシンが動作する環境にその開発したWebアプリケーションを追加しても、HTTPクライアント100から受信したリクエストを適切に各仮想マシン上で動作するアプリケーションに振り分けることができる。
また、クライアント側では、HTTPサーバにアクセスするのみで、複数のワーカーHTTPサーバが提供するWebアプリケーションによるサービスを利用することができる。したがって、クライアントは、複数のHTTPサーバが動作していることを意識することなくサービスを利用することができる。
これまで本発明を上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
したがって、上記の処理をプログラムとして構成し、サーバ装置にそのプログラムを実行させることにより実現することもできる。これは、コンピュータ可読なプログラムとして、そのプログラムを格納したCD−ROMやメモリカード等の記録媒体として提供することもできる。
本発明の情報処理装置の一実施形態としてサーバ装置を含むネットワーク機器の構成例を示した図である。 情報処理装置のモジュール構成を示した図である。 HTTPサーバの構成を示した図である。 マスターHTTPサーバへのWebアプリケーションの登録およびリクエスト処理の流れを示したシーケンス図である。 マスター仮想マシン上に対応するWebアプリケーションが見つからない場合の処理の流れを示したシーケンス図である。 ワーカーHTTPサーバへのWebアプリケーションの登録およびリクエスト処理の流れを示したシーケンス図である。 同一URLのWebアプリケーションを登録する処理およびリクエスト処理の流れを示したシーケンス図である。 第1のワーカー仮想マシン上に対応するWebアプリケーションが見つからず、第2のワーカー仮想マシン上に対応するWebアプリケーションが見つかった場合のリクエスト処理の流れを示したシーケンス図である。 いずれの仮想マシン上にも、対応するWebアプリケーションが存在しない場合のリクエスト処理の流れを示したシーケンス図である。
符号の説明
10 サーバ装置
11 クライアント装置
12 ネットワーク
20、30、40 仮想マシン
21、31、41 HTTPサーバ
22a、22b、22c、32a、32b、42a、42b Webアプリケーション
23、33、43 リクエスト受信部
24、34、44 レスポンス送信部
25、35、45 アプリケーション管理部
26 リクエスト転送部
27 リクエスト保存部
28 仮想マシン制御部

Claims (17)

  1. 複数の仮想マシンが動作する情報処理装置であって、
    各前記仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、前記管理情報とクライアントから受信したリクエストに含まれるアドレス情報とから、前記リクエストを処理するアプリケーションを判別するアプリケーション管理部を含み、
    前記複数の仮想マシンの1つが、さらに、他の前記仮想マシンの前記アプリケーション管理部が保持する前記管理情報と前記他の仮想マシンを識別するための識別情報とをそれぞれ対応付けて保持し、前記他の仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記クライアントから受信した場合に、前記管理情報および前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき前記他の仮想マシンを判別し、前記他の仮想マシンへ前記リクエストを転送するリクエスト転送部を備える情報処理装置。
  2. 前記仮想マシンは、前記仮想マシン上で動作するHTTPサーバと、前記少なくとも1つのアプリケーションとを含み、
    前記HTTPサーバが、前記アプリケーション管理部と、前記リクエストを受信し、前記リクエストから前記アドレス情報を抽出するリクエスト受信部と、前記アプリケーション管理部により判別された前記アプリケーションによる処理結果をレスポンスとして送信するリクエスト送信部とを含み、
    前記複数の仮想マシンの1つに含まれるHTTPサーバが、前記リクエストを転送する前記リクエスト転送部をさらに備えるマスターHTTPサーバとされ、前記他の仮想マシンに含まれるHTTPサーバが、転送された前記リクエストを処理し、処理結果を送信するワーカーHTTPサーバとされる請求項1に記載の情報処理装置。
  3. 前記マスターHTTPサーバは、前記ワーカーHTTPサーバへHTTPを用いて前記リクエストを転送する請求項2に記載の情報処理装置。
  4. 前記マスターHTTPサーバは、前記情報処理装置の外部と通信を行うために外部ポートを使用し、前記ワーカーHTTPサーバは、前記情報処理装置の内部で前記マスターHTTPサーバと通信を行うために内部ポートと、前記情報処理装置自身を識別するループバックアドレスとを使用して、前記リクエストを受信し、前記リクエストに対する処理結果を送信する請求項3に記載の情報処理装置。
  5. 前記ワーカーHTTPサーバは、リモートプロシージャコールを使用して、前記マスターHTTPサーバの前記リクエスト転送部に登録すべきアプリケーションのURLをアドレス情報として取得させ、前記マスターHTTPサーバの前記アプリケーション管理部に前記URLを前記アプリケーションと対応付けて管理情報として保持させる、請求項2〜4のいずれか1項に記載の情報処理装置。
  6. 前記マスターHTTPサーバの前記リクエスト転送部は、複数の前記ワーカーHTTPサーバから同一の前記URLを取得し、前記同一のURLを前記管理情報として保持する請求項5に記載の情報処理装置。
  7. 前記マスターHTTPサーバは、前記クライアントから受信した前記リクエストを保存するリクエスト保存部と、複数の前記ワーカーHTTPサーバへリクエストを転送する優先順位に関する優先度情報を保存する仮想マシン制御部とをさらに含む請求項6に記載の情報処理装置。
  8. 前記マスターHTTPサーバの前記リクエスト転送部は、前記リクエストを転送した前記ワーカーHTTPサーバから、他の前記ワーカーHTTPサーバが対応するアプリケーションを有しているとのレスポンスを受信した場合にのみ、次の優先順位の前記ワーカーHTTPサーバへ前記リクエストを転送し、前記対応するアプリケーションを有していないとのレスポンスを受信した場合には、前記次の優先順位の前記ワーカーHTTPサーバへ前記リクエストを転送せず、前記対応するアプリケーションが存在しない旨のレスポンスを前記クライアントへ送信し、
    前記リクエストが転送された前記ワーカーHTTPサーバは、前記他のワーカーHTTPサーバが前記対応するアプリケーションを有するか否かを調査するアプリケーション調査部を含み、前記アプリケーション調査部が、前記他のワーカーHTTPサーバが前記対応するアプリケーションを有することを検出した場合には、前記対応するアプリケーションが存在する旨のレスポンスを送信し、検出しない場合には、前記対応するアプリケーションが存在しない旨のレスポンスを送信する請求項7に記載の情報処理装置。
  9. 複数の仮想マシンが動作する情報処理装置で実行される情報処理方法であって、
    各前記仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、前記複数の仮想マシンの1つであるマスター仮想マシンが、さらに、他の仮想マシンであるワーカー仮想マシンが保持する前記管理情報と前記ワーカー仮想マシンを識別するための識別情報とをそれぞれ対応付けて保持し、
    前記ワーカー仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記クライアントから受信した場合に、前記マスター仮想マシンが保持する前記管理情報および前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき前記ワーカー仮想マシンを判別し、前記ワーカー仮想マシンへ前記リクエストを転送するステップと、
    前記ワーカー仮想マシンにおいて、当該ワーカー仮想マシンが保持する前記管理情報とクライアントから受信したリクエストに含まれるアドレス情報とから、前記リクエストを処理するアプリケーションを判別するステップと、
    判別された前記アプリケーションを使用して前記リクエストを処理するステップと、
    処理結果を前記マスター仮想マシンへ送信するステップと、
    を含む情報処理方法。
  10. 前記転送するステップでは、前記マスター仮想マシンから前記ワーカー仮想マシンへHTTPを用いて前記リクエストを転送する請求項9に記載の情報処理方法。
  11. 前記ワーカー仮想マシンがリモートプロシージャコールを使用して前記マスター仮想マシンに登録すべきアプリケーションのURLをアドレス情報として取得するステップと、
    前記マスター仮想マシンが前記URLを前記アプリケーションと対応付けて管理情報として保持するステップとを含む請求項9または10に記載の情報処理方法。
  12. 前記マスター仮想マシンが複数の前記ワーカー仮想マシンから同一の前記URLを取得し、前記同一のURLを前記管理情報として保持するステップをさらに含む請求項11に記載の情報処理方法。
  13. 前記転送するステップでは、前記マスター仮想マシンから最も高い優先順位の前記ワーカー仮想マシンへ前記リクエストを転送する請求項12に記載の情報処理方法。
  14. 前記転送するステップでは、前記マスター仮想マシンが前記リクエストを転送した前記ワーカー仮想マシンから他の前記ワーカー仮想マシンが対応するアプリケーションを有しているとのレスポンスを受信した場合にのみ、次の優先順位のワーカー仮想マシンへ前記リクエストを転送する請求項13に記載の情報処理方法。
  15. 前記他のワーカー仮想マシンが前記対応するアプリケーションを有していないとのレスポンスを受信した場合には、前記次の優先順位の前記ワーカー仮想マシンへ前記リクエストを転送せず、前記対応するアプリケーションが存在しない旨のレスポンスを前記クライアントへ送信するステップをさらに含む請求項14に記載の情報処理方法。
  16. 前記他のワーカー仮想マシンが前記対応するアプリケーションを有するか否かを調査するステップと、前記他のワーカー仮想マシンが前記対応するアプリケーションを有することを検出した場合には、前記対応するアプリケーションが存在する旨のレスポンスを送信するステップと、検出しない場合には、前記対応するアプリケーションが存在しない旨のレスポンスを送信するステップとを含む請求項9に記載の情報処理方法。
  17. 複数の仮想マシンが動作する情報処理装置により読み取り可能な、クライアントからのリクエストを処理するためのプログラムであって、
    各前記仮想マシンが、少なくとも1つのアプリケーションをアドレス情報と対応付けて管理情報として保持し、前記複数の仮想マシンの1つであるマスター仮想マシンが、さらに、他の仮想マシンであるワーカー仮想マシンが保持する前記管理情報と前記ワーカー仮想マシンを識別するための識別情報とをそれぞれ対応付けて保持していて、
    前記プログラムが、
    前記ワーカー仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記クライアントから受信した場合に、前記マスター仮想マシンが保持する前記管理情報および前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき前記ワーカー仮想マシンを判別し、前記ワーカー仮想マシンへ前記リクエストを転送するステップと、
    前記ワーカー仮想マシンにおいて、当該ワーカー仮想マシンが保持する前記管理情報とクライアントから受信したリクエストに含まれるアドレス情報とから、前記リクエストを処理するアプリケーションを判別するステップと、
    判別された前記アプリケーションを使用して前記リクエストを処理するステップと、
    処理結果を前記マスター仮想マシンへ送信するステップと、
    を前記情報処理装置に実行させるプログラム。
JP2008168553A 2007-11-26 2008-06-27 情報処理装置、情報処理方法およびプログラム Expired - Fee Related JP4627789B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008168553A JP4627789B2 (ja) 2007-11-26 2008-06-27 情報処理装置、情報処理方法およびプログラム
US12/261,795 US8239862B2 (en) 2007-11-26 2008-10-30 Apparatus, method, and computer program product for processing information

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007303914 2007-11-26
JP2008168553A JP4627789B2 (ja) 2007-11-26 2008-06-27 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2009151744A true JP2009151744A (ja) 2009-07-09
JP4627789B2 JP4627789B2 (ja) 2011-02-09

Family

ID=40920782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008168553A Expired - Fee Related JP4627789B2 (ja) 2007-11-26 2008-06-27 情報処理装置、情報処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4627789B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507741A (ja) * 2011-03-22 2014-03-27 アマゾン テクノロジーズ インコーポレイテッド コンピューティングアプリケーション機能のための強力な権利管理
JP2014085945A (ja) * 2012-10-25 2014-05-12 Canon Inc 画像形成装置、情報処理方法及びプログラム
EP2854040A2 (en) 2013-09-30 2015-04-01 Fujitsu Limited Information processing apparatus, information processing system, and program

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04322359A (ja) * 1991-04-23 1992-11-12 Nec Corp プログラム遠隔実行方式
JPH10334058A (ja) * 1997-05-27 1998-12-18 Shikoku Nippon Denki Software Kk オンラインシステムと負荷分散方式
JP2000057112A (ja) * 1998-08-11 2000-02-25 Fuji Xerox Co Ltd ネットワーク上で遠隔手続き呼び出しを実行するための方法、及び、遠隔手続き呼び出しを実行可能なネットワーク・システム
JP2004192449A (ja) * 2002-12-12 2004-07-08 Toshiba Corp Web型クライアントサーバシステムにおける負荷分散方法、負荷分散システム、および負荷分散プログラム
JP2005092811A (ja) * 2003-09-19 2005-04-07 Ricoh Co Ltd WWWサーバ機能を有する組み込み機器、HTTPリクエスト振り分け方法、HTTPリクエスト振り分けプログラム、および、Webシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04322359A (ja) * 1991-04-23 1992-11-12 Nec Corp プログラム遠隔実行方式
JPH10334058A (ja) * 1997-05-27 1998-12-18 Shikoku Nippon Denki Software Kk オンラインシステムと負荷分散方式
JP2000057112A (ja) * 1998-08-11 2000-02-25 Fuji Xerox Co Ltd ネットワーク上で遠隔手続き呼び出しを実行するための方法、及び、遠隔手続き呼び出しを実行可能なネットワーク・システム
JP2004192449A (ja) * 2002-12-12 2004-07-08 Toshiba Corp Web型クライアントサーバシステムにおける負荷分散方法、負荷分散システム、および負荷分散プログラム
JP2005092811A (ja) * 2003-09-19 2005-04-07 Ricoh Co Ltd WWWサーバ機能を有する組み込み機器、HTTPリクエスト振り分け方法、HTTPリクエスト振り分けプログラム、および、Webシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507741A (ja) * 2011-03-22 2014-03-27 アマゾン テクノロジーズ インコーポレイテッド コンピューティングアプリケーション機能のための強力な権利管理
JP2014085945A (ja) * 2012-10-25 2014-05-12 Canon Inc 画像形成装置、情報処理方法及びプログラム
EP2854040A2 (en) 2013-09-30 2015-04-01 Fujitsu Limited Information processing apparatus, information processing system, and program
JP2015070522A (ja) * 2013-09-30 2015-04-13 富士通株式会社 情報処理装置、情報処理システム、及びプログラム
US9584469B2 (en) 2013-09-30 2017-02-28 Fujitsu Limited Information processing apparatus, information processing system, and computer-readable recording medium having stored program

Also Published As

Publication number Publication date
JP4627789B2 (ja) 2011-02-09

Similar Documents

Publication Publication Date Title
US10657061B1 (en) Resource distribution using attributes of versioned hash rings
EP0817043B1 (en) Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer
US5818448A (en) Apparatus and method for identifying server computer aggregation topologies
JP6092249B2 (ja) 埋込まれたプロセス通信のための仮想チャネル
US10938668B1 (en) Safe deployment using versioned hash rings
US9183066B2 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
JP5123800B2 (ja) 情報処理装置、情報処理方法及びプログラム
US6134603A (en) Method and system for deterministic hashes to identify remote methods
JP4729172B2 (ja) 宣言型パラダイムをサポートするステートレスなウェブ環境におけるトランザクションを実行するための方法および装置
US6466947B2 (en) Apparatus and method for dynamically verifying information in a distributed system
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US6629154B1 (en) Method and system for deterministic hashes to identify remote methods
US20030055862A1 (en) Methods, systems, and articles of manufacture for managing systems using operation objects
US7500251B2 (en) Method and system for managing programs for web service system
JP5970559B2 (ja) 遠隔ネットワーク管理システム及びその操作方法
US8239862B2 (en) Apparatus, method, and computer program product for processing information
US10198279B2 (en) Thread synchronization for platform neutrality
JP4627789B2 (ja) 情報処理装置、情報処理方法およびプログラム
US7089263B2 (en) Apparatus and method for dynamically verifying information in a distributed system
WO1999044134A1 (en) Method and system for facilitating access to a lookup service
JP6205013B1 (ja) アプリケーション利用システム
EP1058880A1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
Cisco Updating the Mainframe Application Software
Cisco Updating the Mainframe Application Software
Cisco Updating the Mainframe Application Software

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101014

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101108

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4627789

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees