(57)【要約】【課題】サービス提供時に行われる検索の条件判定をサービスごとにきめ細かく柔軟に行なうことを目的とする。【解決手段】ネットワークに接続するネットワーク手段と、サービスを他のノードに提供するためのサービス登録手段と、登録手段によって登録されているサービスを利用するために検索するサービス検索手段からなるサービス提供システムにおいて、サービス登録時に登録するサービスに対する検索手段の存在する場所を指定することができる検索場所指定手段を備えるよう構成する。【選択図】        図１
2004185335.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続するネットワーク手段と、サービスを他のノードに提供するためのサービス登録手段と、該登録手段によって登録されているサービスを利用するために検索するサービス検索手段からなるサービス提供システムにおいて、
登録するサービスに対する該検索手段の存在する場所を指定することができる検索場所指定手段を備えることを特徴としたサービス提供システム。
【請求項２】
共通の該検索手段を使用する検索条件と該検索場所指定手段にて指定された場所に存在する該検索手段を使用する検索条件を別々に指定することを特徴とした請求項１のサービス提供システム。
【請求項３】
ネットワークに接続し、サービスを他のノードに提供するため登録し、登録されているサービスを利用するために検索することのできるサービス提供方式において、
登録するサービスに対する検索を行なう場所を指定することができることを特徴としたサービス提供方式。
【請求項４】
共通の検索を行なう検索条件と指定された場所検索する検索条件を別々に指定することを特徴とした請求項３のサービス提供方式。
【請求項５】
請求項３の方式を実現するソフトウェアを格納した媒体。
【請求項６】
請求項４の方式を実現するソフトウェアを格納した媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上で検索条件を提示して複数のサービスから所望のサービスを検索し、サービス提供者を照会するサーバーに関する。
【０００２】
【従来の技術】
近年、ネットワークに対してサービスを提供するサービス提供者を設けて、それらの提供しているサービスをネットワーク上で検索または探索し、利用者がそれらサービス提供者の提供しているサービスを利用できるようにするシステムが開発されている。それらはＪｉｎｉ（注：Ｊｉｎｉは米国その他における米国Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社の商標である）、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）、ＳＬＰ（Ｓｅｒｖｉｃｅ  Ｌｏｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）などを使用してサービス提供を行っている。
【０００３】
ここでは、その代表例としてＪｉｎｉにおけるサービスの登録、検索、利用方法を述べる。
【０００４】
図２−１、図２−２、図２−３、図２−４はＪｉｎｉにおいてどのようにサービスが提供されるかを示す図である。これらの図で、２０１０はインターネットに代表されるネットワークでネットワークプロトコルであるＴＣＰ／ＩＰによって制御されている。２０２０はサービスをネットワークに接続されている他のノードに対して提供するサービス提供者、２０３０はサービスを登録・検索するサービスを提供するＬｏｏｋｕｐサーバー、２０４０はサービスを利用するクライアント、２０５０はクライアントにおいてサービス提供者の代理として実行される代理オブジェクト、２０６０はサービスを検索するのに用いられるサービスの持つ機能を表すサービス属性である。
【０００５】
（１）Ｌｏｏｋｕｐサービスの検索
ネットワーク上にはサービスを登録しておくＬｏｏｋｕｐサーバー２０３０と呼ばれるサーバーが稼動している。このサーバーは各サービス提供者２０２０およびサービス利用者であるクライアント２０４０に対して、サービスの登録、検索をサービス（Ｌｏｏｋｕｐサービスと呼ぶ）として提供している。
【０００６】
サービス提供者２０２０やクライアント２０４０がネットワーク上でＬｏｏｋｕｐサーバーを見つけるために使用するネットワークプロトコルであるＤｉｓｃｏｖｅｒｙプロトコルが規定されている。このＤｉｓｃｏｖｅｒｙプロトコルは、ＴＣＰ／ＩＰのマルチキャスト・プロトコルとして規定されており、ネットワーク上の複数のノードに対して同報される。
【０００７】
このＤｉｓｃｏｖｅｒｙプロトコルメッセージを受け取ったＬｏｏｋｕｐサーバー２０３０は、メッセージを送ってきたノードに対して、応答メッセージを送り返す。その応答メッセージは、サービスを登録・検索するサービスとして機能するよう設計されたＪａｖａ言語（登録商標）のインタフェース（ＳｅｒｖｉｃｅＲｅｇｉｓｔｒａｒ）を実装したクラスオブジェクトを内包している。
【０００８】
Ｊａｖａは米国およびその他の地域における米国Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社の商標である。
【０００９】
応答メッセージを受信したサービス提供者２０２０、クライアント２０４０は応答メッセージからＳｅｒｖｉｃｅＲｅｇｉｓｔｒａｒ実装オブジェクトを取り出し、サービス登録・検索サービスを提供するＬｏｏｋｕｐサーバーの代理オブジェクトとして使用する。
【００１０】
（２）サービスの登録
図３−２はサービスの登録の方法を示している。
【００１１】
サービス提供者２０２０が自分の提供するサービスを登録するには、Ｌｏｏｋｕｐサービス代理オブジェクトを使用する。
【００１２】
Ｌｏｏｋｕｐサービス代理オブジェクトは、サービス登録のための手段としてｒｅｇｉｓｔｅｒメソッドを実装している。このｒｅｇｉｓｔｅｒメソッドにクライアントにサービスを提供するためにクライアント側で代理オブジェクトとして実行される代理オブジェクト２０５０と、提供するサービスの機能等を表現しているサービス属性２０６０を引数として渡すと、代理オブジェクト２０５０とサービス属性２０６０は、Ｌｏｏｋｕｐサーバー２０３０に送信される。Ｌｏｏｋｕｐサーバー２０３０は、それら代理オブジェクト２０５０とサービス属性２０６０を、クライアントからの要求にしたがって提供できるよう保持・管理する。
【００１３】
このｒｅｇｉｓｔｅｒメソッドがどのようなプロトコルによって代理オブジェクト２０５０、サービス属性２０６０を送るかはＪｉｎｉでは規定されておらず、ＳｅｒｖｉｃｅＲｅｇｉｓｔｒａｒの実装に任されている。
【００１４】
（３）サービスの検索
図３−３はサービスの検索の方法を示している。クライアント２０４０が利用するサービスを検索・取得するには、Ｌｏｏｋｕｐサービス代理オブジェクトを使用する。
【００１５】
Ｌｏｏｋｕｐサービス代理オブジェクトは、サービス検索・取得のための手段としてｌｏｏｋｕｐメソッドを実装している。このｌｏｏｋｕｐメソッドにサービスを提供するためにクライアント側で代理オブジェクトとして実行される代理オブジェクト２０５０を識別しそれらの機能を提供するプログラムインタフェースを規定するＪａｖａ言語のインタフェースと、利用したいサービスの属性を検索条件として組み込まれたテンプレートオブジェクトを引数として渡す。このテンプレートはＬｏｏｋｕｐサーバー２０３０に送信される。
【００１６】
Ｌｏｏｋｕｐサーバー２０３０は、保持・管理しているサービス代理オブジェクト２０５０、サービス属性２０６０の中から、送られてきたテンプレートの条件に合致する代理オブジェクト２０５０を探し出す。探し出された代理オブジェクト２０５０は、ｌｏｏｋｕｐメソッドの戻り値としてクライアント２０４０に返される。
【００１７】
このｌｏｏｋｕｐメソッドがどのようなプロトコルによってテンプレートおよび代理オブジェクト２０５０を送るかはＪｉｎｉでは規定されておらず、ＳｅｒｖｉｃｅＲｅｇｉｓｔｒａｒの実装に任されている。
【００１８】
（４）サービスの利用
図２−４はサービスの利用方法を示している。クライアント２０４０がサービスを利用するには、代理オブジェクト２０５０を使用する。Ｊｉｎｉにおいては、サービスを利用するためのプログラム／インタフェースとして、Ｊａｖａ言語のインタフェースが規定されている。代理オブジェクト２０５０は、この決められたＪａｖａ言語インタフェースを実装している。クライアントはこのインタフェースで提供されるメソッドを使用してサービスを受けることができる。
【００１９】
この決められたインタフェースをどのように実装するかはサービス提供者にゆだねられており、そのＪａｖａ言語インタフェースの実装方法にクライアントのプログラミングが影響を受けることはない。
【００２０】
また、サービスを利用する際にはＬｏｏｋｕｐサーバー２０３０はまったく関与しない。
【００２１】
【発明が解決しようとする課題】
前記従来例では、サービスの検索を行なう際の属性の合致性判定は以下のようにして行なわれる。
【００２２】
テンプレートとして渡された属性を表現するクラスの１つの属性を表すのに使用されるフィールド変数がｎｕｌｌの場合は、登録されているサービスの属性がどのようなものであろうと合致しているものとみなされる。すなわちｎｕｌｌはいわゆるワイルドカードとして機能する。
【００２３】
ｎｕｌｌ以外の値が指定されている場合は、その値を属性値と持つものしか合致しているとはみなされない。
【００２４】
したがって、ある範囲内に属性値が存在するサービスを選択しようとすると、その属性値に対するテンプレートではｎｕｌｌを設定しておいて、他の条件に合致するサービスをすべて受け取り、その中から当該範囲内に値を持つものをクライアント側で探す必要がある。
【００２５】
合致するサービスが多数ネットワーク上に存在している場合、多くの不必要なサービスをサーバーからダウンロードしなければならず、場合によってはネットワークやクライアントコンピュータの資源を無駄に使うことになりかねない。
【００２６】
【課題を解決するための手段】
ネットワークに接続するネットワーク手段と、サービスを他のノードに提供するためのサービス登録手段と、登録手段によって登録されているサービスを利用するために検索するサービス検索手段からなるサービス提供システムにおいて、登録するサービスに対する検索手段の存在する場所を指定することができる検索場所指定手段を備えるよう構成する。
【００２７】
また、サービス提供システムを共通の検索手段を使用する検索条件と検索場所指定手段にて指定された場所に存在する検索手段を使用する検索条件を別々に指定できるよう構成する。
【００２８】
【発明の実施の形態】
以下、図を参照して本発明の実施の形態を説明する。
【００２９】
（第１の実施形態）
第１の実施形態は従来例で説明したＪｉｎｉを利用して実施したものである。全体のシステム構成は、図２−１で表される。システムの挙動は従来例で説明したとおりである。
【００３０】
図１はＬｏｏｋｕｐサーバー２０３０上で実行されるソフトウェアの構成を表した図である。同図において、１０１０はインターネットとつながって、クライアント２０４０、サービス提供者２０２０との通信を行なうネットワーク管理部、１０２０はＬｏｏｋｕｐサーバーで管理するサービスを管理しているサービス管理部、１０３０はサービス管理部が管理しているサービスを記憶しておくための記憶部である。
【００３１】
図３はサービス提供者２０２０がサービスをＬｏｏｋｕｐサーバー２０３０に登録する際に使用するクラスの定義である。（ａ）は従来例で使用されているＳｅｒｖｉｃｅＩｔｅｍクラスの定義であり、（ｂ）は本実施形態で使用するＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍクラスの定義である。ＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍクラスはＳｅｒｖｉｃｅＩｔｅｍクラスを継承したクラスとして定義されている。サービス提供者２０２０がサービスを登録すると、Ｌｏｏｋｕｐサーバー２０３０の記憶部１０３０には、このＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍクラスオブジェクトが格納される。
【００３２】
ＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍ．ｒｅｍｏｔｅＣｏｍｐａｒｅＡｔｔｒｉｂｕｔｅＳｅｔｓには、図８に示されるような属性を表現するＥｎｔｒｙのサブクラスを設定してあるものとする。このサブクラスは継承しているクラスが定義しているフィールドのフィールド名に“Ｓｕｐｐｏｒｔｅｄ”を追加したものを名前とするフィールドを持ち、それらのフィールドが図７で示すＲａｎｇｅ型もしくは、Ｊａｖａ言語のＣｏｌｌｌｅｃｔｉｏｎ型で定義されていることを前提とする。Ｒａｎｇｅ型は大小関係を持つＣａｍｐａｒａｂｌｅクラスのオブジェクトのサポート範囲を管理するもので、ａｄｄメソッドで範囲を追加し、ｃｏｎｔａｉｎｓメソッドで指定したオブジェクトがＲａｎｇｅが管理している範囲内に存在するかどうかを調べるためのクラスである。Ｃｏｌｌｅｃｔｉｏｎはオブジェクトのグループを表すもので、オブジェクトがそのＣｏｌｌｅｎｃｔｉｏｎないに存在するかどうかをｃｏｎｔａｉｎｓメソッドで調べることができる。
【００３３】
ＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍクラスのｃｏｍｐａｒｉｓｏｎＳｉｔｅフィールドには、ｒｅｍｏｔｅＣｏｍｐａｒｅＡｔｔｒｉｂｕｔｅＳｅｔｓフィールドに設定されているＥｎｔｒｙオブジェクトの配列に設定されている属性を比較するのに使用するプログラムを示すＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）である。このＵＲＬが示す場所には、図４で示すインタフェースを持ったＪａｖａのＲＭＩ（Ｒｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ）による分散オブジェクトが存在するよう構成しておく。分散オブジェクトの存在する場所は、サービス提供者２０２０が設置しているサーバー上でもよいし、第三者の設置しているサーバーでもよい。
【００３４】
図５に示すフローチャートは、クライアント２０４０がＬｏｏｋｕｐサーバー２０３０にサービスの検索を依頼したときに、Ｌｏｏｋｕｐサーバー２０３０上で行なわれる処理のフローを示したものである。
【００３５】
以下、図５を用いて、Ｌｏｏｋｕｐサーバー２０３０での処理を説明する。クライアント２０４０からは図６で示すＳｅｒｖｉｃｅＴｅｍｐｌａｔｅクラスのオブジェクトで検索すべきサービスが指定される。
【００３６】
Ｌｏｏｋｕｐサーバー２０３０の記憶部１０３０に格納されているすべてのＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍクラスオブジェクトに対して以下の処理を行ない、クライアント２０４０が所望のサービスを検索する。
【００３７】
最初にＳｔｅｐ５０１０において、通常の検索を行なう。通常の検索とはＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍ．ｓｅｒｖｉｃｅがＳｅｒｖｉｃｅＴｅｍｐｌａｔｅ．ｓｅｒｖｉｃｅＴｙｐｅｓで指定されるサービスをすべて実装していて、ＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍ．ｏｒｄｉｎａｒｙＡｔｔｒｉｂｕｔｅＳｅｔｓで示される属性群がＳｅｒｖｉｃｅＴｅｍｐｌａｔｅ．ａｔｔｒｉｂｕｔｅＳｅｔＴｅｍｐｌａｔｅｓで示される属性と合致するときにそのＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍを検索候補とすることである。
【００３８】
Ｓｔｅｐ５０２０において、ＳｅｒｖｉｃｅＴｅｍｐｌａｔｅ．ａｔｔｒｉｂｕｔｅＳｅｔＴｅｍｐｌａｔｅｓに比較されていない属性が残っているかどうかを調べる。残っていない場合Ｓｔｅｐ５０７０に進み、残っている場合Ｓｔｅｐ５０３０に進む。
【００３９】
Ｓｔｅｐ５０３０において、ＥｎｈａｎｃｅｄＳｅｒｉｖｅＩｔｅｍ．ｃｏｍｐａｒｉｓｏｎＳｉｔｅが設定されているかを調べる。設定されていればＳｔｅｐ５０４０に進み、そうでなければ次のＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍを調べる。
【００４０】
Ｓｔｅｐ５０４０において、ＳｅｒｖｉｃｅＴｅｍｐｌａｔｅで指定された属性のうち比較されていない属性で、ＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍ．ｒｅｍｏｔｅＣｏｍｐａｒｅＡｔｔｒｉｂｕｔｅＳｅｔｓに設定されていないものがあるかを調べる。ある場合、調べているサービスは条件に合致しないものとして次のＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍを調べる。そうでなければ、Ｓｔｅｐ５０５０に進む。
【００４１】
Ｓｔｅｐ５０５０において、ＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍ．ｃｏｍｐａｒｉｓｏｎＳｉｔｅが指定している場所から、図４で示すインタフェースを実装したＲＭＩスタブをダウンロードする。
【００４２】
Ｓｔｅｐ５０６０において、Ｓｔｅｐ５０５０にてダウンロードしたＲＭＩスタブのｃｏｍｐａｒｅメソッドのｔｅｍｐｌａｔｅパラメータにＳｅｒｖｉｃｅＴｅｍｐｌａｔｅ．ａｔｔｒｉｂｕｔｅＳｅｔＴｅｍｐｌａｔｅｓに設定されているオブジェクトを、ｒｅｓｅｒｖｅｄパラメータにｔｅｍｐｌａｔｅパラメータに設定したオブジェクトのサブクラスでＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍ．ｒｅｍｏｔｅＣｏｍｐａｒｅＡｔｔｒｉｂｕｔｅＳｅｔｓに設定されているものを渡して呼び出す。ｃｏｍｐａｒｅメソッドはｒｅｓｅｒｖｅｄパラメータで設定されたクラスのフィールドとして指定されているＲａｎｇｅもしくはＣｏｌｌｅｃｔｉｏｎ内にｔｅｍｐｌａｔｅで指定したクラスのフィールドのオブジェクトが存在しているかどうかを調べ、存在していれば真の値を存在していなければ偽の値を返す。
【００４３】
ＳｅｒｖｉｃｅＴｅｍｐｌａｔｅ．ａｔｔｒｉｂｕｔｅＳｅｔＴｅｍｐｌａｔｅｓに指定されている未比較の属性がＥｎｈａｎｃｅｄＳｅｒｖｉｅｃＩｔｅｍ．ｒｅｍｏｔｅＣｏｍｐａｒｅＡｔｔｒｉｂｕｔｅＳｅｔｓに登録されている属性の表現している範囲内にあるときにはＳｔｅｐ５０７０に進む。そうでなければ次のＥｎｈａｎｃｅｄＳｅｒｖｉｃｅＩｔｅｍを調べる。
【００４４】
すべてのサービスが調査し終わった後、リストに残ったサービスを検索結果として返す。
【００４５】
以上の実施形態では、Ｌｏｏｋｕｐサーバー２０３０に属性を登録して別のサイトに属性のみを渡して比較を行なったが、比較サイトにおいてサービスの属性を管理し、サービスを特定するＳｅｒｖｉｃｅＩＤとＳｅｒｖｉｃｅＴｅｍｐｌａｔｅで指定された属性のみを比較サイトに送り比較するよう構成することもできる。
【００４６】
また、本実施形態ではサービス登録時に比較サイトを指定したが、検索時に指定することも可能である。
【００４７】
【発明の効果】
サービスを検索するための条件検索において、各サービスの特徴、実装などに立脚した検索方法を採用することができるため、木目細やかで柔軟で効率的な検索を提供することができる。
【図面の簡単な説明】
【図１】第１の実施形態のソフトウェア構成図
【図２−１】従来例におけるサービス登録
【図２−２】従来例におけるサービス登録
【図２−３】従来例におけるサービス登録
【図２−４】従来例におけるサービス登録
【図３】ＳｅｒｖｉｃｅＩｔｅｍの拡張
【図４】リモート比較オブジェクトインタフェース
【図５】処理フロー
【図６】ＳｅｒｖｉｃｅＴｅｍｐｌａｔｅクラス
【図７】Ｒａｎｇｅインタフェース
【図８】属性を表現するＥｎｔｒｙの設定サブクラス。
【符号の説明】
１０１０    ネットワーク管理部
１０２０    サービス管理部
１０３０    記憶部
２０１０    ネットワーク
２０２０    サービス提供者
２０３０    Ｌｏｏｋｕｐサーバー
２０４０    クライアント
２０５０    代理オブジェクト
２０６０    サービス属性
【図１】
2004185335.tif 000003
【図２−１】
2004185335.tif 000004
【図２−２】
2004185335.tif 000005
【図２−３】
2004185335.tif 000006
【図２−４】
2004185335.tif 000007
【図３】
2004185335.tif 000008
【図４】
2004185335.tif 000009
【図５】
2004185335.tif 000010
【図６】
2004185335.tif 000011
【図７】
2004185335.tif 000012
【図８】
2004185335.tif 000013