(57)【要約】【課題】複数の仮想マシンが起動し且つ各仮想マシン上でＨＴＴＰサーバが動作する構成において、各ＨＴＴＰサーバ使用するポート番号の管理を容易に行うことが可能な情報処理装置、情報処理方法及びプログラムを提供する。【解決手段】各ＨＴＴＰサーバが使用するポート番号を、ＨＴＴＰサーバの識別情報と関連付けてポート管理情報に記憶し、ワーカーＨＴＴＰサーバでは、このポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を内部ポートとして決定する。【選択図】        図３
2010072738.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンの夫々でＨＴＴＰサーバを動作させる情報処理装置であって、
前記複数の仮想マシンで動作するＨＴＴＰサーバのうち、外部のＨＴＴＰクライアントと通信を行う一の仮想マシンで動作するマスターＨＴＴＰサーバは、
前記ＨＴＴＰクライアントとの通信で使用するポート番号の設定入力を受け付けるポート番号設定手段と、
前記ポート番号設定手段が受け付けたポート番号を、自己のマスターＨＴＴＰサーバの識別情報と関連付けるとともに、他の仮想マシンの夫々で動作するワーカーＨＴＴＰサーバが用いるポート番号を、当該ワーカーＨＴＴＰサーバの識別情報と関連付けたポート管理情報を管理するポート管理手段と、
を備え、
前記ワーカーＨＴＴＰサーバは、
前記ポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を、当該他のＨＴＴＰサーバとの通信で使用する内部ポートとして決定し、このポート番号を自己のワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶するよう前記ポート管理手段に指示するポート決定手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記ポート管理手段は、前記ポート決定手段が決定したポート番号が、前記ポート管理情報に記憶されたポート番号と重複するか否かを判定し、重複しないと判定した場合に、前記ポート決定手段が決定したポート番号を、対応するワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ポート管理手段は、前記ポート決定手段が決定したポート番号が、前記ポート管理情報に記憶されたポート番号と重複すると判定した場合に、当該ポート番号が重複した旨を前記ポート決定手段に通知し、
前記ポート決定手段は、前記ポート管理手段からポート番号の重複が通知されると、新たなポート番号を再度決定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ポート決定手段は、前記ポート番号をランダムに決定することを特徴とする請求項１〜３の何れか一項に記載の情報処理装置。
【請求項５】
前記ポート管理手段は、前記ポート番号設定手段がポート番号の設定変更を受け付けると、前記マスターＨＴＴＰサーバの識別情報に関連付けて記憶された前記ポート管理情報のポート番号を変更内容に応じた値に更新し、前記ワーカーＨＴＴＰサーバの識別情報に関連付けられたポート番号を前記ポート管理情報から削除することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記ポート管理手段は、前記ワーカーＨＴＴＰサーバの識別情報に関連付けられたポート番号のうち、前記ポート番号の更新により当該ポート番号に重複したポート番号のみを、前記ポート管理情報から削除することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記ＨＴＴＰサーバの夫々は、前記ポート管理情報に記憶されたポート番号のうち、自己のＨＴＴＰサーバの識別情報に関連付けられたポート番号を開閉するポート開閉手段を更に備えたことを特徴とする請求項１〜６の何れか一項に記載の情報処理装置。
【請求項８】
前記マスターＨＴＴＰサーバは、前記ＨＴＴＰサーバの夫々が備える前記ポート開閉手段の動作を制御するポート開閉管理手段を更に備え、
前記ポート開閉手段は、前記ポート開閉管理手段からの指示に応じてポートの開閉を行うことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記ワーカーＨＴＴＰサーバのポート開閉手段は、前記ポート開閉管理手段からポートの開放が指示される毎に、開放の対象となるポート番号を前記ポート決定手段に問い合わせし、
前記ポート決定手段は、前記ポート開閉手段からポート番号の問い合わせを受ける毎にポート番後を決定し、前記ポート管理情報に記憶された自己のワーカーＨＴＴＰサーバについてのポート番号を前記ポート開閉手段に通知することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記仮想マシンの夫々は、少なくとも１つのアプリケーションを含み、
前記仮想マシンの夫々で動作するＨＴＴＰサーバは、前記アプリケーションをアドレス情報と関連付けた管理情報を管理し、前記ＨＴＴＰクライアントから受信したリクエストに含まれるアドレス情報とから、このリクエストを処理するアプリケーションを特定するアプリケーション管理手段を更に備えたことを特徴とする請求項１〜９の何れか一項に記載の情報処理装置。
【請求項１１】
前記マスターＨＴＴＰサーバは、前記ワーカーＨＴＴＰサーバの前記アプリケーション管理部が保持する前記管理情報を、当該ワーカーＨＴＴＰサーバの識別情報と夫々対応付けて保持し、当該ワーカー仮想マシン上で動作するアプリケーションのアドレス情報を含むリクエストを前記ＨＴＴＰクライアントから受信した場合に、前記管理情報及び前記識別情報と、受信した前記リクエストに含まれるアドレス情報とから、前記リクエストを受信すべき仮想マシンを特定し、この特定した仮想マシンへ前記リクエストを転送するリクエスト転送手段を更に備えたことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記リクエスト転送手段は、前記特定した仮想マシンで動作するワーカーＨＴＴＰサーバのポート番号を前記ポート管理情報から特定し、このポート番号宛に前記リクエストを転送することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記リクエスト転送手段は、ＨＴＴＰを用いて前記リクエストを転送することを特徴とする請求項１１又は１２に記載の情報処理装置。
【請求項１４】
前記マスターＨＴＴＰサーバは、
前記ポート管理情報に記憶された各ポート番号を、当該ポート番号で提供するサービス名と関連付けたサービス管理情報を管理するサービス管理手段と、
前記リクエストを受信したポート番号に対応するサービス名を前記サービス管理情報から特定し、このサービス名に対応するサービス識別子を前記リクエストに付加するサービス識別子付加手段と、
を更に備え、
前記アプリケーションは、前記リクエストに付加されたサービス識別子に応じた処理を実行することを特徴とする請求項１０〜１３の何れか一項に記載の情報処理装置。
【請求項１５】
複数の仮想マシンの夫々でＨＴＴＰサーバを動作させる情報処理装置での情報処理方法であって、
前記複数の仮想マシンで動作するＨＴＴＰサーバのうち、外部のＨＴＴＰクライアントと通信を行う一の仮想マシンで動作するマスターＨＴＴＰサーバは、
ポート番号設定手段が、前記ＨＴＴＰクライアントとの通信で使用するポート番号の設定入力を受け付けるポート番号設定工程と、
ポート管理手段が、前記ポート番号設定手段が受け付けたポート番号を、自己のマスターＨＴＴＰサーバの識別情報と関連付けるとともに、他の仮想マシンの夫々で動作するワーカーＨＴＴＰサーバが用いるポート番号を、当該ワーカーＨＴＴＰサーバの識別情報と関連付けたポート管理情報を管理するポート管理工程と、
を含み、
前記ワーカーＨＴＴＰサーバは、
ポート決定手段が、前記ポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を、当該他のＨＴＴＰサーバとの通信で使用する内部ポートとして決定するポート決定工程を含み、
前記ポート管理工程では、前記ポート決定工程で決定されたポート番号を、このポート決定工程が実行されたワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶することを特徴とする情報処理方法。
【請求項１６】
複数の仮想マシンの夫々でＨＴＴＰサーバを動作させるコンピュータが読み取り可能なプログラムであって、
前記コンピュータに、
前記複数の仮想マシンで動作するＨＴＴＰサーバのうち、外部のＨＴＴＰクライアントと通信を行う一の仮想マシンで動作するマスターＨＴＴＰサーバを、
前記ＨＴＴＰクライアントとの通信で使用するポート番号の設定入力を受け付けるポート番号設定手段と、
前記ポート番号設定手段が受け付けたポート番号を、自己のマスターＨＴＴＰサーバの識別情報と関連付けるとともに、他の仮想マシンの夫々で動作するワーカーＨＴＴＰサーバが用いるポート番号を、当該ワーカーＨＴＴＰサーバの識別情報と関連付けたポート管理情報を管理するポート管理手段と、
して機能させるとともに、
前記ワーカーＨＴＴＰサーバを、
前記ポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を、当該他のＨＴＴＰサーバとの通信で使用する内部ポートとして決定し、このポート番号を自己のワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶するよう前記ポート管理手段に指示するポート決定手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンが動作する環境において、単一の仮想マシンが動作する環境と同様にしてアプリケーション開発を行うことができる情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
顧客ごとに最適なオフィス環境を提供するために、アプリケーションの追加により顧客ごとにカスタマイズ可能なシステムが検討されている。追加されるアプリケーションには、第３ベンダが開発するものも含まれるが、この追加により、システムの基本機能が損なわれるものであってはならない。ここで、第３ベンダとは、ハードウェアやオペレーティングシステム（以下、ＯＳという）等、既存の環境に組み込むことで、新しい機能を提供するハードウェアまたはソフトウェア等を提供するベンダをいう。
【０００３】
ＵＮＩＸ（登録商標）等のプロセスベースのＯＳでシステムを構築する場合、システムの堅牢性を向上させるために適切な粒度でプロセスを分割するのが一般的である。しかし、開発言語としてＪａｖａ（登録商標）を用いる場合、単一の仮想マシン（ＪＶＭ）上で複数のアプリケーションを動作させることになる。この場合、細かい粒度でプロセスを分割するのは現実的ではないが、少なくとも基本性能を実現するアプリケーションと第３ベンダのアプリケーションが動作する仮想マシンとを分離することで、システムの堅牢性を向上させることができる。ここで、堅牢性とは、プログラムにおいて、エラーや例外等に強く、簡単には暴走しないことをいう。
【０００４】
Ｗｅｂベースでアプリケーションの実行環境を構築する場合、クライアントからの処理要求（リクエスト）を受け付けるポート番号を外部ポートとして設定する必要がある。この点について、従来、複数のポート（外部ポート）から入ってくるリクエストをプロトコルデーモンが受け付け、当該リクエストに含まれるアプリケーションを特定する情報に基づいてアプリケーションに処理のディスパッチを行うネットサービス機能を有する情報処理装置が提案されている（例えば、特許文献１参照）。
【０００５】
【特許文献１】特開２００５−０９２４５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、仮想マシンが動作する環境でアプリケーション開発を行う場合、単一のＨＴＴＰサーバですべてのＷｅｂアプリケーションを管理しようとすると、ＨＴＴＰサーバとＷｅｂアプリケーションとの間にプロセス間通信が必要となる。この構成の場合、新たなＷｅｂアプリケーションを追加しようとすると、このＷｅｂアプリケーション自体にプロセス間通信の処理を組み込む必要があるため、アプリケーション開発に大きな負担がかかるという問題がある。
【０００７】
そのため、複数の仮想マシン上にＨＴＴＰサーバを夫々設け、クライアントからのリクエストを受け付ける単一のＨＴＴＰサーバから、このリクエストに応じたＷｅｂアプリケーションを管理する他のＨＴＴＰサーバにリクエストを転送するよう構成することが提案されている。このように、仮想マシン毎に独立してＷｅｂアプリケーションを管理することで、リクエストの転送により各アプリケーションで処理を行うことができるため、プロセス間通信に係るアプリケーション開発の負担を軽減することができる。
【０００８】
しかしながら、上記のように、複数の仮想マシンが起動し且つ各仮想マシン上でＨＴＴＰサーバが動作する構成とした場合、ＨＴＴＰサーバ間の通信は、上記した外部ポートとは異なるポート番号（内部ポート）で行う必要がある。ユーザが手動により内部ポートを設定することも考えられるが、仮想マシンが多数存在する場合や外部ポートを変更したような場合に、ポート番号の管理が繁雑であるという問題がある。なお、特許文献１の技術では、外部ポートの管理を主とした技術であるため、外部ポートと内部ポートとの関係については何等考慮されておらず、上記問題を解決することはできない。
【０００９】
本発明は、上記に鑑みてなされたものであって、複数の仮想マシンが起動し且つ各仮想マシン上でＨＴＴＰサーバが動作する構成において、各ＨＴＴＰサーバ使用するポート番号の管理を容易に行うことが可能な情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、複数の仮想マシンの夫々でＨＴＴＰサーバを動作させる情報処理装置であって、前記複数の仮想マシンで動作するＨＴＴＰサーバのうち、外部のＨＴＴＰクライアントと通信を行う一の仮想マシンで動作するマスターＨＴＴＰサーバは、前記ＨＴＴＰクライアントとの通信で使用するポート番号の設定入力を受け付けるポート番号設定手段と、前記ポート番号設定手段が受け付けたポート番号を、自己のマスターＨＴＴＰサーバの識別情報と関連付けるとともに、他の仮想マシンの夫々で動作するワーカーＨＴＴＰサーバが用いるポート番号を、当該ワーカーＨＴＴＰサーバの識別情報と関連付けたポート管理情報を管理するポート管理手段と、を備え、前記ワーカーＨＴＴＰサーバは、前記ポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を、当該他のＨＴＴＰサーバとの通信で使用する内部ポートとして決定し、このポート番号を自己のワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶するよう前記ポート管理手段に指示するポート決定手段と、を備える。
【００１１】
また、本発明は、複数の仮想マシンの夫々でＨＴＴＰサーバを動作させる情報処理装置での情報処理方法であって、前記複数の仮想マシンで動作するＨＴＴＰサーバのうち、外部のＨＴＴＰクライアントと通信を行う一の仮想マシンで動作するマスターＨＴＴＰサーバは、ポート番号設定手段が、前記ＨＴＴＰクライアントとの通信で使用するポート番号の設定入力を受け付けるポート番号設定工程と、ポート管理手段が、前記ポート番号設定手段が受け付けたポート番号を、自己のマスターＨＴＴＰサーバの識別情報と関連付けるとともに、他の仮想マシンの夫々で動作するワーカーＨＴＴＰサーバが用いるポート番号を、当該ワーカーＨＴＴＰサーバの識別情報と関連付けたポート管理情報を管理するポート管理工程と、を含み、前記ワーカーＨＴＴＰサーバは、ポート決定手段が、前記ポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を、当該他のＨＴＴＰサーバとの通信で使用する内部ポートとして決定するポート決定工程を含み、前記ポート管理工程では、前記ポート決定工程で決定されたポート番号を、このポート決定工程が実行されたワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶する。
【００１２】
また、本発明は、複数の仮想マシンの夫々でＨＴＴＰサーバを動作させるコンピュータが読み取り可能なプログラムであって、前記コンピュータに、前記複数の仮想マシンで動作するＨＴＴＰサーバのうち、外部のＨＴＴＰクライアントと通信を行う一の仮想マシンで動作するマスターＨＴＴＰサーバを、前記ＨＴＴＰクライアントとの通信で使用するポート番号の設定入力を受け付けるポート番号設定手段と、前記ポート番号設定手段が受け付けたポート番号を、自己のマスターＨＴＴＰサーバの識別情報と関連付けるとともに、他の仮想マシンの夫々で動作するワーカーＨＴＴＰサーバが用いるポート番号を、当該ワーカーＨＴＴＰサーバの識別情報と関連付けたポート管理情報を管理するポート管理手段と、して機能させるとともに、前記ワーカーＨＴＴＰサーバを、前記ポート管理情報に記憶されたポート番号に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を、当該他のＨＴＴＰサーバとの通信で使用する内部ポートとして決定し、このポート番号を自己のワーカーＨＴＴＰサーバの識別情報と関連付けて前記ポート管理情報に記憶するよう前記ポート管理手段に指示するポート決定手段として機能させる。
【発明の効果】
【００１３】
本発明によれば、ワーカーＨＴＴＰサーバでは、マスターＨＴＴＰサーバが管理するポート管理情報に基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を内部ポートとして決定することができる。これにより、マスターＨＴＴＰサーバが使用するポート番号を設定するだけで、他のワーカーＨＴＴＰサーバの各々が使用するポート番号を重複することなく自動的に決定することができるため、ポート番号の管理を容易化することができる。
【発明を実施するための最良の形態】
【００１４】
以下、添付図面を参照して、本発明にかかる情報処理装置、情報処理方法及びプログラムの最良な実施形態を詳細に説明する。
【００１５】
図１は、本実施形態にかかるサーバ装置（情報処理装置）を含んだネットワーク機器構成の一例を示した図である。図１では、サーバ装置１０と、クライアント装置１１とがネットワークＮに接続され、互いに通信可能とされている。
【００１６】
サーバ装置１０は、ソフトウェアとしてＷｅｂサーバを実装し、クライアント装置１１は、Ｗｅｂサーバと通信するためのソフトウェアとしてＷｅｂブラウザを実装している。Ｗｅｂサーバは、Ｗｅｂブラウザから出されるリクエストを、インターネット等のネットワークＮを介して受信すると、Ｗｅｂアプリケーションにより処理し、その処理結果をＷｅｂブラウザへと送信する。
【００１７】
Ｗｅｂブラウザが、ユーザにより指定されたＵＲＬに対応する情報を取得する場合、Ｗｅｂブラウザは、そのＵＲＬに含まれたドメインに対応するＷｅｂサーバに対し、リクエストとしてそのＵＲＬを送る。Ｗｅｂサーバは、そのＵＲＬを受け取り、ＵＲＬに含まれるパス名、すなわちファイル名あるいはディレクトリ名から、Ｗｅｂページを表示させるためのファイルを読み出し、そのファイルを処理結果として返す。
【００１８】
ＷｅｂブラウザとＷｅｂサーバとの間の通信は、ＨＴＴＰ等の通信プロトコルを使用して行われる。このＨＴＴＰを用いて通信を行うＷｅｂブラウザは、ＨＴＴＰクライアントと呼ばれ、Ｗｅｂサーバは、ＨＴＴＰサーバと呼ばれる。以下では、ＷｅｂブラウザをＨＴＴＰクライアント、ＷｅｂサーバをＨＴＴＰサーバと表記する。ＨＴＴＰサーバは、ＨＴＴＰクライアントからのリクエストを受信するために、互いを接続する接続口となる外部ポートを開く。この外部ポートは、一般にポート番号８０で、１つのみである。このため、ＨＴＴＰサーバとＨＴＴＰクライアントとの間の通信は、この１つの外部ポートのみを介して行われる。
【００１９】
このサーバ装置１０及びクライアント装置１１は、後述するようにＨＴＴＰサーバ及びＨＴＴＰクライアントを動作させるためのＣＰＵ（ＣＰＵ１０１）、ＣＰＵが実行するためのプログラムを格納するメモリ（ＲＯＭ１０２、記憶部１０４）、通信を行うためのネットワークボードやネットワークカードといった通信インタフェース（通信部１０７）を備えるＰＣや画像形成装置等の情報処理装置とすることができる。なお、図１では、ネットワークＮに一台のクライアント装置１１のみを接続した構成を示しているが、複数台のクライアント装置１１をネットワークＮに接続する構成としてもよい。
【００２０】
次に、図２を参照し、図１に示したサーバ装置１０に実装されるモジュールの構成を詳細に説明する。サーバ装置１０は、複数の仮想マシンを備えることができるが、図２では、３つの仮想マシンのみを示している。ここで、仮想マシンとは、コンピュータのＣＰＵやメモリ等のリソースを、物理的構成によらず柔軟に分割や統合して仮想化した上で、その仮想化したコンピュータを実行するソフトウェアである。また、仮想マシンは、Ｊａｖａ（登録商標）をプログラミング言語とするＪａｖａ（登録商標）仮想マシンとすることができる。なお、このＪａｖａ（登録商標）仮想マシンは、各ＯＳに実行ファイルとして存在し、実行後、クラスファイルを読み込み、クラス内のメソッドを呼び出し実行する。
【００２１】
サーバ装置１０は、３つの仮想マシンを同時に起動させることができ、このため、同時に異なる３つのＯＳを実行し、それらＯＳ上でそれぞれ、アプリケーションを動作させることができる。図２では、３つの仮想マシン２０、３０、４０がそれぞれ１つのＨＴＴＰサーバ２１、３１、４１を含み、仮想マシン２０が３つのＷｅｂアプリケーション２２ａ〜２２ｃ、仮想マシン３０が２つのＷｅｂアプリケーション３２ａ、３２ｂ、仮想マシン４０が２つのＷｅｂアプリケーション４２ａ、４２ｂを備えている。各仮想マシン上では、各ＨＴＴＰサーバ及び各Ｗｅｂアプリケーションを動作させることができる。なお、ＨＴＴＰサーバ２１、３１、４１は、同一のモジュールである。一方、Ｗｅｂアプリケーション２２ａ〜２２ｃ、３２ａ、３２ｂ、４２ａ、４２ｂは、互いに異なるモジュールである。
【００２２】
３つの仮想マシン２０、３０、４０は、１つのマスター仮想マシン２０と、それ以外のワーカー仮想マシン３０、４０とに分類される。マスター仮想マシン２０は、サーバ装置１０の外部から外部ポート（例えば、ポート番号８０）を使用してリクエストを受信し、そのリクエストに含まれるＵＲＬ等のアドレス情報がワーカー仮想マシン３０のＷｅｂアプリケーション３２ａ、３２ｂ又はワーカー仮想マシン４０のＷｅｂアプリケーション４１ａ、４１ｂを指し示すものである場合、そのリクエストの処理を該当する仮想マシンに振り分ける。
【００２３】
ワーカー仮想マシン３０、４０は、マスター仮想マシン２０から、外部ポートとは異なるサーバ装置１０の内部でのみ用いられるポート番号の内部ポートを使用してリクエストを受け取り、このリクエストに含まれたＵＲＬが指し示すＷｅｂアプリケーションにより処理を実行し、この処理結果をレスポンスとしてマスター仮想マシン２０へ返す。その後、マスター仮想マシン２０は、リクエストの送信元であるクライアント装置１１へ外部ポートを使用してその処理結果を送信する。なお、ワーカー仮想マシン３０、４０の内部ポートは、マスター仮想マシン２０との協働により、他のポート番号と重複しないよう夫々決定される。なお、ポート番号決定の詳細な動作については後述する。
【００２４】
Ｊａｖａ（登録商標）では、サーブレットやＪＳＰ（登録商標）という形でＷｅｂアプリケーションを作り、このＷｅｂアプリケーションを、上記でいうＨＴＴＰサーバに対応するアプリケーションサーバを用いて実行する。ここで、サーブレットとは、サーバで実行するためのＪａｖａ（登録商標）プログラムであって、ＪＳＰ（登録商標）とは、ＨＴＭＬにＪａｖａ（登録商標）プログラムを埋め込んだファイルを意味する。アプリケーションサーバとしては、公知・公用の技術を用いることが可能であり、例えば、Ｔｏｍｃａｔ（登録商標）を用いることとしてもよい。また、Ｗｅｂアプリケーション用フレームワークとして、例えば、Ｓｔｒｕｔｓ（登録商標）を用いることとしてもよい。フレームワークは、プログラムの枠組みを提供するライブラリであり、アプリケーションに必要なデータの入出力やエラー処理、画面遷移等の基本的なしくみを提供するものである。Ｊａｖａ（登録商標）アプリケーションを開発する基本ツールとしては、例えば、Ｊ２ＳＥを用いることができ、このようなツールを用いることでＷｅｂアプリケーションを作成することができる。なお、作成されたＷｅｂアプリケーションは、各ＨＴＴＰサーバが管理するデータベースに格納される。
【００２５】
Ｗｅｂアプリケーションを使用しての具体的な処理内容を説明すると、まず、Ｊａｖａ（登録商標）仮想マシンであるＪ２ＳＥ上で、アプリケーションサーバであるＴｏｍｃａｔ（登録商標）を動作（稼動）させる。次いで、アプリケーションサーバは、Ｗｅｂアプリケーションを構成するサーブレット及びＪＳＰ（登録商標）を実行してリクエストを処理し、この処理結果をクライアント装置１１のＨＴＴＰクライアントに送信する。したがって、このＪ２ＳＥを仮想マシンとして、Ｔｏｍｃａｔ（登録商標）をＨＴＴＰサーバとして利用することができる。
【００２６】
このように、各仮想マシン上にＨＴＴＰサーバが存在するため、仮想マシンごとに独立して、Ｗｅｂアプリケーションの開発を行うことができる。また、複数の仮想マシンが動作する環境であっても、単一の仮想マシンが動作する環境と同様に、プロセス間通信の処理を加えることなく、簡単にＷｅｂアプリケーションの開発を行うことができ、これにより、Ｗｅｂアプリケーションの開発時の負荷が軽減し、Ｗｅｂアプリケーション開発効率を向上させることができる。
【００２７】
図３は、ＨＴＴＰサーバの機能的構成を示した図であって、ＨＴＴＰサーバ２１とＨＴＴＰサーバ３１との機能部間の関係を表している。なお、ワーカー仮想マシン４０のＨＴＴＰサーバ４１についても、ＨＴＴＰサーバ３１と同様の構成を備えるものとする。
【００２８】
ここで、マスター仮想マシン２０上で動作するＨＴＴＰサーバ２１は、マスターＨＴＴＰサーバであり、ワーカー仮想マシン３０、４０上で動作するＨＴＴＰサーバ３１、４１は、ワーカーＨＴＴＰサーバである。これらのＨＴＴＰサーバ２１、３１、４１は、同一のモジュールであるが、それら自身が存在する仮想マシンがマスターであるか、ワーカーであるかにより、マスターＨＴＴＰサーバあるいはワーカーＨＴＴＰサーバの何れかとして振る舞う。例えば、マスター仮想マシン２０は、基本機能を実現するためのＷｅｂアプリケーションを実装する仮想マシンとし、ワーカー仮想マシン３０、４０は、サーバ装置１０の管理者が機能を追加するために作成したＷｅｂアプリケーションを実装する仮想マシンや、第３ベンダが作成したＷｅｂアプリケーションを実装する仮想マシンとすることができる。
【００２９】
ＨＴＴＰサーバ２１及びＨＴＴＰサーバ３１、４１は、自身がマスターであるか、ワーカーであるかを認識している。しかしながら、マスター仮想マシン２０及びワーカー仮想マシン３０、４０上で動作するＷｅｂアプリケーション２２ａ〜２２ｃ、３２ａ、３２ｂ、４２ａ、４２ｂは何れも、自身がマスターであるか、ワーカーであるかを知らない。これらは、自身がマスターか、ワーカーかを知っているＨＴＴＰサーバ２１、３１、４１により管理される。このため、Ｗｅｂアプリケーションをマスターであるか、ワーカーであるかを区別することなく開発することができる。
【００３０】
図３に示したように、ＨＴＴＰサーバ２１は、ポート番号設定部２１１と、ポート管理部２１２と、ポート開閉管理部２１３と、ポート開閉部２１４と、サービス管理部２１５と、リクエスト受信部２１６と、サービス識別子付加部２１７と、アプリケーション管理部２１８と、リクエスト転送部２１９と、リクエスト保持部２２０と、仮想マシン制御部２２１と、レスポンス送信部２２２とを備えている。
【００３１】
ポート番号設定部２１１は、後述する入力デバイス１０６等を介してユーザから入力される外部ポートの設定要求や、外部ポートの設定変更要求を受け付け、入力されたポート番号をポート管理部２１２に出力する。なお、外部ポートとして設定されるポート番号は一に限らず、複数であってもよい。
【００３２】
ポート管理部２１２は、ポート番号設定部２１１から入力されるポート番号を受け付け、このポート番号をマスター仮想マシン２０のＨＴＴＰサーバ２１を表す識別情報と関連付け、後述する記憶部１０４に格納されたポート管理テーブルに記憶する。
【００３３】
また、ポート管理部２１２は、ＨＴＴＰサーバ２１について新たなポート番号をポート管理テーブルに記憶すると、このポート番号をサービス管理部２１５に通知するとともに、ポート開閉管理部２１３にポートの閉鎖を指示する。
【００３４】
また、ポート管理部２１２は、ワーカーＨＴＴＰサーバ（ＨＴＴＰサーバ３１）のポート番号決定部３１２から入力されるポート番号の登録可否の問い合わせに応じて、この問い合わせで登録対象とされたポート番号が、ポート管理テーブルに記憶された既存のポート番号と重複するか否かを判定し、重複した場合にはポート番号決定部３１２にその旨を通知する。なお、重複しない場合には、登録対象のポート番号と、問い合わせを行ったＨＴＴＰサーバ３１の識別情報との組みをポート管理テーブルに関連付けて記憶するとともに、登録した旨をポート番号決定部３１２に通知する。
【００３５】
また、ポート管理部２１２は、ポート管理テーブルを更新する毎に、その更新内容をサービス管理部２１５に通知する。具体的に、ポート管理部２１２は、新たなポート番号をポート管理テーブルに記憶した場合、このポート番号についてのサービス名の登録をサービス管理部２１５に依頼する。このとき、ポート管理部２１２は、ポート管理テーブルに記憶した新たなポート番号について、ポート番号決定部３１２から特定の外部ポートに対応付けるよう指示された場合、この新たなポート番号を、指示された外部ポート（ポート番号）のサービス名と関連付けて記憶するようサービス管理部２１５に依頼する。
【００３６】
図４は、ポート管理部２１２が管理するポート管理テーブルの一例を模式的に示した図である。同図に示したように、ＨＴＴＰサーバ２１に対応する識別情報“ＨＴＴＰサーバ１”には、“８０”と、“４４３”と、“６３１”との３つのポート番号が関連付けてられている。また、ＨＴＴＰサーバ３１に対応する識別情報“ＨＴＴＰサーバ２”には、“１００８０”と、“１０４４３”と、“１０６３１”との３つのポート番号が関連付けられており、ＨＴＴＰサーバ４１に対応する識別情報“ＨＴＴＰサーバ３”には、“２００８０”と、“２０４４３”と、“２０６３１”との３つのポート番号が関連付けられている。このように、ポート管理部２１２は、各仮想マシンにおいてＨＴＴＰサーバが使用するポート番号の一覧を管理する。
【００３７】
なお、図４において、“１００８０”及び“２００８０”は、ＨＴＴＰサーバ２１の“８０”に対応するＨＴＴＰサーバ３１、ＨＴＴＰサーバ４１各々での内部ポートであり、“１０４４３”及び“２０４４３”は、ＨＴＴＰサーバ２１の“４４３”に対応するＨＴＴＰサーバ３１、ＨＴＴＰサーバ４１各々での内部ポートであり、“１０６３１”及び“２０６３１”は、ＨＴＴＰサーバ２１の“６３１”に対応するＨＴＴＰサーバ３１、ＨＴＴＰサーバ４１各々での内部ポートとなっている。
【００３８】
図３に戻り、ポート開閉管理部２１３は、ポート管理部２１２からの指示に応じてポート開閉部２１４によるポートの開閉を制御するとともに、各ワーカーＨＴＴＰサーバでのポート開閉部（ポート開閉部３１１）によるポートの開閉を制御する。
【００３９】
ポート開閉部２１４は、ポート開閉管理部２１３の制御の下、ＨＴＴＰサーバ２１が用いる外部ポートを開閉する。ここで、外部ポートとは、サーバ装置１０外部の装置であるクライアント装置１１とネットワークＮを介して通信を行うためのポート番号である。なお、ポート開閉部２１４は、ポート開閉管理部２１３からポートを開状態とすることが指示されると、ポート管理部２１２が管理するポート管理テーブルからＨＴＴＰサーバ２１の識別情報に関連付けられたポート番号を読み出し、このポート番号を外部ポートとして開放する。これにより、サーバ装置１０の外部、例えばクライアント装置１１から、この外部向けのポートに対してアクセスすることが可能となる。
【００４０】
サービス管理部２１５は、ポート管理部２１２から通知されるポート番号を、このポート番号に対応するサービスのサービス名と関連付け、後述する記憶部１０４に格納されたサービス管理テーブルに記憶する。
【００４１】
具体的に、サービス管理部２１５は、ポート管理部２１２からのポート番号登録の依頼に応じて、通知されたポート番号と当該ポート番号で提供するサービスを表すサービス名とを関連付けてサービス管理テーブルに記憶する。なお、サービス管理部２１５は、ポート管理部２１２から、サービス管理テーブルへの登録対象となるポート番号について、特定のポート番号と関連付けるよう依頼された場合には、この特定のポート番号に関連付けられたサービス名と関連付けて記憶するものとする。
【００４２】
図５は、サービス管理部２１５が管理する、サービス管理テーブルの一例を模式的に示した図である。なお、図５は、図４に示したポート管理テーブルに対応するものとなっている。
【００４３】
図５に示したように、ポート番号“８０”、“１００８０”及び“２００８０”は、サービス名“ＨＴＴＰ”に関連付けて管理されている。また、ポート番号“４４３”、“１０４４３”及び“２０４４３”は、サービス名“ＨＴＴＰＳ”に関連付けて管理されており、ポート番号“６３１”、“１０６３１”及び“２０６３１”は、サービス名“ＩＰＰ”に関連付けて管理されている。このように、サービス管理部２１５は、各仮想マシンにおいてＨＴＴＰサーバが使用するポート番号と、そのポート番号で提供するサービス名との一覧を管理する。
【００４４】
図３に戻り、リクエスト受信部２１６は、自己のＨＴＴＰサーバが開くポート番号（外部ポート）を介してクライアント装置１１からリクエスト（ＨＴＴＰリクエスト）を受け付け、このリクエストをアプリケーション管理部２１８に出力する。
【００４５】
サービス識別子付加部２１７は、リクエスト受信部２１６が受け付けたリクエストのポート番号を抽出し、このポート番号に対応するサービス名をサービス管理部２１５のサービス管理テーブルから特定すると、このサービス名をサービス識別子としてリクエストに付加する。つまり、アプリケーション管理部２１８には、サービス識別子が付加されたリクエストが入力されることになる。
【００４６】
例えば、リクエスト受信部２１６がポート番号“８０”でリクエストを受け付けたとすると、サービス管理部２１５は、図５に示したサービス管理テーブルから、サービス名“ＨＴＴＰ”を特定し、このサービス名に対応したサービス識別子“Ｐｏｒｔ−ｉｄ：ＨＴＴＰ”等を、リクエストのヘッダ領域に独自のヘッダフィールドとして付加する。
【００４７】
アプリケーション管理部２１８は、自己の仮想マシン（マスター仮想マシン２０）及びワーカー仮想マシン（ワーカー仮想マシン３０、４０）が備える複数のＷｅｂアプリケーションを、各Ｗｅｂアプリケーションが提供されるＵＲＬと、当該Ｗｅｂアプリケーションが提供するサービス名、当該Ｗｅｂアプリケーションにリクエストを転送する際の窓口となるワーカーＨＴＴＰサーバの識別情報とを関連付け、後述する記憶部１０４に保持（管理）する。以下、各Ｗｅｂアプリケーションについて、そのＵＲＬと、サービス名と、ワーカーＨＴＴＰサーバの識別情報とを関連付けた情報を対応テーブルという。なお、Ｗｅｂアプリケーションのアプリケーション管理部２１８への登録に関しては後述する。
【００４８】
また、アプリケーション管理部２１８は、リクエスト受信部２１６から入力されるリクエストを受け付けると、このリクエストに含まれたＵＲＬに対応するＷｅｂアプリケーションを対応テーブルから探索する。ここで、該当するＷｅｂアプリケーションがマスター仮想マシン２０に存在する場合には、Ｗｅｂアプリケーションにリクエストに応じた処理を依頼する。また、該当するＷｅｂアプリケーションがワーカー仮想マシン３０又は４０に存在する場合には、入力されたリクエストの転送をリクエスト転送部２１９に依頼する。
【００４９】
また、アプリケーション管理部２１８は、マスター仮想マシン２０が管理するＷｅｂアプリケーションや、リクエスト転送部２１９から受け付けたＷｅｂアプリケーションでの処理結果をレスポンス送信部２２２に出力する。
【００５０】
リクエスト転送部２１９は、アプリケーション管理部２１８の制御の下、転送が指示されたＷｅｂアプリケーションが存在するワーカーＨＴＴＰサーバ（ワーカー仮想マシン）宛に、リクエストを転送する。
【００５１】
ここで、リクエスト転送部２１９は、アプリケーション管理部２１８からリクエストの転送依頼を受け付けると、このリクエストに含まれるサービス識別子（サービス名）と、このリクエストに含まれるＵＲＬに関連付けて対応テーブルに記憶されたワーカーＨＴＴＰサーバの識別情報とに基づいて、これらの情報に関連付けられたワーカーＨＴＴＰサーバのポート番号（内部ポート）をポート管理テーブル及びサービス管理テーブルから特定する。そして、リクエスト転送部２１９は、この特定したワーカーＨＴＴＰサーバの内部ポートに向けてリクエストを転送する。
【００５２】
なお、転送先となるワーカー仮想マシンが複数存在するような場合、リクエスト転送部２１９は、仮想マシン制御部２２１が保持する各ワーカー仮想マシンの優先順位に基づいて、一のワーカー仮想マシン宛にリクエストの転送を行うものとする。
【００５３】
また、リクエスト転送部２１９は、各ワーカーＨＴＴＰサーバが備えるレスポンス送信部（レスポンス送信部３１７）から、Ｗｅｂアプリケーションでの処理結果を受け付けると、この処理結果をアプリケーション管理部２１８に出力する。
【００５４】
リクエスト保持部２２０は、転送対象となったリクエストを後述するＲＡＭ１０３等に一時的に保存し、リクエスト転送部２１９からの要求に応じて取り出す。なお、リクエスト保持部２２０は、リクエストの再送時等に用いることができる。
【００５５】
仮想マシン制御部２２１は、自己のＨＴＴＰサーバが動作する仮想マシンがマスター仮想マシンか、ワーカー仮想マシンかを識別するための情報や、各仮想マシンの優先順位を定義した優先度情報等を保持する。
【００５６】
レスポンス送信部２２２は、アプリケーション管理部２１８から受け付けたＷｅｂアプリケーションでの処理結果をリクエストに対応するレスポンスとして、当該リクエストを送信したクライアント装置１１のＷｅｂクライアント宛に送信する。
【００５７】
次に、ワーカー仮想マシンのＨＴＴＰサーバの機能的構成について説明する。図３に示したように、ワーカー仮想マシン３０のＨＴＴＰサーバ３１は、ポート開閉部３１１と、ポート番号決定部３１２と、リクエスト受信部３１３と、アプリケーション管理部３１４と、リクエスト保持部３１５と、仮想マシン制御部３１６と、レスポンス送信部３１７とを備えている。
【００５８】
ポート開閉部３１１は、ポート開閉管理部２１３の制御の下、自己のＨＴＴＰサーバ（ＨＴＴＰサーバ３１）が用いる内部ポートを開閉する。ここで、内部ポートは、ＨＴＴＰサーバ２１とＨＴＴＰサーバ３１、４１との間の通信を可能にするためのポート番号であって、内部送信・受信機能であるループバックを使用してアクセスすることができる。内部ポートは、サーバ装置１０内部のＨＴＴＰサーバ間通信でのみ使用されるため、サーバ装置１０外部からＨＴＴＰサーバ３１、４１へアクセスすることはできない。なお、ポート開閉部３１１は、ポートを開状態とすることがポート開閉管理部２１３から指示された場合、ポート番号決定部３１２に開放対象とするポート番号を問い合わせ、ポート番号決定部３１２から通知されるポート番号を内部ポートとして開放する。
【００５９】
ポート番号決定部３１２は、ポート開閉部３１１からポート番号の問い合わせを受け付けると、ポート管理部２１２が管理するポート管理リストにおいて、ＨＴＴＰサーバ２１に関連付けて記憶された各ポート番号（外部ポート）に対応する自己のＨＴＴＰサーバ（ＨＴＴＰサーバ３１）のポート番号（内部ポート）を決定し、このポート番号の登録可否をポート管理部２１２に問い合わせる。
【００６０】
具体的に、ポート番号決定部３１２は、１〜６５５３５の範囲でポート番号をランダムに決定する。この場合、Ｗｅｌｌ  Ｋｎｏｗｎポート番号の範囲（１〜１０２３）は除外することが好ましい。また、サーバ装置１０で使用されている他のサービスのポート番号（例えば、ＤＮＳサービス等）を取得し、これら他のサービスのポート番号を除いたポート番号の範囲で、ランダムに決定することが好ましい。また、マスター仮想マシン２０のポート管理部２１２が管理するポート管理テーブルをポート番号決定部３１２が参照可能に構成した場合には、このポート管理テーブルに記憶されていないポート番号の範囲でランダムに決定することとしてもよい。
【００６１】
また、対応する内部ポートの数値を維持するよう、ポート番号をランダムに決定してもよい。例えば、対応する内部ポートのポート番号が“８０”の場合には、この数値の先頭に“１００”や“２００”等のランダムに決定した数値を付加した“１００８０”や“２００８０”を、ポート番号として決定してもよい。
【００６２】
ポート管理部２１２から重複する旨が通知された場合、ポート番号決定部３１２は、重複が通知されたポート番号について、新たなポート番号を再度決定し、この新たに決定したポート番号についての登録可否をポート管理部２１２に問い合わせる。このように、ポート番号決定部３１２では、ポート管理部２１２との協働により、自己のＨＴＴＰサーバ３１が使用するポート番号を、他のＨＴＴＰサーバが使用するポート番号と重複しないよう決定する。
【００６３】
また、ポート番号決定部３１２は、ポート管理部２１２からポート管理テーブルへの記憶を行った旨の、登録完了の通知を受けると、ポート管理テーブルに記憶された自己のＨＴＴＰサーバについてのポート番号をポート開閉部３１１に通知する。これにより、ポート開閉部３１１は、ポート番号決定部３１２から通知されたポート番号、即ち、他のＨＴＴＰサーバが使用するポート番号とは重複しないユニークなポート番号を用いて内部ポートを開放する。
【００６４】
リクエスト受信部３１３は、自己のＨＴＴＰサーバが開放したポート番号（内部ポート）を介してマスター仮想マシン２０のＨＴＴＰサーバ２１からリクエストを受け付け、このリクエストをアプリケーション管理部３１４に出力する。
【００６５】
アプリケーション管理部３１４は、自己の仮想マシン（ワーカー仮想マシン３０）が備える複数のＷｅｂアプリケーションを、各Ｗｅｂアプリケーションが提供するサービスに対応したＵＲＬと関連付け、後述する記憶部１０４に保持（管理）する。ここで、アプリケーション管理部３１４が管理する情報は、上述したアプリケーション管理部２１８が管理する対応テーブルと同様のものであるが、アプリケーション管理部２１８の対応テーブルが、各仮想マシンが備える全てのアプリケーションを管理するものであるのに対し、アプリケーション管理部３１４の対応テーブルは、自己のワーカー仮想マシン（ワーカー仮想マシン３０）が備えるアプリケーションのみを管理するものとなっている。なお、Ｗｅｂアプリケーションのアプリケーション管理部３１４への登録に関しては後述する。
【００６６】
また、アプリケーション管理部３１４は、マスターＨＴＴＰサーバからリクエストを受け付けると、このリクエストに含まれたＵＲＬに対応するＷｅｂアプリケーションを自身が管理する対応テーブルから探索し、該当するＷｅｂアプリケーションにリクエストに応じた処理を依頼する。
【００６７】
また、アプリケーション管理部３１４は、リクエスト受信部３１３から受け付けたＷｅｂアプリケーションでの処理結果をリクエスト転送部２１９に出力する。
【００６８】
リクエスト保持部３１５は、リクエストを後述するＲＡＭ１０３等に一時的に保存し、アプリケーション管理部３１４からの要求に応じて取り出す。
【００６９】
仮想マシン制御部３１６は、自己のＨＴＴＰサーバが動作する仮想マシンがマスター仮想マシンか、ワーカー仮想マシンかを識別するための情報や、自己の仮想マシンや他の仮想マシンの優先度を定義した優先度情報等を保持する。
【００７０】
レスポンス送信部３１７は、アプリケーション管理部３１４から受け付けたＷｅｂアプリケーションでの処理結果を、リクエストに対応するレスポンスとして、ＨＴＴＰサーバ２１のリクエスト転送部２１９に出力する。
【００７１】
次に、サーバ装置１０における各ＨＴＴＰサーバでのポート開閉時の動作について説明する。まず、図６を参照して、外部ポートの新規設定時におけるサーバ装置１０の動作について説明する。なお、以下では、説明の簡略化のためワーカー仮想マシン３０についてのみ説明するが、ワーカー仮想マシン４０についても同様の処理が行われるものとする。
【００７２】
図６は、外部ポートの新規設定時におけるサーバ装置１０の動作を示したシーケンス図である。まず、ユーザから後述する入力デバイス１０６を介して外部ポートの新規設定が行われると、ポート番号設定部２１１は、この設定内容を受け付け（ステップＳ１１）、入力されたポート番号をポート管理部２１２に通知する（ステップＳ１２）。
【００７３】
ポート管理部２１２は、ポート番号設定部２１１から通知されたポート番号を、マスター仮想マシン２０のＨＴＴＰサーバ２１を表す識別情報と関連付け、ポート管理テーブルに記憶する（ステップＳ１３）。このとき、ポート管理部２１２は、新たなポート番号を記憶する毎に、このポート番号をサービス管理部２１５に通知し、当該ポート番号についてのサービス名の登録を依頼する（ステップＳ１４）。
【００７４】
一方、サービス管理部２１５では、ポート番号設定部２１１から通知されたポート番号と、このポート番号に対応するサービス名とを関連付け、サービス管理テーブルに記憶する（ステップＳ１５）。なお、入力されたポート番号がＫｎｏｗｎポートの場合には、既知のサービス名を関連付けて記憶することとしてもよいし、別途ユーザから指示されたサービス名を関連付けて記憶することとしてもよい。
【００７５】
続いて、ポート管理部２１２は、ポート開閉管理部２１３にポートの開放を指示する（ステップＳ１６）。
【００７６】
ポート開閉管理部２１３では、ポート管理部２１２からポート開放の指示を受け付けると、ポート開閉部２１４にポートを開放するよう指示するとともに、ワーカー仮想マシン３０のＨＴＴＰサーバ３１が備えるポート開閉部３１１にポートを開放するよう指示する（ステップＳ１７）。
【００７７】
ポート開閉部２１４は、ポート開閉管理部２１３からの指示に応じて、ポート管理部２１２が管理するポート管理テーブルから、ＨＴＴＰサーバ２１の識別情報に関連付けられたポート番号を読み出し、このポート番号を外部ポートとして開放する（ステップＳ１８）。
【００７８】
一方、ポート開閉部３１１では、ポート開閉管理部２１３からの指示に応じて、ポート番号決定部３１２に開放するポート番号を問い合わせる（ステップＳ１９）。
【００７９】
ポート番号決定部３１２は、ポート開閉部３１１からポート番号の問い合わせを受け付けると、ＨＴＴＰサーバ２１のポート管理部２１２が管理するポート番号において、ＨＴＴＰサーバ２１の識別情報に関連付けて記憶された各ポート番号（外部ポート）に対応する、自己のＨＴＴＰサーバ（ＨＴＴＰサーバ３１）のポート番号（内部ポート）をランダムに決定する（ステップＳ２０）。続いて、ポート番号決定部３１２は、決定したポート番号の登録可否をポート管理部２１２に問い合わせる（ステップＳ２１）。このとき、ポート開閉部３１１は、決定した各ポート番号について、対応させる外部ポートをポート管理部２１２に指示するものとする。
【００８０】
ポート管理部２１２は、ポート番号決定部３１２から登録可否の問い合わせを受け付けると、登録対象のポート番号が、ポート管理テーブルに記憶されたポート番号と重複するか否かを判定する（ステップＳ２２）。ここで、ポート番号が重複すると判定した場合（ステップＳ２２；Ｙｅｓ）、ポート管理部２１２は、重複した旨をポート番号決定部３１２に通知する（ステップＳ２３）。
【００８１】
ポート番号決定部３１２は、ポート管理部２１２からポート番号が重複した旨を受け付けると、この重複が通知されたポート番号について、新たなポート番号を再度ランダムに決定し（ステップＳ２４）、ステップＳ２１に再び戻ることで、決定し直したポート番号についての登録可否をポート管理部２１２に問い合わせる。
【００８２】
また、ステップＳ２２において、ポート番号が重複しないと判定した場合（ステップＳ２２；Ｎｏ）、ポート管理部２１２は、登録対象のポート番号と、この問い合わせを行ったＨＴＴＰサーバ３１の識別情報との組みを、ポート管理テーブルに関連付けて記憶する（ステップＳ２５）。次いで、ポート管理部２１２は、問い合わせを受けたポート番号をポート管理テーブルに記憶した旨をポート番号決定部３１２に通知する（ステップＳ２６）。
【００８３】
一方、ポート番号決定部３１２は、ポート管理部２１２から登録完了の通知を受けると、ポート管理テーブルに記憶された自己のＨＴＴＰサーバについてのポート番号をポート開閉部３１１に通知する（ステップＳ２７）。ポート開閉部３１１は、ポート番号決定部３１２から通知されたポート番号を内部ポートとして開放する（ステップＳ２８）。
【００８４】
また、ポート管理部２１２では、ポート番号決定部３１２から問い合わせにより、ポート管理テーブルに新たなポート番号を記憶する毎に、このポート番号についてのサービス名の登録をサービス管理部２１５に依頼する（ステップＳ２９）。なお、ポート管理部２１２は、登録対象となるポート番号について、ポート番号決定部３１２から特定の外部ポートに対応付けるよう指示された外部ポート（ポート番号）のサービス名と関連付けて登録するよう、サービス管理部２１５に依頼する。
【００８５】
サービス管理部２１５では、ポート管理部２１２から依頼を受け付けると、登録対象のポート番号を、ポート番号決定部３１２から対応付けるよう指示された、ＨＴＴＰサーバ２１のポート番号のサービス名と関連付けて記憶する（ステップＳ３０）。
【００８６】
以上の処理により、ポート管理部２１２では、図３に示したようなポート管理テーブルが管理されるとともに、サービス管理部２１５では、図４に示したようなポート管理テーブルが管理されることになる。また、各ワーカーＨＴＴＰサーバでは、ポート管理テーブルに記憶されたポート番号、即ち、ユニークに設定されたポート番号で内部ポートが開放される。
【００８７】
次に、図７を参照して、外部ポートの設定変更時における、サーバ装置１０の動作について説明する。なお、以下では、説明の簡略化のためワーカー仮想マシン３０についてのみ説明するが、ワーカー仮想マシン４０についても同様の処理が行われるものとする。
【００８８】
図７は、外部ポートの設定変更時におけるサーバ装置１０の動作を示したシーケンス図である。まず、ユーザから後述する入力デバイス１０６を介して、既存の外部ポートが変更されると、ポート番号設定部２１１は、この設定変更を受け付け（ステップＳ３１）、変更の対象となったポート番号を新たなポート番号とともにポート管理部２１２に通知する（ステップＳ３２）。
【００８９】
ポート管理部２１２では、ポート番号設定部２１１からポート番号の変更が通知されると、ポート開閉管理部２１３にポートを閉鎖するよう指示する（ステップＳ３３）。ポート開閉管理部２１３では、ポート管理部２１２からポート閉鎖の指示を受け付けると、ポート開閉部２１４にポートを閉鎖するよう指示するとともに、ワーカーＨＴＴＰサーバが備えるポート開閉部（ポート開閉部３１１）にポートを閉鎖するよう指示する（ステップＳ３４）。
【００９０】
ポート開閉部２１４では、ポート開閉管理部２１３からポートの閉鎖が指示されると、外部ポートを閉鎖する（ステップＳ３５）。同様に、ポート開閉部３１１では、ポート開閉管理部２１３からポートの閉鎖が指示されると、内部ポートを閉鎖する（ステップＳ３６）。
【００９１】
一方、ポート管理部２１２では、ポート番号設定部２１１から通知された設定変更の内容に基づいて、ポート管理テーブルの外部ポートの設定を更新すると、ワーカーＨＴＴＰサーバの識別情報に関連付けて記憶された内部ポートを削除する（ステップＳ３７）。なお、外部ポートの設定変更時において、ポート管理部２１２が、更新後のポート番号が、ポート管理テーブルの何れのポート番号にも重複しないと判断した場合には、内部ポートの削除を行わない態様としてもよい。また、更新後のポート番号と重複したポート番号（内部ポート）のみを削除する態様としてもよい。
【００９２】
続いて、ポート管理部２１２は、ステップＳ３７で行ったポート番号の変更内容、即ち、更新及び削除したポート番号をサービス管理部２１５に通知すると（ステップＳ３８）、サービス管理部２１５では、この変更内容に基づいてサービス管理テーブルを更新する（ステップＳ３９）。以下、各機能部で実行される処理は、上述したステップＳ１６〜Ｓ３０と同様であるため、説明は省略する。
【００９３】
なお、ポート番号決定部３１２では、ポート管理テーブルに記憶された自己のワーカーＨＴＴＰサーバ（ＨＴＴＰサーバ３１）についてのポート番号のうち、削除されたポート番号についてのみポート番号をランダムに決定するものとする。また、ポート番号の決定時において、ポート管理テーブルに自己のワーカーＨＴＴＰサーバ（ＨＴＴＰサーバ３１）にポート番号が関連付けて記憶されている場合には、このポート番号をポート開閉部３１１に通知することで引き続き使用する態様としてもよいし、新たに決定したポート番号を既存のポート番号に上書きするよう、ポート管理部２１２に登録可否を問い合わせる態様としてもよい。
【００９４】
以上の処理により、外部ポートが変更された場合であっても、当該外部ポートとは重複しないよう、各ワーカーＨＴＴＰサーバが使用するポート番号（内部ポート）を決定し、この内部ポートを用いて各ワーカーＨＴＴＰサーバ（ＨＴＴＰサーバ３１、４１）は、マスターＨＴＴＰサーバ（ＨＴＴＰサーバ２１）と通信することができる。
【００９５】
次に、図８を参照して、マスター仮想マシン２０上のＷｅｂアプリケーションを、ＨＴＴＰサーバ２１に登録する場合の処理について説明する。なお、外部ポート及び内部ポートのポート番号の設定は既に行われているものとする。
【００９６】
Ｗｅｂアプリケーションを登録する場合、マスター仮想マシン２０に存在するＷｅｂアプリケーションは、マスター仮想マシン２０に存在するＨＴＴＰサーバ２１に対してＵＲＬの登録を行う。
【００９７】
具体的には、Ｗｅｂアプリケーション２２ａが、ＨＴＴＰサーバ２１に対して、例えば、「url1」のＵＲＬ登録を要求すると（ステップＳ４１）、ＨＴＴＰサーバ２１に含まれるアプリケーション管理部２５が、このＵＲＬをＷｅｂアプリケーション２２ａと関連付けて記憶する（ステップＳ４２）。すなわち、そのＵＲＬを、Ｗｅｂアプリケーション２２ａを識別するアプリケーション名等の識別情報と関連付けて対応テーブルに記憶する。
【００９８】
また、アプリケーション管理部２１８は、ＵＲＬの記憶後、記憶が完了したことのレスポンスをＷｅｂアプリケーション２２ａへ返す（ステップＳ４３）。なお、図８では、Ｗｅｂアプリケーション２２ａについての処理のみ示しているが、Ｗｅｂアプリケーション２２ｂ、Ｗｅｂアプリケーション２２ｃについても同様に行われるものとする。
【００９９】
一方、ＵＲＬの登録後、クライアント装置１１のＨＴＴＰクライアントから、例えば「GET  /url1  HTTP/1.1」のリクエストが送信されると（ステップＳ４４）、ＨＴＴＰサーバ２１のリクエスト受信部２１６がこれを受け取り、リクエストを解釈する（ステップＳ４５）。ここでは、「url1にあるファイルを転送規格HTTP/1.1で取得する」と解釈する。そして、リクエスト受信部２１６は、このリクエストをどのＷｅｂアプリケーションに振り分けるかを決定するため、アプリケーション管理部２１８に引き渡す（ステップＳ４６）。なお、アプリケーション管理部２１８に渡されるリクエストには、上述したように、サービス識別子付加部２１７によりサービス識別子が付加されている。
【０１００】
アプリケーション管理部２１８は、対応テーブルを参照し、リクエスト受信部２１６から受け付けたリクエストに含まれるＵＲＬに対応するＷｅｂアプリケーションを探索する（ステップＳ４７）。ここで、対応するＷｅｂアプリケーションが、自己の仮想マシン内で見つかった場合、アプリケーション管理部２１８は、その対応するＷｅｂアプリケーション（Ｗｅｂアプリケーション２２ａ）に処理を依頼する（ステップＳ４８）。Ｗｅｂアプリケーション２２ａでは、依頼された処理を実行し（ステップＳ４９）、この処理結果をアプリケーション管理部２１８へ送信する（ステップＳ５０）。
【０１０１】
ここで、Ｗｅｂアプリケーション２２ａは、リクエストに含まれたサービス識別子に応じて、処理を実行するものとする。例えば、外部ポートの有効・無効設定について、後述する入力デバイスからは設定・参照とも可能とし、Ｗｅｂブラウザを介した操作からは、外部ポートの無効設定が行われないよう参照のみを可能としたい場合がある。この場合、外部ポート設定用のＷｅｂアプリケーションでは、リクエストにＨＴＴＰを表すサービス識別子が含まれていると判定すると、予め設定された制御内容に従って、外部ポート設定の参照のみが行われるよう処理を制御する。
【０１０２】
次いで、アプリケーション管理部２１８が、Ｗｅｂアプリケーションから受け付けた処理結果をレスポンス送信部２２２へ送信すると（ステップＳ５１）、レスポンス送信部２２２は、その処理結果を、ステップＳ４４で受け付けたリクエストに対するレスポンスとして、クライアント装置１１のＨＴＴＰクライアントへ送信する（ステップＳ５２）。
【０１０３】
図８では、該当するＷｅｂアプリケーションが見つかったことを示す「HTTP/1.1  200  OK」というメッセージがレスポンスとして送信されている。ここで、「HTTP/1.1」は転送規格で、「200」は成功を意味するステータスコードである。これらのメッセージとともに、そのアドレスにあるＷｅｂページを表示させるためのファイルがクライアント装置１１のＷｅｂクライアントへ送られ、クライアント装置１１の画面上にＷｅｂページが表示される。
【０１０４】
ステップＳ４７において、ＵＲＬに対応するＷｅｂアプリケーションが見つからない場合には、リソースが見つからない旨のエラーメッセージがレスポンスとして送信される。以下、図９を参照して、ＵＲＬに対応するＷｅｂアプリケーションが見つからない場合の処理について説明する。なお、図９においてステップＳ６１〜Ｓ６６の処理については、上述したステップＳ４１〜Ｓ４６の処理と同様であるため、説明を省略する。
【０１０５】
ステップＳ６７において、アプリケーション管理部２１８は、対応テーブルを参照し、リクエスト受信部２１６から渡されたＵＲＬ「foo」に対応するＷｅｂアプリケーションを探索する。ここで、対応するＷｅｂアプリケーションが見つからないと判定した場合、アプリケーション管理部２１８は、図９に示したように、リソースが見つからない旨のエラーメッセージ「404  Not  Found」を生成し、このエラーメッセージをレスポンス送信部２２２へ送信する（ステップＳ６８）。
【０１０６】
レスポンス送信部２２２では、アプリケーション管理部２１８から受け付けたエラーメッセージを、ステップＳ６４で受け付けたリクエストに対するレスポンスとして、クライアント装置１１のＷｅｂクライアントへ送信する（ステップＳ６９）。ＨＴＴＰプロトコルにおいて、「404」は見つからなかったことを示すステータスコードである。これにより、クライアント装置１１を操作するユーザに、リソースが見つからないことを認識させることができる。
【０１０７】
次に、図１０を参照して、ワーカー仮想マシン３０上のＷｅｂアプリケーションをＨＴＴＰサーバ３１に登録する場合について説明する。なお、ここではワーカー仮想マシン３０の動作についてのみ説明するが、他のワーカー仮想マシン（ワーカー仮想マシン４０）についても同様の処理が行われるものとする。
【０１０８】
ワーカー仮想マシン３０に存在するＷｅｂアプリケーション３２ａは、同じワーカー仮想マシン３０に存在するＨＴＴＰサーバ３１に対してＵＲＬの登録を行う。具体的には、Ｗｅｂアプリケーション３２ａが、ＨＴＴＰサーバ３１に対して、例えば「url2」のＵＲＬ登録を行うと（ステップＳ７１）、アプリケーション管理部３１４は、このＵＲＬをＷｅｂアプリケーション３２ａの識別情報と対応付け、対応テーブル等に記憶する（ステップＳ７２）。
【０１０９】
ＵＲＬの登録後、ＨＴＴＰサーバ３１は、仮想マシン制御部３１６等を参照し、ＨＴＴＰサーバ３１自身が存在する仮想マシンの種別、すなわちマスターかワーカーかを判別する。この場合、ワーカーと判別し、マスターＨＴＴＰサーバであるＨＴＴＰサーバ２１に、リクエストを転送してもらうための依頼を行う（ステップＳ７３）。なお、ＨＴＴＰサーバ３１からは、登録を行ったＵＲＬと、このＵＲＬで提供されるＷｅｂアプリケーションの識別情報とを含む情報が、振り分け依頼登録としてＨＴＴＰサーバ２１に送信されるものとする。これは、異なるマシンで処理を実行する手続きを規定するリモートプロシージャコール（ＲＰＣ）を使用することにより実現することができる。
【０１１０】
このように、ＲＰＣを使用することでＨＴＴＰサーバ２１へＷｅｂアプリケーションのＵＲＬを動的に登録することができるため、ＨＴＴＰサーバ３１、４１にＷｅｂアプリケーションを追加しても、ＨＴＴＰサーバ２１へ修正を加える必要がなくなる。これにより、Ｗｅｂアプリケーション開発時の負荷が軽減し、Ｗｅｂアプリケーション開発効率を向上させることができる。
【０１１１】
ＨＴＴＰサーバ２１が備えるリクエスト転送部２１９では、ＨＴＴＰサーバ３１からＵＲＬとＷｅｂアプリケーションの識別情報とを受け取ると、これらの情報をアプリケーション管理部２１８に渡す（ステップＳ７４）。アプリケーション管理部２１８は、リクエスト転送部２１９から受け取った各情報を、当該情報を送信したＨＴＴＰサーバ３１の識別情報と関連付け、対応テーブルに記憶する（ステップＳ７５）。そして、アプリケーション管理部２１８は、リクエスト転送部２１９を介して記憶が完了したことを通知するレスポンスをワーカー仮想マシン３０のアプリケーション管理部３１４に送信する（ステップＳ７６、Ｓ７７）。
【０１１２】
一方、アプリケーション管理部３１４では、リクエスト転送部２１９から記憶が完了したことを通知するレスポンスを受け付けると、このレスポンスをＷｅｂアプリケーション３２ａに返すことで（ステップＳ７８）、登録処理が完了する。なお、図１０では、Ｗｅｂアプリケーション３２ａの登録について説明したが、Ｗｅｂアプリケーション３２ｂについても同様の処理が行われるものとする。
【０１１３】
一方、ＵＲＬの登録後に、クライアント装置１１のＨＴＴＰクライアントから、「GET  /url2  HTTP/1.1」がリクエストとして送信されると（ステップＳ７９）、ＨＴＴＰサーバ２１のリクエスト受信部２１６がこれを受け取り、そのリクエストを解釈する（ステップＳ８０）。この場合、「url2にあるファイルを転送規格HTTP/1.1で取得する」と解釈する。
【０１１４】
リクエスト受信部２１６では、受け付けたリクエストをアプリケーション管理部２１８へ渡すと（ステップＳ８１）、アプリケーション管理部２５は、対応テーブルを参照し、このリクエストに含まれたＵＲＬに対応するＷｅｂアプリケーション３２ａを探索する（ステップＳ８２）。なお、アプリケーション管理部２１８に渡されるリクエストには、上述したように、サービス識別子付加部２１７によりサービス識別子が付加されている。
【０１１５】
ここで、リクエストに含まれたＵＲＬ“url2”がＷｅｂアプリケーション３２ａに対応するものとすると、Ｗｅｂアプリケーション３２ａはワーカー仮想マシン３０上で動作するＷｅｂアプリケーションであるため、マスター仮想マシン２０上では見つからない。そのため、アプリケーション管理部２１８は、リクエスト転送部２１９に対し、ワーカー仮想マシン３０上で動作するＨＴＴＰサーバ３１へ転送するように、リクエストの転送を依頼する（ステップＳ８３）。
【０１１６】
リクエスト転送部２１９は、アプリケーション管理部２１８からリクエストの転送依頼を受け付けると、このリクエストに含まれるサービス識別子（サービス名）と、このリクエストに含まれるＵＲＬに関連付けて対応テーブルに記憶されたワーカーＨＴＴＰサーバ３１の識別情報とに基づいて、これらの情報に関連付けられたワーカーＨＴＴＰサーバ３１のポート番号（内部ポート）をポート管理テーブル及びサービス管理テーブルから特定する。そして、リクエスト転送部２１９は、この特定したＨＴＴＰサーバ３１の内部ポートに向けてリクエストを転送する（ステップＳ８４）。
【０１１７】
このように、ＨＴＴＰサーバ２１では、ＨＴＴＰサーバ３１、４１へＨＴＴＰを用いてリクエストを転送する。この場合、ＨＴＴＰサーバ３１、４１は、一般的なＷｅｂブラウザからのリクエストを受けた場合と同じとなるため、ＨＴＴＰサーバ３１、４１のリクエスト処理に手を加える必要はない。また、ＨＴＴＰサーバ２１は、情報処理装置の外部と通信を行うために外部ポートを使用し、ＨＴＴＰサーバ３１、４１は、ＨＴＴＰサーバ２１と通信を行うために内部ポートと自身を識別するループバックアドレスとを使用して、リクエストを受信し、リクエストに対する処理結果を送信する。これにより、サーバ装置１０の外部からＨＴＴＰサーバ３１、４１への直接的なアクセスを防止することができるため、セキュリティ面を考慮しなければならないのはＨＴＴＰサーバ２１のみでよく、装置全体として保守・管理の負担を軽減させることができる。
【０１１８】
リクエスト転送部２１９から送信されたリクエストは、ワーカー仮想マシン３０上で動作するＨＴＴＰサーバ３１のリクエスト受信部３１３で解釈が行われた後（ステップＳ８５）、アプリケーション管理部３１４へ渡される（ステップＳ８６）。
【０１１９】
アプリケーション管理部３１４は、自身が管理する対応テーブルを参照し、リクエスト受信部３１３から受け付けたリクエストに含まれるＵＲＬに対応するＷｅｂアプリケーションを探索する（ステップＳ８７）。この場合、ワーカー仮想マシン３０上で動作するＷｅｂアプリケーション３２ａ、３２ｂの中にそのＵＲＬに対応するＷｅｂアプリケーション３２ａが含まれているため、アプリケーション管理部３１４は、Ｗｅｂアプリケーション３２ａに処理を依頼する（ステップＳ８８）。
【０１２０】
Ｗｅｂアプリケーション３２ａは依頼された処理を実行し（ステップＳ８９）、この処理結果をアプリケーション管理部３５へ送信する（ステップＳ９０）。なお、Ｗｅｂアプリケーション３２ａは、Ｗｅｂアプリケーション２２ａと同様、リクエストに含まれたサービス識別子に応じて、処理を実行するものとする。
【０１２１】
アプリケーション管理部３１４は、Ｗｅｂアプリケーション３２ａから受け付けた処理結果をレスポンス送信部３１７へ送信すると（ステップＳ９１）、レスポンス送信部３１７は、その処理結果をマスター仮想マシン２０のリクエスト転送部２１９に送信する（ステップＳ９２）。
【０１２２】
一方、リクエスト転送部２１９では、レスポンス送信部３１７から処理結果を受け付けると、この処理結果をアプリケーション管理部２１８に送信する（ステップＳ９３）。続いて、アプリケーション管理部２１８は、リクエスト転送部２１９から受け付けた処理結果をレスポンス送信部２２２に送信すると（ステップＳ９４）、レスポンス送信部２２２は、その処理結果をステップＳ７９で受け付けたリクエストに対するレスポンスとして、クライアント装置１１のＨＴＴＰクライアントへ送信する（ステップＳ９５）。
【０１２３】
このように、ＨＴＴＰサーバ２１では、ワーカーＨＴＴＰサーバ各々が有するＷｅｂアプリケーションのＵＲＬと、当該ワーカーＨＴＴＰサーバの外部・内部ポートに関する情報とを対応付けたポート管理テーブル、サービス管理テーブル及び対応テーブルを用いて、クライアント装置１１のＨＴＴＰクライアントから受信したリクエストに含まれるＵＲＬ（アドレス情報）に対応するワーカーＨＴＴＰサーバ（ワーカー仮想マシン）を判別し、リクエストを転送する。
【０１２４】
図１１は、上述した実施形態にかかるサーバ装置１０のハードウェア構成の一例を示した図である。
【０１２５】
図１１に示したように、サーバ装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、記憶部１０４と、表示デバイス１０５と、入力デバイス１０６と、通信部１０７とを備え、各部はバス１０８により接続されている。
【０１２６】
ＣＰＵ１０１は、ＲＡＭ１０３の所定領域を作業領域として、ＲＯＭ１０２又は記憶部１０４に予め記憶された各種制御プログラムとの協働により各種処理を実行し、サーバ装置１０を構成する各部の動作を統括的に制御する。
【０１２７】
また、ＣＰＵ１０１は、ＲＯＭ１０２又は記憶部１０４に予め記憶された所定のプログラムとの協働により、上述した仮想マシン（マスター仮想マシン２０、ワーカー仮想マシン３０、４０）を実現する。
【０１２８】
ＲＯＭ１０２は、サーバ装置１０の制御にかかるプログラムや各種設定情報等を書き換え不可能に記憶する。ＲＡＭ１０３は、ＳＤＲＡＭ等の揮発性の記憶デバイスであって、ＣＰＵ１０１の作業エリアとして機能し、バッファの役割を果たす。
【０１２９】
記憶部１０４は、磁気的又は光学的に記録可能な不揮発性の記憶デバイスを有し、サーバ装置１０の制御にかかるプログラムや各種設定情報等を書き換え可能に記憶する。また、記憶部１０４は、上述したポート管理テーブルや、サービス管理テーブル、対応テーブル等を記憶する。
【０１３０】
表示デバイス１０５は、ＬＣＤやＣＲＴ等の表示デバイスにより構成され、ＣＰＵ１０１からの表示信号に基づいて、各種情報を表示する。入力デバイス１０６は、各種入力キーやポインティングデバイス等を備え、ユーザから操作入力された指示信号をＣＰＵ１０１に出力する。なお、入力デバイス１０６は、表示デバイス１０５と一体的にタッチパネルを構成する態様としてもよい。
【０１３１】
以上のように、本実施形態によれば、ワーカーＨＴＴＰサーバでは、マスターＨＴＴＰサーバが管理するポート管理テーブルに基づいて、他のＨＴＴＰサーバが使用するポート番号とは異なるポート番号を内部ポートとして決定することができる。これにより、マスターＨＴＴＰサーバが使用するポート番号を設定するだけで、他のワーカーＨＴＴＰサーバの各々が使用するポート番号を重複することなく自動的に決定することができるため、ポート番号の管理を容易化することができる。
【０１３２】
なお、本実施形態では、ワーカーＨＴＴＰサーバの内部ポートを、マスターＨＴＴＰサーバとの通信に用いる態様について説明したが、これに限らず、ワーカーＨＴＴＰサーバ間での通信用として用いることとしてもよい。
【０１３３】
以上、本発明に係る実施形態について説明したが、これに限定されるものではなく、本発明の主旨を逸脱しない範囲での種々の変更、置換、追加等が可能である。
【０１３４】
例えば、上記した実施形態の処理にかかるプログラムを、コンピュータで読み取り可能な記憶媒体として提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリ等、プログラムを記憶でき、且つ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
【０１３５】
また、上記した実施形態の処理にかかるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【図面の簡単な説明】
【０１３６】
【図１】ネットワーク機器構成の一例を示した図である。
【図２】図１に示した情報処理装置のモジュール構成の一例を示した図である。
【図３】図２に示したＨＴＴＰサーバの機能的構成を示した図である。
【図４】図３に示したポート管理部が管理するポート管理テーブルの一例を模式的に示した図である。
【図５】図３に示したサービス管理部が管理するサービス管理テーブルの一例を模式的に示した図である。
【図６】外部ポート及び内部ポートの設定にかかる処理の流れを示したシーケンス図である。
【図７】外部ポートの設定変更にかかる処理の流れを示したシーケンス図である。
【図８】マスターＨＴＴＰサーバへのＷｅｂアプリケーションの登録及びリクエスト処理の流れを示したシーケンス図である。
【図９】マスター仮想マシン上に対応するＷｅｂアプリケーションが見つからない場合の処理の流れを示したシーケンス図である。
【図１０】ワーカーＨＴＴＰサーバへのＷｅｂアプリケーションの登録及びリクエスト処理の流れを示したシーケンス図である。
【図１１】図１に示した情報処理装置のハードウェア構成の一例を示した図である。
【符号の説明】
【０１３７】
１０  サーバ装置
１１  クライアント装置
２０  仮想マシン（マスター仮想マシン）
３０  仮想マシン（ワーカー仮想マシン）
４０  仮想マシン（ワーカー仮想マシン）
２１  ＨＴＴＰサーバ（マスターＨＴＴＰサーバ）
２１１  ポート番号設定部
２１２  ポート管理部
２１３  ポート開閉管理部
２１４  ポート開閉部
２１５  サービス管理部
２１６  リクエスト受信部
２１７  サービス識別子付加部
２１８  アプリケーション管理部
２１９  リクエスト転送部
２２０  リクエスト保持部
２２１  仮想マシン制御部
２２２  レスポンス送信部
３１  ＨＴＴＰサーバ（ワーカーＨＴＴＰサーバ）
３１１  ポート開閉部
３１２  ポート番号決定部
３１３  リクエスト受信部
３１４  アプリケーション管理部
３１５  リクエスト保持部
３１６  仮想マシン制御部
３１７  レスポンス送信部
４１  ＨＴＴＰサーバ（ワーカーＨＴＴＰサーバ）
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  記憶部
１０５  表示デバイス
１０６  入力デバイス
１０７  通信部
１０８  バス
【図１】
2010072738.tif 000003
【図２】
2010072738.tif 000004
【図３】
2010072738.tif 000005
【図４】
2010072738.tif 000006
【図５】
2010072738.tif 000007
【図６】
2010072738.tif 000008
【図７】
2010072738.tif 000009
【図８】
2010072738.tif 000010
【図９】
2010072738.tif 000011
【図１０】
2010072738.tif 000012
【図１１】
2010072738.tif 000013