(57)【要約】【課題】レガシーアプリケーションコンポーネントの初期化中に、管理イベントが動的ウェブサービスの生成をトリガまたは生じさせることのできる機構を提供する。【解決手段】他のタイプの静的なツーリング手法と同様に、本発明の動的手法は、レガシーコンポーネントと通信するためのインターフェースを記述する利用可能なメタデータを使用する。一時的にまたは機会を見てツールを作成することによってウェブサービスを生成または示すのではなく、例示の諸実施形態は、アプリケーションを初期化する標準部分としてサポートするインフラストラクチャによってウェブサービスを生成する。アプリケーションを停止させると、対応する動的ウェブサービスが停止され、かつその動的ウェブサービスを生成するために使用されたウェブサービス記述を削除する終了シーケンスが提供される。アプリケーションが起動されるごとに、利用可能なメタデータが照会される必要があり、整合性のあるサービスが直ちに構築される。【選択図】図１
2006252536.tif 000002
【特許請求の範囲】
【請求項１】
分散システムにおけるサービスコンピューティング装置において、ウェブサービス環境内で通信するようには開発されていないレガシーアプリケーションコンポーネントのために、前記レガシーアプリケーションコンポーネントの初期化中に管理イベントが動的ウェブサービスを生成できるようにすることにより前記動的ウェブサービスを生成する方法であって、
ウェブサービスアプリケーションと通信するように開発されていない１つまたは複数のレガシーコンポーネントを含むアプリケーションを初期化するための要求を受信する行為（ａｃｔ）と、
管理コンフィギュレーション設定が、前記アプリケーションが初期化されると前記１つまたは複数のレガシーコンポーネントに対する動的ウェブサービスを生成するように示していること、を識別する行為と、
前記管理コンフィギュレーション設定に基づいて、前記１つまたは複数のレガシーコンポーネントと通信するためのインターフェースを記述するメタデータにアクセスする行為と、
変換（ｔｒａｎｓｌａｔｉｏｎ）プロセスを介して、ウェブサービスクライアントが前記１つまたは複数のレガシーコンポーネントと通信できるようにする前記インターフェース記述と整合性のある前記動的ウェブサービスを自動的に生成するために、前記メタデータを使用する行為と、
を備えることを特徴とする方法。
【請求項２】
前記１つまたは複数のレガシーコンポーネントによって提供されるサービスを要求するための１つまたは複数のオペレーションを含むウェブサービス要求メッセージを前記ウェブサービスクライアントから受信する行為と、
前記１つまたは複数のオペレーションに基づいて、前記１つまたは複数のレガシーコンポーネントに１つまたは複数のレガシーコールを行うために、前記動的ウェブサービスを用いる行為と、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ウェブサービス要求メッセージは１つまたは複数のパラメータをさらに含んでおり、前記１つまたは複数のレガシーコンポーネントのうちの１つまたは複数に、さらなる処理のために、前記１つまたは複数のパラメータを渡す行為をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記インターフェース記述に基づいて、前記１つまたは複数のレガシーコンポーネントに対する前記メッセージ交換パターンが前記ウェブサービスクライアントへの応答を必要としていることを識別する行為と、
前記１つまたは複数のレガシーコンポーネントから、１つまたは複数の戻り値を受信する行為と、
前記動的ウェブサービスを用いて、前記１つまたは複数の戻り値をウェブサービス応答メッセージ中にフォーマット化する行為と、
前記ウェブサービス応答メッセージを、さらなる処理のために前記ウェブサービスクライアントに送信する行為と、
をさらに含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記ウェブサービス要求および前記ウェブサービス応答メッセージは、ＸＭＬ文書であることを特徴とする請求項４に記載の方法。
【請求項６】
前記インターフェース記述は、コールオペレーション、パラメータ、パラメータ順序付け、または前記１つもしくは複数のレガシーコンポーネントと通信するためのメッセージ交換パターンのうちの１つまたは複数を記述することを特徴とする請求項１に記載の方法。
【請求項７】
前記メタデータは、まずウェブサービス記述を生成するために使用され、次いで前記動的ウェブサービスを生成するために使用されることを特徴とする請求項１に記載の方法。
【請求項８】
前記ウェブサービス記述は、ＷＳＤＬ文書であることを特徴とする請求項７に記載の方法。
【請求項９】
前記アプリケーションを停止するための要求を受信する行為と、
前記アプリケーションを停止するための前記要求に基づいて、前記動的ウェブサービスを自動的に停止させる行為と、
前記アプリケーションが次に初期化されると、新しい動的ウェブサービスおよび新しいウェブサービス記述が生成されるように前記ウェブサービス記述を削除する行為と、
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記アプリケーションを初期化するための前記要求は、前記ウェブサービスクライアントからのウェブサービス要求メッセージに応答して受信されることを特徴とする請求項１に記載の方法。
【請求項１１】
前記アプリケーションを初期化するための前記要求は、前記サービスコンピューティング装置におけるユーザインターフェースからの入力に応答して受信されることを特徴とする請求項１に記載の方法。
【請求項１２】
分散システムにおけるサービスコンピューティング装置において、ウェブサービス環境内で通信するようには開発されていないレガシーアプリケーションコンポーネントのために、前記レガシーアプリケーションコンポーネントの初期化中に管理イベントが動的ウェブサービスを生成できるようにすることにより前記動的ウェブサービスを生成する方法であって、
ウェブサービスアプリケーションと通信するように開発されていない１つまたは複数のレガシーコンポーネントを含むアプリケーションを初期化するための要求を受信する行為と、
前記要求に基づいて、前記１つまたは複数のレガシーコンポーネントと通信するためのインターフェースを記述するメタデータと整合性のある動的ウェブサービスを自動的に生成するステップであって、前記動的ウェブサービスは、ウェブサービスクライアントが変換プロセスを介して前記１つまたは複数のレガシーコンポーネントと通信できるようにするために使用されることと、
を含むことを特徴とする方法。
【請求項１３】
前記メタデータは、まずウェブサービス記述を生成するために使用され、次いで前記動的ウェブサービスを生成するために使用されることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記アプリケーションを停止するための要求を受信する行為と、
前記アプリケーションを停止するための前記要求に基づいて、前記動的ウェブサービスを自動的に停止させる行為と、
前記アプリケーションが次に初期化されると、新しい動的ウェブサービスおよび新しいウェブサービス記述が生成されるように前記ウェブサービス記述を削除する行為と、
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記アプリケーションを初期化するための前記要求は、前記ウェブサービスクライアントからのウェブサービス要求メッセージに応答して受信することを特徴とする請求項１２に記載の方法。
【請求項１６】
分散システムにおけるサービスコンピューティング装置において、ウェブサービス環境内で通信するようには開発されていないレガシーアプリケーションコンポーネントのために、前記レガシーアプリケーションコンポーネントの初期化中に管理イベントが動的ウェブサービスを生成できるようにすることにより、前記動的ウェブサービスを生成する方法を実施するコンピュータプログラム製品であって、プロセッサによって実行されたとき、
ウェブサービスアプリケーションと通信するように開発されていない１つまたは複数のレガシーコンポーネントを含むアプリケーションを初期化するための要求を受信することと、
管理コンフィギュレーション設定が、前記アプリケーションが初期化されると前記１つまたは複数のレガシーコンポーネントに対する動的ウェブサービスを生成するように示していること、を識別することと、
前記管理コンフィギュレーション設定に基づいて、前記１つまたは複数のレガシーコンポーネントと通信するためのインターフェースを記述するメタデータにアクセスすることと、
変換プロセスを介して、ウェブサービスクライアントが前記１つまたは複数のレガシーコンポーネントと通信できるようにする前記インターフェース記述と整合性のある前記動的ウェブサービスを自動的に生成するために、前記メタデータを使用することと、
を分散コンピューティングシステムに実施させることができるコンピュータ実行可能命令をその上に記憶している１つまたは複数のコンピュータ読取り可能媒体を含むことを特徴とするコンピュータプログラム製品。
【請求項１７】
前記１つまたは複数のレガシーコンポーネントによって提供されるサービスを要求するための１つまたは複数のオペレーションを含むウェブサービス要求メッセージを前記ウェブサービスクライアントから受信することと、
前記１つまたは複数のオペレーションに基づいて、前記１つまたは複数のレガシーコンポーネントに１つまたは複数のレガシーコールを行うために、前記動的ウェブサービスを用いることと、
を分散コンピューティングシステムに実施させることができるコンピュータ実行可能命令をさらに含むことを特徴とする請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
前記ウェブサービス要求メッセージは、１つまたは複数のパラメータをさらに含んでおり、前記１つまたは複数のレガシーコンポーネントのうちの１つまたは複数に、さらなる処理のため、前記１つまたは複数のパラメータを渡すこと、  
を分散コンピューティングシステムに実施させることができるコンピュータ実行可能命令をさらに含むことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記インターフェース記述に基づいて、前記１つまたは複数のレガシーコンポーネントに対する前記メッセージ交換パターンは前記ウェブサービスクライアントへの応答を必要としていることを、識別することと、
前記１つまたは複数のレガシーコンポーネントから、１つまたは複数の戻り値を受信することと、
前記動的ウェブサービスを用いて、前記１つまたは複数の戻り値をウェブサービス応答メッセージ中にフォーマット化することと、
前記ウェブサービス応答メッセージを、さらなる処理のために前記ウェブサービスクライアントに送信することと、
を分散コンピューティングシステムに実施させることができるコンピュータ実行可能命令をさらに含むことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項２０】
前記インターフェース記述は、コールオペレーション、パラメータ、または前記１つもしくは複数のレガシーコンポーネントと通信するためのメッセージ交換パターンのうちの１つまたは複数を記述することを特徴とする請求項１６に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ウェブサービスに関する。より詳細には、本発明は、ウェブサービス環境内で通信するようには開発されていないレガシーアプリケーションコンポーネントのために、動的なウェブサービスを生成する。
【背景技術】
【０００２】
コンピュータシステムおよびそれに関連する技術は、社会の多くの側面に影響を与えている。実際、コンピュータシステムの情報処理能力は、我々が生活し働くスタイルを変化させている。現在、コンピュータシステムは、コンピュータシステムの出現前まで通常は手作業で行われていた多くのタスク（例えば、ワードプロセッシング、スケジューリング、データベース管理など）を行っている。さらに最近では、コンピュータシステムを互いに結合してコンピュータネットワークを形成し、そのネットワークを介して電子的にデータを共用するために通信することができる。ウェブサービスは、コンピュータ間のこのような情報伝達能力を向上させる原動力であり、ソフトウェアを構築し使用する方法を一変させている。
【０００３】
ウェブサービスにより、アプリケーションはデータを共用することができる。すなわち、そのアプリケーションがいかにして構築されたか、どのオペレーティングシステムもしくはプラットフォーム上で動作するか、またそれにアクセスするためにどの装置を使用するかに関係なく、他のアプリケーションから機能をより強力に呼び出すことが可能となる。ウェブサービスは、ＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｐｅｎ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、ＵＤＤＩ（Ｕｎｉｖｅｒｓａｌ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｄｉｓｃｏｖｅｒｙ  Ｉｎｔｅｇｒａｔｉｏｎ）、ＷＳＤＬ（Ｗｅｂ  Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）などを含む業界標準プロトコルによりインターネットを介して呼び出される。ウェブサービスは、互いに独立したままであるが、特定のタスクを実行する共同作業グループに対して緩やかに（ｌｏｏｓｅｌｙ）リンクすることができる。
【０００４】
ウェブサービスネットワーク上の電子通信は、サーバコンピュータシステム（以下、「サーバ」、「サービス」または「ウェブサービス」と呼ぶ）におけるネットワークサービス（例えば、ウェブサービス）へのアクセスを要求するクライアントコンピュータシステム（以下、「クライアント」と呼ぶ）を含むことが多い。したがって、クライアントは、そのシステムリソースへの特定のアクセスを求める要求をそのサービスに送信し、そのクライアントが許可され確認された場合、そのサービスは、所望の情報を提供する応答メッセージで応ずる。当然であるが、クライアントとサービスの間の他のメッセージングパターンも利用可能であり、簡単な単一メッセージ、並びに、例えば、通知、勧誘（ｓｏｌｉｃｉｔ）応答、Ｐｕｂ−Ｓｕｂパターン、ポーリング、キックプッシュ（ｋｉｃｋ−ｐｕｓｈ）、キューイングなど、より高級なマルチメッセージ交換も含まれる。さらに、この種の通信は、分散システム（例えば、ウェブサービス）のためのコントラクト中の、クライアントとサービスの双方によって決定される様々な要件および機能によって支配される。
【０００５】
コントラクトは、サービス（またはクライアント）の挙動の可視的な側面の表現である。コントラクトは、マシン可読言語および人間の言語を混合したものによって表される。マシン可読言語を用いると、明らかに精度を高めることが可能であること以外に、部分的なサービス実装の構築、サービス配信の自動化、交換されたメッセージの監査／妥当性検査、サービスの管理、および多くの他のネットワークに関係する機能を可能とするツールを作成できる。しかし、マシン可読言語の表現力の限界のため、主としてメッセージおよびメッセージ交換パターンの意味論を記述するために、人間の言語は、コントラクトの重要な構成要素のままである。
【０００６】
ネットワークプロトコル記述言語（例えば、ＷＳＤＬ）は、共通または標準の言語でコントラクト（例えば、ウェブサービスコントラクト）を記述するための全体のラッパー（ｗｒａｐｐｅｒ）または仕様を提供する。このような仕様を用いることにより、開発者および開発者ツールはコントラクトを作成しかつ解釈することが容易になる。そのネットワークプロトコル記述言語（以下、「ＮＰＤＬ」と呼ぶ）は、豊富なツーリングスイート（ｓｕｉｔｅｓ）を有しており、それがよく使用される主な理由である。
【０００７】
ウェブサービスの出現前の数年にわたり、様々なベンダから相当数の分散アプリケーションが、レガシーコンポーネントベースのアーキテクチャを用いて記述されている（例えば、ＣＯＭ（Ｃｏｍｐｏｎｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）、ＤＣＯＭ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｏｎｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）、ＣＯＲＢＡ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）。しかし、標準ベースのウェブサービスの出現および進歩によって、これらのレガシーコンポーネントからビジネスロジックをウェブサービスとして公開することに関心が高まっている。実例として、その後の手法に関係なく、通常、以下のインターフェースをサポートするものなどアプリケーションコンポーネントを得ることを目的としている。
【０００８】
【表１】
2006252536.tif 000003
【０００９】
そのコンポーネント定義から作成された、２つのオペレーションを有する対応するウェブサービスレイヤを以下のＷＳＤＬフラグメントで示す。
【００１０】
【表２】
2006252536.tif 000004
【００１１】
現在までに、ウェブサービス環境内でレガシーコンポーネントを変換しもしくは使用するために従われている主なパターンまたは手法は、２つあるだけである。１つの手法は、マイグレーションまたは変更（ｍｏｄｉｆｉｃａｔｉｏｎ）であり、それには、開発者がウェブサービスサポートを追加するようにコンポーネントのソースコードを変更する必要がある。アプリケーションがコンパイルされ実行されると、アプリケーションは、適切なウェブサービスサポートを開始するが、なお、従来のクライアントにその基礎となるアプリケーションへの接続を可能にする。
【００１２】
他の手法は、静的なラッピングサービス（ｗｒａｐｐｉｎｇ  ｓｅｒｖｉｃｅ）を作成するツーリング／メタデータ方式手法である。その手法は、コンポーネントのソースコード変更を要求するのではなく、コンポーネントに対する既存の登録されたメタデータを調べるためにより外的な手法を使用し、コンポーネントが提供すべきサービスを決定する。それは、その基礎となる未変更コンポーネントに対して外部のものではあるが、少なくとも初期にはその基礎となる未変更コンポーネントと整合性のある静的なウェブサービスラッパーを作成する。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上記の変更する手法および静的手法は、ウェブサービス環境中でレガシーコンポーネントのビジネスロジックへのアクセスを可能にする。しかしながら、その両方の手法に関連するいくつかの欠点および問題がある。例えば、ビジネスロジックの変更を望まない場合であっても、変更する手法はソースコード変更を必要とするので、それは、簡単な管理手続きというよりもむしろ開発業務となる。したがって、このような業務は、典型的な管理者の役割の範囲を超えており、さらなる人材能力が必要である。さらに、ウェブサービスを可能にするため開発されたものを変更することは、元のコーディング環境を用いては対応できない可能性がある。例えば、もはやサポートされていないレガシー言語を用いて記述されているコンポーネントを変更する場合、そのコンポーネントを、まず現在の言語に移植する必要がある。したがって、当初あるメソッドに属性を追加するように見える変更は、実際には、異なる言語、ランタイム、および開発環境へのマイグレーションとなる。
【００１４】
静的なツーリング手法では、その基礎となるコンポーネントが変更されたとき、または新しいバージョンが配信されたときに問題が起こる。このような場合、サービスが再度生成されるまで、その変更がラッピングサービスに自動的に反映されることはない。さらに、ウェブサービスオペレーションの場合、サービスとその基礎となるコンポーネントの間に明示的な依存性がある。したがって、コンポーネントとウェブサービスのライフタイムが確実に同期化されているように注意する必要がある（すなわち、ラッピングサービスはコンポーネントがアクティブであることを必要とし、コンポーネントはラッパーがアクティブであることを必要とする）。さらに、環境およびラッパーの外的な性質に応じて、通常、追加のコンポーネントが配信され管理される。言い換えると、コンポーネントを他のマシンに移動する場合、ラッパーコンポーネントも識別し、それに応じて移動する必要がある。少なくとも前述の理由のため、開発者がその基礎となるコンポーネントのソースコードを変更する必要なしに、コンポーネントの変更もしくはバージョン化、ならびにサービスとその基礎となるコンポーネントとの間の明示的な依存性をサポートすることを可能にする、レガシーコンポーネントに対するウェブサービスおよびビジネスロジックを提供することが求められている。
【課題を解決するための手段】
【００１５】
ウェブサービス環境中において、レガシーコンポーネントのためのサービスおよびビジネスロジックを提供するシステムに関する上述の欠陥および欠点は、本発明の例示の諸実施形態によって克服される。例えば、本発明は、レガシーアプリケーションコンポーネントの初期化中に、管理イベントが動的ウェブサービスを生成可能にすることによって、ウェブサービス環境内で通信するようには開発されていないレガシーアプリケーションコンポーネントに対して、動的ウェブサービスを生成する。
【００１６】
例示の諸実施形態は、アプリケーションを初期化するための要求を受信する。アプリケーションは、ウェブサービスアプリケーションと通信するようには開発されていない１つまたは複数のレガシーコンポーネントを含む。初期化されると、１つまたは複数のレガシーコンポーネントに対する動的ウェブサービスをアプリケーションの初期化後に生成するように示している管理コンフィギュレーション設定が識別される。その管理コンフィギュレーション設定に基づき、１つまたは複数のレガシーコンポーネントと通信するためのインターフェースを記述するメタデータがアクセスされる。次いで、メタデータが使用されて、変換（ｔｒａｎｓｌａｔｉｏｎ）プロセスを介して、１つまたは複数のレガシーコンポーネントとウェブサービスクライアントを通信可能にするインターフェース記述と整合性のある動的ウェブサービスを、自動的に生成することができる。
【００１７】
本発明の追加の機能および利点は、以下の説明において述べられている。その説明から部分的には自明のものであり、また本発明の実施によって理解することができる。本発明の機能および利点は、添付の特許請求の範囲で特に示された手段および組合せにより実現され会得することができる。本発明のそれらのおよび他の機能は、以下の説明および添付の特許請求の範囲から十分明白になろうが、あるいは後に述べる本発明の実施例によって理解することも可能である。
【００１８】
本発明の上記のおよび他の利点および機能を会得できる方法を記述するために、上記で簡単に述べた本発明のより詳細な説明を、添付図面で示される本発明の特有の諸実施形態を参照しながら示すものとする。それらの図面は、本発明の典型的な諸実施形態を示しているに過ぎず、したがって、その範囲を限定するものと見なすべきではないことを理解されたい。その上で本発明を、添付図面を用いて更なる特定性および詳細さと共に記述し説明する。
【発明を実施するための最良の形態】
【００１９】
本発明は、ウェブサービス環境中で通信するように開発されていないレガシーアプリケーションコンポーネントのために、動的ウェブサービスを生成するための方法、システム、およびコンピュータプログラム製品に及ぶ。本発明の諸実施形態は、様々なコンピュータハードウェアコンポーネントまたはモジュールを含む特定目的または汎用コンピュータを含むことができる。以下、これをより詳細に論ずる。
【００２０】
本発明は、レガシーアプリケーションコンポーネントの初期化中に、管理イベントが、動的ウェブサービスの生成をトリガまたは生じさせることのできる機構を提供する。他のタイプの静的なツーリング手法と同様に、本明細書でサポートする動的手法は、レガシーコンポーネントと通信するためのインターフェースを記述する利用可能なメタデータを使用する。ウェブサービスを、一時的にまたは機会を見てツールを作成することにより生成および示すのではなく、例示の諸実施形態は、アプリケーションを初期化する標準部分としてサポートするインフラストラクチャによってウェブサービスを生成する。アプリケーションを停止させると、それに対応する動的ウェブサービスが停止され、かつその動的ウェブサービスを生成するために使用されたウェブサービス記述を削除する終了シーケンスが提供される。したがって、アプリケーションが起動されるごとに、利用可能なメタデータが照会される必要があり、整合性のあるサービスが直ちに（ｏｎ−ｔｈｅ−ｆｌｙ）構築されることになる。
【００２１】
ウェブサービスを生成するこの動的手法は、従来技術のシステムに対していくつかの利点を有する。例えば、元のコンポーネントに対して変更がないので、動的手法によって管理的なオペレーションによってウェブサービスが可能になる。この管理的オペレーションは、アプリケーショが起動されるとウェブサービスを使用可能にする簡単なコンフィグレーションユーティリティでよい。ウェブサービスをコンフィギュレーション設定に基づいて生成できるようにすることにより、管理者は、より高度の開発者の技術能力を必要とすることなく、動的ウェブサービスの作成が可能になる。さらに、コードレベルのマイグレーションに取り組む必要がないので、レガシーコンポーネントをサポートするインフラストラクチャは、それに対応するレガシー言語のままとすることができる。
【００２２】
さらに、例示の諸実施形態によって述べられた動的手法は、静的なツーリング手法に対して以下の利点を有する。まず、その基礎となるコンポーネントが変更された場合または新しいバージョンが開発された場合とは無関係に、コンポーネントの定義と整合性のあるウェブサービスが常に作成される。したがって、ウェブサービスと同期しないコンポーネントが動作するスコープ（ｓｃｏｐｅ）はもはやない。さらに、動的ウェブサービスの起動（および生成）が、いまや、コンポーネントの起動の一部分となっているので、容易に、サービスのライフタイムをレガシーコンポーネントのライフタイムと緊密に結合することができる。他の利点は、配信し管理すべき追加のラッパーコンポーネントがないことである。それは、以下により詳細に述べるように、アプリケーションが動作していないときサービスを示すものは何もないということによる。したがって、動的ウェブサービスは要求に応じて生成され、常に配備されていることを保証することができる。言い換えると、マシン間における転送の際に、レガシーコンポーネントと共にウェブサービスコンポーネントを移動させる必要がない。
【００２３】
図１は、上述の様々な例示の実施形態を示す。図１に示すように、ウェブサービスクライアント１４５とレガシークライアント１０５を共にサポートする分散システム１００があり、それにより、サービス１１０指向のアプリケーション１２５にアクセスすることができる。より具体的には、サービス１１０は、レガシーコンポーネント１３５を含むアプリケーション１２５を備える。例示の実施形態により、アプリケーション１２５を起動すると動的ウェブサービス１７５を生成すべきであることを示す管理コンフィギュレーション設定１５５を、管理者（図示せず）は設定することができる。したがって、アプリケーション１２５が起動されると、管理コンフィギュレーション設定１５５に基づいて（またおそらく、アプリケーション特有のコンフィギュレーションファイルから得られた他のコンフィギュレーションにしたがって）、ウェブサービスイニシャライザ１８０は、カタログデータベース１６５のメタデータ１６０にアクセスする。例示の実施形態は、アプリケーション１２５（および対応する動的ウェブサービス１７５）の初期化をいくつかの方法により実施できることに留意されたい。例えば、アプリケーション１２５の初期化要求は、管理者ユーザインターフェースからの入力を介して受信することができる。他の例示の実施形態は、アプリケーション１２５によって与えられるサービスへのアクセスを求める要求１４０（または他の同種の要求）を受信すると、アプリケーション１２５を自動的に初期化するものである。アプリケーション１２５を初期化する他の周知の方法も本発明に利用可能であることは当然である。したがって、アプリケーション１２５を初期化するためのどんな特定の方法またはプロセスも、説明のためのものに過ぎず、明示的に特許請求されない限り、本発明の範囲を制限しあるいはその他の形で狭くすることを意味するものではない。
【００２４】
アプリケーション１２５がどのようにして初期化されるかに関係なく、前に述べたように、初期化されると、コンポーネントインターフェースを記述するメタデータ１６０がアクセスされる。そのメタデータ１６０は、動的ウェブサービス１７５がどのようにレガシーコンポーネント１３５と通信するかに関する情報である。言い換えると、メタデータ１６０は、特にレガシーコンポーネント１３５に対してどのコール１１５が必要か、レガシーコンポーネント１３５にどのパラメータ１１５を渡すべきか、パラメータ１１５をどんな順序で渡すべきか、並びに、例えば戻り値１２０をレガシーコンポーネント１３５から受信するかどうかを示すメッセージ交換パターンのうちの１つまたは複数のものを示す。すべてのコールがパラメータを含むものではないことに留意されたい。例えば、ＦｏｒｍａｔＡｌｌＡｖａｉｌａｂｌｅＤｉｓｋｓ（）のオペレーション、および他のコールはパラメータを何も必要としない。したがって、メタデータ１６０は、行われるべきコールのタイプに応じて、当然、レガシーコンポーネント１３５に渡すパラメータ１１５に対する詳細を持っていることも持っていないこともある。
【００２５】
いずれにせよ、メタデータ１６０にアクセスすると、ウェブサービスイニシャライザ１８０は、ウェブサービス記述１５０またはコントラクト（例えば、ＷＳＤＬ文書）を生成することができる。さらに、ウェブサービスイニシャライザ１８０は、ウェブサービス記述１５０を使用してランタイム中に動的ウェブサービス１７５を起動する。さらに、ウェブサービス記述１５０を、それと整合性のあるウェブサービスクライアント１４５を作成するために使用する必要のある場合もある。生成したウェブサービス記述１５０が動的ウェブサービス１７５を作成するために使用されているが、このようなイベントは本発明に重要なものではないことに留意されたい。言い換えると、メタデータ１６０にアクセスすると、ウェブサービスイニシャライザ１８０は、ウェブサービス記述１５０を使用せずに、自動的に、動的ウェブサービス１７５を生成することができる。したがって、動的ウェブサービス１７５を生成するためにウェブサービス記述１５０を使用することは、説明のために過ぎず、明示的に特許請求されない限り、本発明の範囲を制限しあるいはその他の形で狭くすることを意味するものではない。
【００２６】
動的ウェブサービス１７５が作成され、レガシーコンポーネント１３５がアクティブになった後、ウェブサービスクライアント１４５は、レガシーコンポーネント１３５によって提供されるサービスへのアクセスを求める要求１４０を出すことができる。その要求１４０は、レガシーコンポーネント１３５によって提供されるサービスを要求するためのオペレーション、および／または、もしあれば、レガシーコンポーネント１３５が必要とするパラメータ１１５などを含むことができる。要求１４０を受信すると、その要求に含まれるオペレーションに基づいて、動的ウェブサービス１７５はその要求１４０の内容を調べ、レガシーコンポーネント１３５に対して、（もしあれば）適切なパラメータを有する適切なコール１１５を行う。言い換えると、動的ウェブサービス１７５は、レガシーコンポーネント１３５と通信するために、共通のウェブサービス要求メッセージ１４０（例えば、ＸＭＬ文書）と、適切なコールおよび、もしあれば、要求されたパラメータ１１５との間で変換器（ｔｒａｎｓｌａｔｏｒ）として働く。
【００２７】
前に述べたように、適切なコールおよび、もしあれば、要求されたパラメータ１１５に加えて、動的ウェブサービス１７５は、レガシーコンポーネント１３５に対する適切なメッセージ交換パターンを知るように構成すべきである。その結果、戻り値１２０を要求された場合、動的ウェブサービス１７５は、このような戻り（ｒｅｔｕｒｎ）を予測する。次いで、この戻り値１２０は、動的ウェブサービス１７５によって生成される適切なウェブサービス応答１３０内にフォーマット化することができる。この実施例に対するメッセージ交換パターンは、要求／応答型であるが、他のメッセージ交換パターンもまた、本発明に利用可能であることに留意されたい。したがって、本明細書で記載されるどんな特定のタイプのメッセージ交換パターンの使用も説明のために過ぎず、明示的に特許請求されない限り、本発明の範囲を制限しあるいはその他の形で狭くすることを意味するものではない。
【００２８】
他の例示の実施形態は、アプリケーション１２５の終了シーケンスのものである。レガシーアプリケーション１２５が遮断または停止されると、例示の実施形態は、動的ウェブサービス１７５を終了させること、および、例えば、それをリサイクルビン１７０に送信することによりウェブサービス記述１５０を削除することを含む。したがって、ウェブサービス記述１５０が残ることはなく、かつ／または再使用されないので、レガシーコンポーネント１３５が変更された場合、または更新されたバージョンが提供された場合に不整合となることはない。
【００２９】
本発明はまた、レガシークライアント１０５もサポートすることに留意されたい。したがって、レガシークライアント１０５は、もしあれば、適切なパラメータ１１５を有する適切なコールを直接レガシーアプリケーション１２５に行うことができる。戻り値１２０（もしあれば）はまた、レガシーアプリケーション１２５からレガシークライアント１０５に直接送達することもできる。
【００３０】
本発明はまた、機能的なステップおよび／または非機能的な行為（ａｃｔｓ）を含む方法によって記述することができる。以下に示すのは、本発明の実行において実施できる諸ステップおよび／または行為の記述である。通常、機能的な諸ステップは、達成された結果の点から本発明を記述し、一方、非機能的な行為は、特定の結果を達成するためのより特定のアクションを記述する。機能的な諸ステップおよび／または非機能的な行為は、特定の順序で記述されまたは特許請求され得るが、本発明は、諸ステップおよび／または行為の特定の順序付けまたは組合せに必ずしも限定されない。さらに、特許請求の範囲の列挙において、また図２に対するフロー図の以下の説明において、諸ステップおよび／または行為は、このような用語の望ましい特定の使用を示すように使用するものとする。
【００３１】
図２は、本発明の様々な例示の実施形態に対する流れ図を示す。図２の以下の説明は、図１の対応する要素を時々参照する。その図から特有の要素を参照することができるが、このような要素は、説明のために使用されるに過ぎず、明示的に特許請求されない限り、本発明の範囲を制限しあるいはその他の形で狭くすることを意味するものではない。
【００３２】
図２は、ウェブサービス環境内で通信するように開発され、設計され、またはコード化されていないレガシーアプリケーションコンポーネントのために動的ウェブサービスを生成する方法２００に対するフロー図を示す。それらの実施形態により、管理イベントは、レガシーアプリケーションコンポーネントの初期化中に、動的ウェブサービスの生成をトリガすることができる。方法２００は、アプリケーションを初期化するための要求を受信する行為２０５を含む。例えば、サービス１１０は、アプリケーション１２５を初期化するための要求を受信することができる。アプリケーション１２５は、ウェブサービスアプリケーション、例えば、ウェブサービスクライアント１４５と通信するようには開発されていないレガシーコンポーネント１３５を含む。そのアプリケーションを初期化する要求は、ウェブサービスクライアント１４５からのウェブサービス要求メッセージ１４０に応答して、またはサービス１１０コンピューティング装置におけるユーザインターフェースからの入力に応答して受信することができる。
【００３３】
方法２００はまた、動的ウェブサービスを自動的に生成するためのステップ２２５を含む。ステップ２２５は、管理コンフィギュレーション設定が、レガシーコンポーネントに対する動的ウェブサービスを生成するように示していることを識別する行為２１０を含む。例えば、ウェブサービスイニシャライザ１８０は、アプリケーション１２５が初期化されるとレガシーコンポーネント１３５に対する動的ウェブサービス１７５が生成されることを確認するために、管理コンフィギュレーション設定１５５にアクセスすることができる。
【００３４】
管理コンフィギュレーション設定に基づき、ステップ２２５はさらに、レガシーコンポーネントと通信するためのインターフェースを記述するメタデータにアクセスする行為２１５を含む。例えば、管理コンフィギュレーション設定１５５に基づき、ウェブサービスイニシャライザ１８０は、カタログデータベース１６５から、コンポーネントインターフェースを記述するメタデータ１６０にアクセスすることができる。メタデータ１６０は、動的ウェブサービス１７５がレガシーコンポーネント１３５と通信するために使用する適切なコール１１５、パラメータ１１５、パラメータ１１５順序付け（ｏｒｄｅｒｉｎｇ）などを記述するべきである。コンポーネントインターフェースの記述１６０はまた、レガシーコンポーネント１３５に対するメッセージ交換パターンなどの情報を含むことができる。
【００３５】
最後に、ステップ２２５は、動的ウェブサービスを自動的に作成するためにメタデータを使用する行為２２０を含む。言い換えると、ウェブサービスイニシャライザ１８０は、動的ウェブサービス１７５を作成するために使用可能なウェブサービス記述１５０を作成することができる。このような一実施形態におけるウェブサービス記述は、ＷＳＤＬ文書とすることができる。
【００３６】
他の例示の実施形態は、ウェブサービスクライアント１４５からウェブサービス要求メッセージ１４０を受信するものである。ウェブサービス要求メッセージ１４０は、レガシーコンポーネント１３５によって提供されるサービスを要求するための様々なパラメータおよびオペレーションを含むことができる。ウェブサービス要求メッセージ１４０内の情報を用いて、動的ウェブサービス１７５は、レガシーコンポーネント１３５にレガシーコール１１５を行い、もしあれば、適切なパラメータ１１５を、さらなる処理のためにレガシーコンポーネント１３５に渡すことができる。
【００３７】
さらに他の例示の実施形態は、インターフェース記述１６０に基づき、レガシーコンポーネント１３５に対するメッセージ交換パターンを識別することが可能であり、その場合、ウェブサービスクライアント１４５に対する応答１３０が必要となる。その後、動的ウェブサービス１７５は、レガシーコンポーネント１３５から戻り値１２０を受信することができ、その場合、その動的ウェブサービス１７５は、戻り値１２０をウェブサービス応答メッセージ１３０中にフォーマット化する。したがって、次いでさらに処理するために、応答メッセージ１３０をウェブサービスクライアント１４５に送信することができる。通常、要求１４０および応答１３０は、ＸＭＬ文書であることに留意されたい。
【００３８】
さらに、他の例示の実施形態は、アプリケーション１２５を停止するための要求を受信する。アプリケーション１２５を停止するための要求に基づいて、動的ウェブサービス１７５も自動的に停止する。さらに、アプリケーション１２５が次に初期化されると新しい動的ウェブサービス１７５および新しいウェブサービス記述１５０が生成されるように、ウェブサービス記述１５０は削除される。
【００３９】
本発明の範囲に含まれる諸実施形態はまた、その上に記憶されたコンピュータ実行可能命令またはデータ構造を搬送しまたは有するコンピュータ読取り可能媒体を含む。このようなコンピュータ読取り可能媒体は、汎用または特定目的コンピュータによってアクセスできる任意の利用可能な媒体とすることができる。例として、それだけに限らないが、このようなコンピュータ読取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形式で所望のプログラムコード手段を搬送または記憶するのに使用可能な、また汎用もしくは特殊目的コンピュータによってアクセス可能な他の任意の媒体を含むことができる。情報がネットワークまたは他の通信接続（有線、無線、または有線もしくは無線の組合せ）を介して、コンピュータに転送もしくは提供された場合、コンピュータは、当然にその接続をコンピュータ読取り可能媒体として見る。したがって、このような接続もコンピュータ読取り可能媒体と呼ばれるのは当然である。上記の組合せもまた、コンピュータ読取り可能媒体の範囲に含まれるべきである。コンピュータ実行可能命令は、例えば、汎用コンピュータ、特定目的コンピュータ、または特定目的処理装置がある種の機能もしくは一群の機能を実施できるようにする命令およびデータを含む。
【００４０】
図３および以下の議論は、本発明を実施できる適切なコンピューティング環境の簡単で一般的な説明を提供することを意図している。必ずしも必要なことではないが、本発明は、ネットワーク環境中のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで記述される。一般に、プログラムモジュールは、特定のタスクを行う、あるいは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書に開示の方法の諸ステップを実行するためのプログラムコード手段の諸実施例を表す。このような実行可能命令または関連のデータ構造の特定のシーケンスは、このような諸ステップで記述される機能を実施するための対応する行為の実施例を表す。
【００４１】
当業者であれば、本発明は、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む多くのタイプのコンピュータシステムコンフィギュレーションを有するネットワークコンピューティング環境中で実施できることを理解されよう。本発明はまた、通信ネットワークを介して（有線リンク、無線リンク、または有線もしくは無線リンクの組合せによって）リンクされたローカルおよび遠隔の処理装置により、タスクが行われる分散コンピューティング環境中で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルと遠隔の両方のメモリ記憶装置中に配置することができる。
【００４２】
図３を参照すると、本発明を実施するための例示的なシステムは、処理装置３２１、システムメモリ３２２、およびシステムメモリ３２２を含む様々なシステムコンポーネントを処理装置３２１に結合するシステムバス３２３を含む従来のコンピュータ３２０の形式の汎用コンピューティング装置を含む。システムバス３２３は、メモリバスもしくはメモリ制御装置、周辺バス、および任意の様々なバスアーキテクチャを用いるローカルバスを含む任意のいくつかのタイプのバス構造とすることができる。システムメモリは、ＲＯＭ３２４、およびＲＡＭ３２５を含む。起動中などに、コンピュータ３２０内のエレメント間で情報を転送できるようにする基本ルーチンを含むＢＩＯＳ（基本入出力システム）３２６をＲＯＭ３２４に記憶することができる。
【００４３】
コンピュータ３２０はまた、磁気ハードディスク３３９から読み取りおよび書き込むための磁気ハードディスクドライブ３２７と、取外し可能磁気ディスク３２９から読み取りまたは書き込むための磁気ディスクドライブ３２８と、ＣＤ−ＲＯＭもしくは他の光媒体などの取外し可能光ディスク３３１から読み取りまたは書き込むための光ディスクドライブ３３０とを含むことができる。磁気ハードディスクドライブ３２７、磁気ディスクドライブ３２８、および光ディスクドライブ３３０は、ハードディスクドライブインターフェース３３２、磁気ディスクドライブインターフェース３３３、および光ドライブインターフェース３３４によって、それぞれ、システムバス３２３に接続されている。ドライブおよびそれに関連するコンピュータ読取り可能媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびコンピュータ３２０に対する他のデータの不揮発性ストレージを提供する。本明細書に記載の例示の実施形態は、磁気ハードディスク３３９、取外し可能磁気ディスク３２９、および取外し可能光ディスク３３１を使用するが、磁気カセット、フラッシュメモリカード、ＤＶＤ、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含む、データを記憶する他のタイプのコンピュータ読取り可能媒体を使用することもできる。
【００４４】
オペレーティングシステム３３５、１つまたは複数のアプリケーションプログラム３３６、他のプログラムモジュール３３７、およびプログラムデータ３３８を含む１つまたは複数のプログラムモジュールを含むプログラムコード手段は、ハードディスク３３９、磁気ディスク３２９、光ディスク３３１、ＲＯＭ３２４もしくはＲＡＭ３２５上に記憶することができる。ユーザは、キーボード３４０、ポインティング装置３４２、またはマイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどの他の入力装置（図示せず）を介してコンピュータ３２０にコマンドおよび情報を入力することができる。これらのおよび他の入力装置は、システムバス３２３に結合されたシリアルポートインターフェース３４６を介して処理装置３２１に接続されることが多い。あるいは、入力装置は、パラレルポート、ゲームポート、またはＵＳＢなどの他のインターフェースによって接続することもできる。モニタ３４７または他の表示装置はまた、ビデオアダプタ３４８などのインターフェースを介してシステムバス３２３に接続されている。モニタに加えて、パーソナルコンピュータは、通常、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）を含む。
【００４５】
コンピュータ３２０は、遠隔コンピュータ３４９ａおよび３４９ｂなどの１つまたは複数の遠隔コンピュータへの論理接続を用いてネットワーク化環境中において動作することができる。遠隔コンピュータ３４９ａおよび３４９ｂは、それぞれ別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置もしくは他の共通のネットワークノードとすることができ、また図３では、メモリ記憶装置３５０ａ、３５０ｂおよびそれに関連するアプリケーションプログラム３３６ａ、３３６ｂだけが示されているが、通常、コンピュータ３２０に関する上記要素の多くまたはすべてを含むことができる。図３に示された論理接続は、限定するのではなく、例としてここに提示したＬＡＮ３５１、およびＷＡＮ３５２を含む。このようなネットワーク化環境は、オフィス規模、または企業規模のコンピュータネットワーク、イントラネット、およびインターネットで普通のものである。
【００４６】
ＬＡＮネットワーク化環境で使用した場合、コンピュータ３２０は、ネットワークインターフェースまたはアダプタ３５３を介してローカルネットワーク３５１に接続される。ＷＡＮネットワーク化環境で使用した場合、コンピュータ３２０は、モデム３５４、無線リンク、またはインターネットなどの広域ネットワーク３５２を介して通信を確立する他の手段を含むことができる。モデム３５４は、内蔵または外付けのものとすることができるが、シリアルポートインターフェース３４６を介してシステムバス３２３に接続されている。ネットワーク化環境では、コンピュータ３２０に関して示したプログラムモジュール、またはその部分を、遠隔のメモリ記憶装置に記憶することができる。図示されたネットワーク接続は例示のものであり、広域ネットワーク３５２を介して通信を確立する他の手段を使用できることも理解されたい。
【００４７】
本発明は、その趣旨または本質的な特性から逸脱することなく、他の特定の形態で実施することもできる。上記の諸実施形態は、すべての点において、説明のためだけのものであり限定するものではないと見なすべきである。したがって、本発明の範囲は、上記の説明によるのではなく、添付の特許請求の範囲によって示される。特許請求の範囲の等価的な意味および範囲に含まれる変更はすべて、その範囲内に含まれるものとする
【図面の簡単な説明】
【００４８】
【図１】本発明の例示的な諸実施形態による動的ウェブサービスを作成するように構成された分散システムを示す図である。
【図２】本発明の例示的な諸実施形態によるレガシーアプリケーションコンポーネントのために動的ウェブサービスを生成する方法のフロー図である。
【図３】本発明のための適切なオペレーティング環境を提供する例示のシステムを示す図である。
【符号の説明】
【００４９】
１１０  サービス
１１５  コールまたはパラメータ
１２５  アプリケーション
１６０  メタデータ
１７０  リサイクルビン
【図１】
2006252536.tif 000005
【図２】
2006252536.tif 000006
【図３】
2006252536.tif 000007