説明

HttpServiceを用いたサービス登録装置、コンテンツ登録装置、サービス登録方法、コンテンツ登録方法、プログラム及び記録媒体

【課題】サービスを利用して登録したコンテンツに対してネットワークインタフェース毎にアクセス制御を可能にする。
【解決手段】サービス実装提供機能11がHttp Serviceに対応するHTTPサーバを起動する際に、ネットワークインタフェースをバインドしてHTTPサーバを起動することにより、HTTPサーバはバインドしたネットワークインタフェース経由のアクセスに対してのみコンテンツを公開することになるので、Http Serviceを利用してコンテンツを登録するバンドルは、ネットワークインタフェース毎のアクセス制御が可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、公開するコンテンツを登録するためのHttp ServiceをOSGiフレームワークのサービスレジストリに登録する技術に関する。
【背景技術】
【0002】
OSGi(Open Service Gateway initiative)フレームワークは、ソフトウェアコンポーネントの動的追加、削除、あるいは実行を管理する枠組みである。OSGiフレームワーク上で動作するソフトウェアコンポーネントの単位をバンドルと呼ぶ。バンドルはJava(登録商標)で書かれたプログラムであり、JAR(Java Archive)形式の圧縮ファイルである。バンドルは、例えばネットワークを介して配信される。バンドルは、OSGiフレームワークを実装した機器により受信されて実行される。
【0003】
OSGi仕様では、Release1からHttp ServiceというOSGiサービス仕様が定義されている。Http Serviceは、HTTPサーバおよびその上で動作するJava Servletコンテナを提供する。バンドルは、Http Serviceで定義されたメソッドを用い、HTTPサーバに対してHTMLファイルや画像などのリソースやJava Servletの登録を動的に行うことが可能である。バンドルがHttp Serviceで定義されたメソッドを用いて登録したリソースやJava Servletは、Http Serviceが提供するHTTPサーバによりHTTPプロトコルに従って公開される。
【0004】
図16に、従来のサービス登録装置の構成を示すブロック図を示す。同図に示すサービス登録装置100は、サービス実装提供機能110、サービスプロパティ作成機能120、サービス登録機能130、およびサービスレジストリ140を備える。以下、Http Service実装オブジェクトを登録する処理について説明する。
【0005】
まず、サービス実装提供機能110が、Http Serviceインタフェースを実装したオブジェクトを作成するとともに、サービスプロパティ作成機能120が、ポート番号などの設定を記述したサービスプロパティを作成し、サービス実装提供機能110が、HTTPサーバを起動する。これらの処理は平行して行われるが、HTTPサーバの起動時期を遅らせてもよい。
【0006】
続いて、サービス実装提供機能110は、作成したHttp Service実装オブジェクトへの参照をサービス登録機能130へ渡し、サービスプロパティ作成機能120は、作成したサービスプロパティをサービス登録機能130へ渡す。このとき渡すサービスプロパティはnullであってもよい。
【0007】
サービス登録機能130は、受け取ったHttp Service実装オブジェクトへの参照にサービスプロパティを付与し、OSGiフレームワークのBundleContextインタフェースのメソッドを呼び出すことにより、サービスレジストリにサービスを登録する。
【0008】
次に、バンドル200がHttp Serviceを利用してコンテンツを登録する処理について説明する。図16に示すように、バンドル200は、サービス取得機能210およびコンテンツ登録機能220を有する。ここでは、リソースやJava Servletなどをまとめてコンテンツと呼ぶ。
【0009】
まず、サービス取得機能210が、OSGiの仕様に沿った方式、つまり、BundleContextインタフェースのメソッドを用いて、サービス名を指定することによりサービスレジストリ140に登録されたHttp Service実装オブジェクトを取得し、コンテンツ登録機能220に渡す。
【0010】
コンテンツ登録機能220は、渡されたHttp Service実装オブジェクトのメソッドを呼ぶことでコンテンツの登録を行う。より具体的には、コンテンツとそのコンテンツのHTTPサーバ上でのアクセス先を示すaliasを指定してHttp Serviceインタフェースのメソッドを呼びコンテンツ登録の要求を出す。
【0011】
サービス実装提供機能110は、Http Serviceインタフェースを介してコンテンツ登録の要求を受け付けると、指定のaliasにアクセスした場合に該当するコンテンツを返すようにHTTPサーバを設定する。これにより、HTTPクライアント300がHTTPサーバに対してHTTPプロトコルによるアクセスをすると、サービス実装提供機能110がそのアクセスを受け付けてコンテンツを返す状態となる。該当するコンテンツが存在しない場合は、HTTPプロトコルに従ったエラーコードを返す。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】OSGi, "OSGi Service Platform: Release 3, March 2003", 2003年3月
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、サービス登録装置100が複数のネットワークインタフェースを有するときに、Http Serviceを利用してコンテンツを登録した場合、複数のネットワークインタフェースからのアクセスに対して公開されてしまう。つまり、Http Serviceを利用して登録したコンテンツを、特定のネットワークインタフェースからのアクセスに対してのみ公開させ、そのネットワークインタフェース以外からのアクセスに対しては公開させない、という公開制限を行うことができないという問題がある。より具体的に説明すると、例えば、LAN側とWAN側のネットワークインタフェースを有するホームゲートウェイ装置がサービス登録装置100を備えるものであって、LAN側に対してのみ公開したいコンテンツを含むバンドル200がサービス登録装置100のHttp Serviceを利用してコンテンツを登録した場合、WAN側からもバンドル200が登録したコンテンツにアクセスできてしまうという問題がある。この問題の解決手段の一つとして、バンドル200が登録するServletが、リクエストを送ってきたHTTPクライアント300のIPアドレスやFQDN(Fully Qualified Domain Name)を取得し、個別にアクセス制限を行うことは可能であるが、Servlet実装のプログラムが複雑化するという問題がある。
また,HTMLファイルや画像など静的なコンテンツであるリソースに関しては、コンテンツの公開先を制限することは不可能である。
【0014】
本発明は、上記に鑑みてなされたものであり、サービスを利用して登録したコンテンツに対してネットワークインタフェース毎にアクセス制御を可能にすることを目的とする。
【課題を解決するための手段】
【0015】
第1の本発明に係るサービス登録装置は、コンテンツを公開するサーバがアクセスを受け付けるネットワークインタフェースを選択するネットワークインタフェース選択手段と、選択された前記ネットワークインタフェースに割り当てられたIPアドレス宛のアクセスを受け付けるように前記サーバを起動するサーバ起動手段と、前記サーバにより公開されるコンテンツの登録を受け付けるサービスを生成するサービス生成手段と、前記サービスの設定及び前記ネットワークインタフェースの情報を記載したサービスプロパティを生成するプロパティ生成手段と、前記サービスに前記サービスプロパティを付与してサービスレジストリに登録するサービス登録手段と、を有することを特徴とする。
【0016】
上記サービス登録装置において、前記サービス登録手段は、前記サーバの起動の完了を待たずに前記サービスをサービスレジストリに登録することを特徴とする。
【0017】
上記サービス登録装置において、前記サーバ起動手段は、前記サービスがコンテンツの登録を受け付けたときに前記サーバを起動することを特徴とする。
【0018】
上記サービス登録装置において、前記サービスと当該サービスに対応する前記サーバがアクセスを受け付けるネットワークインタフェースの情報との対応を記憶する情報管理手段を有し、前記サーバ起動手段は、前記情報管理手段から前記ネットワークインタフェースの情報を読み出して当該ネットワークインタフェース経由のアクセスのみを受け付けるように前記サーバを起動することを特徴とする。
【0019】
上記サービス登録装置において、前記サーバがアクセスを受け付けるネットワークインタフェースに割り当てられたIPアドレスの変更を検出し、前記ネットワークインタフェースに割り当てられたIPアドレスに変更があった場合には、新しいIPアドレス宛のアクセスを受け付けるように前記サーバを再起動することを特徴とする。
【0020】
第2の本発明に係るコンテンツ登録装置は、サービス登録装置に登録されたサービスを取得してコンテンツを登録するコンテンツ登録装置であって、前記コンテンツを公開するネットワークインタフェースを選択するネットワークインタフェース選択手段と、選択した前記ネットワークインタフェースの情報に基づいて前記サービス登録装置から所望のサービスを検索するための条件検索式を作成する条件検索式作成手段と、前記条件検索式を用いて前記サービス登録装置から前記サービスを取得するサービス取得手段と、取得した前記サービスを用いて前記コンテンツを登録するコンテンツ登録手段と、を有することを特徴とする。
【0021】
第3の本発明に係るサービス登録方法は、コンテンツを公開するサーバがアクセスを受け付けるネットワークインタフェースを選択するステップと、選択された前記ネットワークインタフェースに割り当てられたIPアドレス宛のアクセスを受け付けるように前記サーバを起動するステップと、当該サーバにより公開されるコンテンツの登録を受け付けるサービスを生成するステップと、前記サービスの設定及び前記ネットワークインタフェースの情報を記載したサービスプロパティを生成するステップと、前記サービスに前記サービスプロパティを付与してサービスレジストリに登録するステップと、を有することを特徴とする。
【0022】
上記サービス登録方法において、前記サーバの起動の完了を待たずに前記サービスをサービスレジストリに登録することを特徴とする。
【0023】
上記サービス登録方法において、前記サービスがコンテンツの登録を受け付けたときに前記サーバを起動することを特徴とする。
【0024】
上記サービス登録方法において、前記サービスと当該サービスに対応する前記サーバがアクセスを受け付けるネットワークインタフェースの情報との対応を記憶する情報管理手段から前記ネットワークインタフェースの情報を読み出して当該ネットワークインタフェース経由のアクセスのみを受け付けるように前記サーバを起動することを特徴とする。
【0025】
上記サービス登録方法において、前記サーバがアクセスを受け付けるネットワークインタフェースに割り当てられたIPアドレスの変更を検出するステップと、前記ネットワークインタフェースに割り当てられたIPアドレスに変更があった場合には、新しいIPアドレス宛のアクセスを受け付けるように前記サーバを再起動するステップと、を有することを特徴とする。
【0026】
第4の本発明に係るコンテンツ登録方法は、サービス登録装置に登録されたサービスを取得してコンテンツを登録するコンテンツ登録方法であって、前記コンテンツを公開するネットワークインタフェースを選択するステップと、選択した前記ネットワークインタフェースの情報に基づいて前記サービス登録装置から所望のサービスを検索するための条件検索式を作成するステップと、前記条件検索式を用いて前記サービス登録装置から前記サービスを取得するステップと、取得した前記サービスを用いて前記コンテンツを登録するステップと、を有することを特徴とする。
【0027】
第5の本発明に係るプログラムは、上記サービス登録装置又は上記コンテンツ登録装置を構成する各手段としてコンピュータを機能させることを特徴とする。
【0028】
第6の発明に係る記録媒体は、上記プログラムを記録したことを特徴とする。
【発明の効果】
【0029】
本発明によれば、サービスを利用して登録したコンテンツに対してネットワークインタフェース毎にアクセス制御が可能になる。
【図面の簡単な説明】
【0030】
【図1】第1の実施の形態におけるサービス登録装置の構成を示すブロック図である。
【図2】第1の実施の形態においてサービスを登録する処理の流れを示すフローチャートである。
【図3】第1の実施の形態においてバンドルがサービスを利用してコンテンツを登録する処理の流れを示すフローチャートである。
【図4】第2の実施の形態においてサービスを登録する処理の流れを示すフローチャートである。
【図5】第3の実施の形態においてサービスを登録する処理の流れを示すフローチャートである。
【図6】第3の実施の形態においてバンドルがサービスを利用してコンテンツを登録する処理の流れを示すフローチャートである。
【図7】第4の実施の形態におけるサービス登録装置の構成を示すブロック図である。
【図8】第4の実施の形態においてサービスを登録する処理の流れを示すフローチャートである。
【図9】情報管理機能が保持する管理テーブルの例を示す図である。
【図10】第5の実施の形態においてHTTPサーバの起動処理の流れを示すフローチャートである。
【図11】第5の実施の形態においてIPアドレスの変更を検知した後の処理の流れを示すフローチャートである。
【図12】第5の実施の形態においてバンドルがサービスを利用してコンテンツを登録する処理の流れを示すフローチャートである。
【図13】第6の実施の形態においてバンドルがサービスを利用してコンテンツを登録する処理の流れを示すフローチャートである。
【図14】バンドルの構成を示すブロック図である。
【図15】バンドルがサービスを取得してコンテンツの登録要求を出す処理の流れを示すフローチャートである。
【図16】従来のサービス登録装置の構成を示すブロック図である。
【発明を実施するための形態】
【0031】
以下、本発明の実施の形態について図面を用いて説明する。
【0032】
[第1の実施の形態]
図1は、第1の実施の形態におけるサービス登録装置の構成を示すブロック図である。同図に示すサービス登録装置1は、サービス実装提供機能11、サービスプロパティ作成機能12、サービス登録機能13、サービスレジストリ14、およびネットワークインタフェース情報取得機能15を備える。なお、サービス登録装置1は、演算処理装置、記憶装置、メモリ等を備えたコンピュータにより構成して、各機能の処理がプログラムによって実行されるものとしてもよい。このプログラムはサービス登録装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、各機能について説明する。
【0033】
サービス実装提供機能11は、HTTPサーバの起動およびHttp Serviceインタフェースを実装したオブジェクトの生成を行う。Http Serviceは、OSGiで仕様が定義されており、HTTPサーバにより公開されるコンテンツを動的に登録するサービスである。バンドルが、サービス実装提供機能11が生成したHttp Service実装オブジェクトのメソッドを呼ぶことでコンテンツの登録が行われる。以下、Http Service実装オブジェクトを単に「Http Service」と称することもある。
【0034】
サービス実装提供機能11は、所定のネットワークインタフェースのIPアドレスをバインドしてHTTPサーバを起動する。バインドするネットワークインタフェースの情報は、ネットワークインタフェース情報取得機能15から得る。
【0035】
HTTPサーバの起動に際して、TCPのサーバソケットの設立方法として、どのネットワークインタフェースのIPアドレスにもバインドしない方法と、特定のネットワークインタフェースのIPアドレスにバインドする方法がある。HTTPサーバをネットワークインタフェースのIPアドレスにバインドしない場合、つまり、図16に示す従来のサービス登録装置100の場合、HTTPサーバは任意のネットワークインタフェース経由のTCPコネクション接続要求を受け付けることが可能である。例えば、サービス登録装置100がLAN側とWAN側の2つのネットワークインタフェースを備えていたとすると、HTTPサーバへの接続はいずれのネットワークインタフェースのIPアドレス宛のアクセスも受け付け、LAN側、WAN側双方に対してコンテンツを公開することになる。
【0036】
一方、HTTPサーバを特定のネットワークインタフェースのIPアドレスにバインドする場合、つまり、本実施の形態におけるサービス登録装置1の場合、HTTPサーバはバインドされたネットワークインタフェース経由のTCPコネクション接続要求のみを受け付けることが可能となり、HTTPサーバがバインドしたネットワークインタフェース経由のアクセスに対してのみコンテンツを公開することになる。図1に示す実施例では、一方のHTTPサーバがネットワークインタフェースeth0にバインドされ、他方のHTTPサーバがネットワークインタフェースppp0にバインドされている。なお、ここでのネットワークインタフェースとは、物理的なネットワークインタフェースではなく、論理的なネットワークインタフェースを意味する。例えば、127.0.0.1 で表されるループバックインタフェースも該当する。
【0037】
サービスプロパティ作成機能12は、Http Serviceの設定を記載したサービスプロパティを作成する。サービスプロパティには、バインドするネットワークインタフェースの識別子を特定キー名に対するサービスプロパティ値として付与する。バインドするネットワークインタフェースの情報は、ネットワークインタフェース情報取得機能15から得る。なお、サービスプロパティのキー名としては、例えば”BoundNwIfId”が、サービスプロパティの値としては、eth0やppp0などのネットワークインタフェースの名前の文字列である場合や、0,1,2,3などの数字である場合が考えられる。
【0038】
サービス登録機能13は、サービス実装提供機能11からHttp Service実装オブジェクトへの参照を受け取り、サービスプロパティ作成機能12からサービスプロパティを受け取る。そして、Http Service実装オブジェクトへの参照にサービスプロパティを付与してサービスレジストリ14に登録する。サービスレジストリ14へのサービス登録は、OSGiフレームワークのBundleContextインタフェースのメソッドを呼び出すことにより行う。
【0039】
サービスレジストリ14には、サービスプロパティが付与されたHttp Serviceが登録される。バンドル2は、サービスレジストリ14からHttp Serviceを取得し、そのHttp Serviceのメソッドを呼び出すことでコンテンツを登録する。バンドル2がサービスレジストリ14からHttp Serviceを取得する際には、バンドル2が登録するコンテンツを公開したいネットワークインタフェースの識別子が特定キー名のサービスプロパティ値として付与されているHttp Serviceを取得する。バンドル2によるHttp Serviceの取得については後述する。
【0040】
ネットワークインタフェース情報取得機能15は、HTTPサーバにバインドするネットワークインタフェースの情報を取得する。ネットワークインタフェース情報の取得方法としては、特定のシステムプロパティや設定ファイルなどから読み込む方法が考えられるが、これに限定するものではない。ネットワークインタフェース情報取得機能15が取得した情報の中には、サービスプロパティ値として付与するネットワークインタフェースの識別子が含まれる。
【0041】
次に、サービス登録装置1によるサービス登録処理について説明する。サービスレジストリ14へのHttp Serviceの登録はバンドルにより開始される。バンドルは、例えばネットワークを介してサービス登録装置1により受信され、受信されたバンドルによりサービスの登録処理が開始される。サービスレジストリ14に登録されたサービスは、別のバンドルも利用可能である。
【0042】
図2は、第1の実施の形態におけるサービス登録装置がHttp Serviceを登録する処理の流れを示すフローチャートである。
【0043】
Http Serviceの登録処理を開始すると、サービス実装提供機能11は、Http Serviceインタフェースを実装したオブジェクトを作成する(ステップS11)。
【0044】
ネットワークインタフェース情報取得機能15は、バインド対象のネットワークインタフェースの情報を取得してサービス実装提供機能11とサービスプロパティ作成機能12に送信する(ステップS12)。
【0045】
サービスプロパティ作成機能12は、ネットワークインタフェース情報取得機能15から受信した情報、具体的には、ネットワークインタフェースの識別子を特定キー名に対するサービスプロパティ値として付与したサービスプロパティを作成する(ステップS13)。
【0046】
サービス実装提供機能11は、作成するHttp Serviceに対応するHTTPサーバを起動する(ステップS14)。HTTPサーバを起動する際には、ネットワークインタフェース情報取得機能15から受信した情報に基づいて、所定のネットワークインタフェースに割り当てられたIPアドレスに対してHTTPサーバのサーバソケットをバインドする。
【0047】
オブジェクトの作成、サービスプロパティの作成、およびHTTPサーバの起動が完了すると、サービス登録機能13は、サービスレジストリ14にHttp Serviceを登録する(ステップS15)。サービス登録機能13は、サービス実装提供機能11からHttp Serviceへの参照を受け取り、サービスプロパティ作成機能12から受け取ったサービスプロパティを付与して、サービスレジストリ14に登録する。サービスレジストリ14へのサービス登録は、OSGiフレームワークのBundleContextインタフェースのメソッドを呼び出すことにより行う。
【0048】
このように、Http Serviceはサービスレジストリ14へ登録される。サービスレジストリ14に登録されたHttp Serviceは自他のバンドルが取得して利用することが可能になる。
【0049】
次に、Http Serviceを利用してコンテンツを登録する処理について説明する。バンドル2は、登録するコンテンツを公開したいネットワークインタフェースをバインドしたHTTPサーバに対応するHttp Serviceをサービスレジストリ14から取得し、そのHttp Serviceを利用してコンテンツを登録する。より具体的には、所望のネットワークインタフェースの識別子が特定キー名のサービスプロパティ値として付与されているHttp Serviceをサービスレジストリ14から取得し、コンテンツとそのコンテンツのHTTPサーバ上でのアクセス先を示すaliasを指定して取得したHttp Serviceのメソッドを呼びコンテンツ登録の要求を出す。コンテンツは、HTMLファイルや画像などのリソースやServletを含むものである。
【0050】
図3は、バンドル2がHttp Serviceを利用してコンテンツを登録する際に、サービス実装提供機能11が行う処理の流れを示すフローチャートである。バンドル2により、コンテンツの登録が依頼されると、サービス実装提供機能11は、Http Serviceを通じてコンテンツ登録の要求を受け付け、メソッドが呼び出されたHttp Serviceに対応するHTTPサーバについて、HTTPクライアント300がHTTPプロトコルにより指定したaliasにアクセスした場合に、指定のコンテンツを返すようにHTTPサーバを設定する(ステップS21)。
【0051】
このように、バンドル2は、Http Serviceのメソッドを呼び出してコンテンツを登録する。登録したコンテンツを公開するHTTPサーバは、特定のネットワークインタフェースにバインドされているため、そのネットワークインタフェースを経由したアクセスに対してのみ登録されたコンテンツが公開される。
【0052】
[第2の実施の形態]
次に、第2の実施の形態について説明する。第2の実施の形態におけるサービス登録装置の構成は、第1の実施の形態におけるサービス登録装置の構成とほぼ同様であるので詳細な説明は省略する。第2の実施の形態は、HTTPサーバの起動完了を待たずにサービスレジストリ14にHttp Serviceを登録する点で第1の実施の形態と異なる。以下、第2の実施の形態におけるサービス登録処理について図を用いて説明する。
【0053】
図4は、第2の実施の形態におけるサービス登録装置がHttp Serviceを登録する処理の流れを示すフローチャートである。
【0054】
Http Serviceの登録処理を開始すると、サービス実装提供機能11は、Http Serviceインタフェースを実装したオブジェクトを作成する(ステップS31)。
【0055】
ネットワークインタフェース情報取得機能15は、バインド対象のネットワークインタフェースの情報を取得してサービス実装提供機能11とサービスプロパティ作成機能12に送信する(ステップS32)。
【0056】
サービスプロパティ作成機能12は、ネットワークインタフェース情報取得機能15から受信した情報、具体的には、ネットワークインタフェースの識別子を特定キー名に対するサービスプロパティ値として付与したサービスプロパティを作成する(ステップS33)。
【0057】
サービス実装提供機能11は、作成するHttp Serviceに対応するHTTPサーバを起動する(ステップS34)。HTTPサーバを起動する際には、ネットワークインタフェース情報取得機能15から受信した情報に基づいて、所定のネットワークインタフェースのIPアドレスにHTTPサーバをバインドする。
【0058】
ここで、サービス登録機能13は、HTTPサーバの起動の完了を待たずに、サービスレジストリ14にHttp Serviceを登録する(ステップS35)。Http Serviceがサービスレジストリ14に登録されると、バンドル2は、Http Serviceを利用してコンテンツを登録することができるが、そのときにHTTPサーバの起動が完了していない場合には、HTTPサーバに対するHTTPプロトコルによるアクセスはできない。なお、Http Serviceの登録後にHTTPサーバの起動を開始してもよい。
【0059】
Http Serviceを利用してコンテンツを登録する処理は、第1の実施の形態と同様であるので説明は省略する。
【0060】
[第3の実施の形態]
次に、第3の実施の形態について説明する。第3の実施の形態におけるサービス登録装置の構成は、第1の実施の形態におけるサービス登録装置の構成とほぼ同様であるので詳細な説明は省略する。第3の実施の形態では、Http Serviceを登録するときにはHTTPサーバを起動せず、バンドルがHttp Serviceを利用してコンテンツを登録するときにHTTPサーバを起動する点で第1の実施の形態と異なる。以下、第3の実施の形態におけるサービス登録処理について図を用いて説明する。
【0061】
図5は、第3の実施の形態におけるサービス登録装置がHttp Serviceを登録する処理の流れを示すフローチャートである。
【0062】
Http Serviceの登録処理を開始すると、ネットワークインタフェース情報取得機能15は、バインド対象のネットワークインタフェースの情報を取得してサービス実装提供機能11とサービスプロパティ作成機能12に送信する(ステップS41)。
【0063】
サービス実装提供機能11は、Http Serviceインタフェースを実装したオブジェクトを作成する(ステップS42)。このとき、サービス実装提供機能11は、HTTPサーバを起動せずに、作成するHttp Service実装オブジェクトの中にバインド対象のネットワークインタフェースの情報を保存しておく。
【0064】
サービスプロパティ作成機能12は、ネットワークインタフェース情報取得機能15から受信した情報、具体的には、ネットワークインタフェースの識別子を特定キー名に対するサービスプロパティ値として付与したサービスプロパティを作成する(ステップS43)。
【0065】
オブジェクトの作成、サービスプロパティの作成が完了すると、サービス登録機能13は、Http Serviceにサービスプロパティを付与してサービスレジストリ14に登録する(ステップS44)。
【0066】
このように、Http Serviceはサービスレジストリ14に登録される。Http Serviceが登録された時点では、HTTPサーバは起動されていない。第3の実施の形態では、バンドル2がHttp Serviceを利用してコンテンツを登録するときにHTTPサーバを起動する。以下、バンドル2がHttp Serviceを利用してコンテンツを登録する際のサービス実装提供機能11が行う処理について説明する。
【0067】
図6は、バンドル2がHttp Serviceを利用してコンテンツを登録する処理の流れを示すフローチャートである。
【0068】
バンドル2がHttp Serviceのメソッドを呼ぶことでコンテンツ登録の要求を出すと、サービス実装提供機能11は、そのHttp Serviceに既にコンテンツが登録されているか否かを判定する(ステップS51)。コンテンツが登録されていない場合、つまり、登録済みのコンテンツ数が0の場合は、HTTPサーバはまだ起動されていないので、ステップS52のHTTPサーバ起動処理へ進む。コンテンツが既に登録されている場合、つまり、登録済みのコンテンツ数が0でない場合は、HTTPサーバは起動されているので、ステップS54のコンテンツ公開処理へ進む。
【0069】
HTTPサーバを起動する場合、サービス実装提供機能11は、コンテンツ登録の要求があったHttp Serviceが保持するネットワークインタフェースの情報を取得する(ステップS52)。このネットワークインタフェースの情報は、Http Setvice登録時にネットワークインタフェース情報取得機能15から受け取ったバインド対象のネットワークインタフェースの情報である。
【0070】
そして、サービス実装提供機能11は、コンテンツ登録の要求があったHttp Serviceに対応するHTTPサーバを起動する(ステップS53)。HTTPサーバを起動する際には、ステップS52で取得したネットワークインタフェースの情報に基づいて、HTTPサーバを所定のネットワークインタフェースのIPアドレスにバインドする。HTTPサーバ起動後、コンテンツの公開処理へ進む。
【0071】
HTTPサーバが起動されると、Http Serviceは、バンドル2が指定したaliasへのアクセスに対して指定のコンテンツが公開される状態にHTTPサーバを設定する(ステップS54)。
【0072】
このように、第3の実施の形態では、Http Serviceを利用して実際にコンテンツが登録されるまでHTTPサーバを起動しない。つまり、必要に応じてHTTPサーバを起動するため、消費メモリなどコンピュータのリソース消費を削減することができる。なお、登録されたコンテンツが削除され、コンテンツの登録数が0となったときには、HTTPサーバを停止することも可能である。
【0073】
[第4の実施の形態]
次に、第4の実施の形態について説明する。第4の実施の形態は、第3の実施の形態と同様に、必要に応じてHTTPサーバを起動するものである。第4の実施の形態におけるサービス登録装置の構成は、図7に示すように、Http Serviceとそれに対応するバインド対象のネットワークインタフェースの情報とを対として記憶させる情報管理機能16を有する点で、第1〜3の実施の形態におけるサービス登録装置と異なる。
【0074】
図8は、第4の実施の形態におけるサービス登録装置がHttp Serviceを登録する処理の流れを示すフローチャートである。
【0075】
Http Serviceの登録処理を開始すると、ネットワークインタフェース情報取得機能15は、バインド対象のネットワークインタフェースの情報を取得してサービス実装提供機能11とサービスプロパティ作成機能12に送信する(ステップS61)。
【0076】
サービス実装提供機能11は、Http Serviceインタフェースを実装したオブジェクトを作成する(ステップS62)。そして、作成したHttp Service実装オブジェクトとそれに対応するバインド対象のネットワークインタフェースを対応付けて情報管理機能16に登録する(ステップS63)。図9に、情報管理機能16が保持する管理テーブルの例を示す。同図に示す管理テーブルでは、左側にキーとしてHttp Service実装オブジェクトが置かれ、右側にその値として対応するネットワークインタフェース情報が置かれている。
【0077】
サービスプロパティ作成機能12は、ネットワークインタフェース情報取得機能15から受信した情報、具体的には、ネットワークインタフェースの識別子を特定キー名に対するサービスプロパティ値として付与したサービスプロパティを作成する(ステップS64)。
【0078】
オブジェクトの作成、サービスプロパティの作成が完了すると、サービス登録機能13は、サービスレジストリ14にHttp Serviceを登録する(ステップS65)。
【0079】
このように、Http Serviceはサービスレジストリ14に登録される。HTTP Serviceが登録された時点では、HTTPサーバは起動されていない。第4の実施の形態では、第3の実施の形態と同様に、バンドル2がHttp Serviceを利用してコンテンツを登録するときにHTTPサーバを起動する。
【0080】
Http Serviceを利用してコンテンツを登録する処理は、ネットワークインタフェースの情報の取得方法以外の処理については、第3の実施の形態と同様であるため詳細な説明は省略する。
【0081】
第4の実施の形態では、HTTPサーバを起動する際にネットワークインタフェースの情報を取得するため、サービス実装提供機能11が、コンテンツ登録の要求があったHttp Serviceをキーとして情報管理機能16に問い合わせる。そして、情報管理機能16からバインドするネットワークインタフェースの情報を取得する。
【0082】
[第5の実施の形態]
次に、第5の実施の形態について説明する。第5の実施の形態は、第1の実施の形態と同様にHttp Serviceの作成、サービスプロパティの作成を行うが、HTTPサーバの起動の際に、バインド対象のネットワークインタフェースにIPアドレスが割り当てられているか否かを判定する処理を行う点で異なる。例えば、ネットワークインタフェースがDHCPサーバを利用してIPアドレスを取得する場合など、IPアドレスが割り当てられていない場合が考えられる。IPアドレスが割り当てられていない場合は、ネットワークインタフェースのIPアドレスをバインドしてHTTPサーバを起動することができないので、第5の実施の形態では、HTTPサーバ起動時にバインドするネットワークインタフェースにIPアドレスが割り当てられているか否かを判定する。ここでは、Http Serviceの作成、サービスプロパティの作成などの処理は、第1の実施の形態と同様であるので説明を省略し、HTTPサーバの起動処理について説明する。
【0083】
図10は、第5の実施の形態におけるHTTPサーバの起動処理を示すフローチャートである。
【0084】
まず、サービス実装提供機能11は、起動するHTTPサーバがバインドするネットワークインタフェースにIPアドレスが割り当てられているか否か判定する(ステップS71)。ネットワークインタフェースにIPアドレスが割り当てられていない場合は、ステップS73へ進みIPアドレスが割り当てられるのを待つ。
【0085】
ネットワークインタフェースにIPアドレスが割り当てられている場合は、割り当てられたIPアドレスに対してサーバソケットをバインドしたHTTPサーバを起動する(ステップS72)。
【0086】
ネットワークインタフェースにIPアドレスが割り当てられていない場合、あるいは、HTTPサーバ起動後に、バインド対象のネットワークインタフェースのIPアドレスの変更を検知する待ち受け処理に入る(ステップS73)。
【0087】
ネットワークインタフェースに割り当てられたIPアドレスが変更されると、古いIPアドレスにバインドしたHTTPサーバにアクセスできなくなるので、第5の実施の形態では、IPアドレスの変更を検知する待ち受け処理を行う。ネットワークインタフェースのIPアドレスが変更される例としては、ネットワークインタフェースがDHCPサーバからIPアドレスを取得し、取得したIPアドレスの有効期限後に再びIPアドレスを取得したときにIPアドレスが変わることがある。以下、IPアドレスの変更を検知する待ち受け処理について説明する。
【0088】
ネットワークインタフェースでIPアドレスが変更されたか否かは、例えば、OS依存のネイティブプログラムを使ってIPアドレスの変更があったときにイベントとして検出する方法や、定期的にネットワークインタフェースのIPアドレスを調べる方法が考えられる。図11は、ネットワークインタフェースのIPアドレスの変更を検知した後の処理の流れを示すフローチャートである。ここでのIPアドレスの変更は、IPアドレスが割り当てられていないネットワークインタフェースにたにIPアドレスが割り当てられた場合、およびネットワークインタフェースに割り当てられたIPアドレスが無効になった場合も含む。
【0089】
まず、変更前のIPアドレスにバインドしたHTTPサーバが起動されているか否か判定する(ステップS81)。変更前のIPアドレスにバインドしたHTTPサーバが起動されている場合、そのHTTPサーバを停止する(ステップS82)。
【0090】
続いて、ネットワークインタフェースに新たなIPアドレスが割り当てられているか否か判定する(ステップS83)。新たなIPアドレスが割り当てられている場合、その新たなIPアドレスにバインドしたHTTPサーバを起動する(ステップS84)。HTTPサーバの起動後には、HTTPサーバに対応するHttp Serviceに登録されているaliasとコンテンツの情報を元に、指定のaliasへのアクセスに対して指定のコンテンツが公開されるようにHTTPサーバを設定する。
【0091】
そして、再びIPアドレスの変更を検知する待ち受け処理に入る(ステップS85)。
【0092】
このように、バインドされたネットワークインタフェースのIPアドレスの変更を検知し、HTTPサーバを再起動することにより、ネットワークインタフェースのIPアドレスが変更された場合でも継続的にコンテンツを公開することが可能となる。
【0093】
次に、バンドル2がHttp Serviceを利用してコンテンツを登録する際に、サービス実装提供機能11が行う処理について説明する。図12は、第5の実施の形態におけるコンテンツ登録処理の流れを示すフローチャートである。
【0094】
バンドル2がHttp Serviceのメソッドを呼ぶことでコンテンツ登録の要求を出すと、サービス実装提供機能11は、コンテンツ登録の要求に含まれるaliasとコンテンツの情報を保持する(ステップS91)。
【0095】
続いて、コンテンツ登録の要求があったHttp Serviceに対応するHTTPサーバが起動済みか否かを判定する(ステップS92)。対応するHTTPサーバが起動済みであった場合、指定のaliasへのアクセスに対して指定のコンテンツが公開されるようにHTTPサーバを設定する(ステップS93)。
【0096】
なお、HTTPサーバが起動しておらず、その時点では公開されない状態のコンテンツは、前述のバインド対象のネットワークインタフェースのIPアドレスの変更を検知する待ち受け処理によって、コンテンツを登録したHttp Serviceに対応するHTTPサーバが将来起動したときに、指定のaliasへのアクセスに対して公開されるように設定される。
【0097】
[第6の実施の形態]
次に、第6の実施の形態について説明する。第6の実施の形態は、第3,4の実施の形態と同様に、コンテンツ登録の要求を受けるまではHTTPサーバを起動しないものであり、第5の実施の形態と同様に、ネットワークインタフェースのIPアドレスの変更に対応したものである。Http Serviceの登録処理は、第3,4の実施の形態と同様であるので説明を省略する。以下、コンテンツの登録時にHTTPサーバを起動する処理について説明する。
【0098】
図13は、第6の実施の形態におけるサービス実装提供機能11が行うコンテンツ登録処理の流れを示すフローチャートである。
【0099】
バンドル2がHttp Serviceのメソッドを呼ぶことでにコンテンツ登録の要求を出すと、サービス実装提供機能11は、コンテンツ登録の要求に含まれるaliasとコンテンツの情報を保持する(ステップS101)。
【0100】
続いて、サービス実装提供機能11は、コンテンツ登録の要求があったHttp Serviceに既にコンテンツが登録されているか否かを判定する。(ステップS102)。コンテンツが登録されていない場合、つまり、登録済みのコンテンツ数が0の場合は、HTTPサーバはまだ起動されていないので、ステップS105のHTTPサーバの起動処理へ進む。
【0101】
コンテンツが既に登録されている場合、つまり、登録済みのコンテンツ数が0でない場合は、HTTPサーバの起動済みか否か判定する(ステップS103)。コンテンツが既に登録されている場合は、HTTPサーバの起動処理は完了しているが、ネットワークインタフェースにIPアドレスが割り当てられていないなどの状況では、HTTPサーバはまだ起動されていない。
【0102】
HTTPサーバが起動済みの場合、Http Serviceは、バンドル2が指定したaliasへのアクセスに対して指定のコンテンツが公開される状態にHTTPサーバを設定する(ステップS104)。
【0103】
一方、HTTPサーバの起動処理を行う場合は、まず、サービス実装提供機能11がHttp Serviceが保持するバインド対象のネットワークインタフェースの情報を取得する(ステップS105)。なお、第4の実施の形態のように、情報管理機能16を備え、情報管理機能16からネットワークインタフェースの情報を取得するものでもよい。
【0104】
続いて、サービス実装提供機能11は、起動するHTTPサーバがバインドするネットワークインタフェースにIPアドレスが割り当てられているか否か判定する(ステップS106)。ネットワークインタフェースにIPアドレスが割り当てられていない場合は、ステップS108へ進みIPアドレスが割り当てられるのを待つ。
【0105】
ネットワークインタフェースにIPアドレスが割り当てられている場合は、割り当てられたIPアドレスに対してサーバソケットをバインドしたHTTPサーバを起動する(ステップS107)。HTTPサーバの起動が完了すると、ステップS104と同様に、バンドル2が指定したaliasへのアクセスに対して指定のコンテンツが公開されるようにHTTPサーバを設定する。
【0106】
ネットワークインタフェースにIPアドレスが割り当てられていない場合、あるいは、HTTPサーバ起動後、バインド対象のネットワークインタフェースのIPアドレスの変更を検知する待ち受け処理に入る(ステップS108)。
【0107】
[バンドルによるHttp Serviceの取得について]
次に、Http Serviceを利用してコンテンツを登録するバンドルについて説明する。上述したサービス登録装置は、所定のネットワークインタフェースのIPアドレスにバインドしてHTTPサーバを起動するので、バンドル2は、ネットワークインタフェース単位でコンテンツの公開の可否を指定できる。ここでは、バンドル2が所望のHttp Serviceを取得する処理について説明する。
【0108】
図14は、Http Serviceを利用してコンテンツを登録するバンドルの構成を示すブロック図である。同図に示すバンドル2は、サービス取得機能21、コンテンツ登録機能22、ネットワークインタフェース決定機能23、および検索条件作成機能24を有する。
【0109】
ネットワークインタフェース決定機能23は、どのネットワークインタフェース経由のアクセスに対してコンテンツを公開したいか決定し、検索条件作成機能24に渡す。対象のネットワークインタフェースの決定方法は、例えば、バンドル2にハードコーディングする方法や、設定ファイルやシステムプロパティにより設定する方法などが考えられるがこれに限定しない。
【0110】
検索条件作成機能24は、受け取ったネットワークインタフェースの情報を元に、所定のキー値に対応するサービスプロパティの値が指定のネットワークインタフェースになるような条件検索式を作成し、サービス取得機能21に渡す。
【0111】
サービス取得機能21は、OSGiの仕様に従った方法、例えば、BundleContextインタフェースのメソッドを呼び出すことにより、Http Serviceのサービス名と検索条件作成機能24から受け取った条件検索式とを指定し、サービスレジストリ14に登録されたHttp Serviceのうち、条件検索式に合致したHttp Serviceを取得する。
【0112】
コンテンツ登録機能22は、サービス取得機能21が取得したHttp Serviceのメソッドを呼ぶことにより、コンテンツの登録を行う。
【0113】
次に、Http Serviceを取得する処理の流れについて説明する。
【0114】
図15は、バンドル2がネットワークインタフェースを指定してHttp Serviceを取得する処理の流れを示すフローチャートである。
【0115】
まず、ネットワークインタフェース決定機能23が公開対象のネットワークインタフェースの情報を取得する(ステップS111)。
【0116】
続いて、検索条件作成機能24が受け取ったネットワークインタフェースの情報に基づいて条件検索式を作成する(ステップS112)。条件検索式の作成方法は、OSGiの仕様に従う。例えば、所定のサービスプロパティのキーを”BoundNwIfId”として、指定するネットワークインタフェースに該当する値が”1”の場合には、以下の文字列を検索式として生成する。
【0117】
"(&(objectClass=org.osgi.service.http.HttpService)(BoundNwIfId=1))"
続いて、サービス取得機能21が条件検索式に合致するHttp Serviceをサービスレジストリ14から取得する(ステップS113)。
【0118】
そして、コンテンツ登録機能22は、取得したHttp Serviceを利用してコンテンツを登録する(ステップS114)。
【0119】
以上説明したように、本実施の形態によれば、サービス実装提供機能11がHttp Serviceに対応するHTTPサーバを起動する際に、ネットワークインタフェースのIPアドレスをバインドしてHTTPサーバを起動することにより、HTTPサーバはバインドしたネットワークインタフェース経由のアクセスに対してのみコンテンツを公開することになるので、Http Serviceを利用してコンテンツを登録するバンドルは、ネットワークインタフェース毎のアクセス制御が可能となる。
【0120】
また、本実施の形態によれば、Http Setviceを利用して実際にコンテンツが登録されるまでHTTPサーバを起動させないことで、消費メモリなどコンピュータのリソース消費を削減することができる。
【0121】
また、本実施の形態によれば、HTTPサーバがバインドしたネットワークインタフェースのIPアドレスの変更を検出し、IPアドレスの変更を検知した場合に、新しいIPアドレスにバインドしてHTTPサーバを再起動することにより、ネットワークインタフェースのIPアドレスが変更されたとしても、HTTPサーバはバインドしたネットワークインタフェース経由で継続的にコンテンツを公開することが可能である。
【符号の説明】
【0122】
1…サービス登録装置
11…サービス実装提供機能
12…サービスプロパティ作成機能
13…サービス登録機能
14…サービスレジストリ
15…ネットワークインタフェース情報取得機能
16…情報管理機能
2…バンドル
21…サービス取得機能
22…コンテンツ登録機能
23…ネットワークインタフェース決定機能
24…検索条件作成機能
100…サービス登録装置
110…サービス実装提供機能
120…サービスプロパティ作成機能
130…サービス登録機能
140…サービスレジストリ
200…バンドル
210…サービス取得機能
220…コンテンツ登録機能
300…HTTPクライアント

【特許請求の範囲】
【請求項1】
コンテンツを公開するサーバがアクセスを受け付けるネットワークインタフェースを選択するネットワークインタフェース選択手段と、
選択された前記ネットワークインタフェースに割り当てられたIPアドレス宛のアクセスを受け付けるように前記サーバを起動するサーバ起動手段と、
前記サーバにより公開されるコンテンツの登録を受け付けるサービスを生成するサービス生成手段と、
前記サービスの設定及び前記ネットワークインタフェースの情報を記載したサービスプロパティを生成するプロパティ生成手段と、
前記サービスに前記サービスプロパティを付与してサービスレジストリに登録するサービス登録手段と、
を有することを特徴とするサービス登録装置。
【請求項2】
前記サービス登録手段は、前記サーバの起動の完了を待たずに前記サービスをサービスレジストリに登録することを特徴とする請求項1記載のサービス登録装置。
【請求項3】
前記サーバ起動手段は、前記サービスがコンテンツの登録を受け付けたときに前記サーバを起動することを特徴とする請求項1記載のサービス登録装置。
【請求項4】
前記サービスと当該サービスに対応する前記サーバがアクセスを受け付けるネットワークインタフェースの情報との対応を記憶する情報管理手段を有し、
前記サーバ起動手段は、前記情報管理手段から前記ネットワークインタフェースの情報を読み出して当該ネットワークインタフェース経由のアクセスのみを受け付けるように前記サーバを起動することを特徴とする請求項3記載のサービス登録装置。
【請求項5】
前記サーバがアクセスを受け付けるネットワークインタフェースに割り当てられたIPアドレスの変更を検出し、前記ネットワークインタフェースに割り当てられたIPアドレスに変更があった場合には、新しいIPアドレス宛のアクセスを受け付けるように前記サーバを再起動することを特徴とする請求項1乃至4のいずれかに記載のサービス登録装置。
【請求項6】
サービス登録装置に登録されたサービスを取得してコンテンツを登録するコンテンツ登録装置であって、
前記コンテンツを公開するネットワークインタフェースを選択するネットワークインタフェース選択手段と、
選択した前記ネットワークインタフェースの情報に基づいて前記サービス登録装置から所望のサービスを検索するための条件検索式を作成する条件検索式作成手段と、
前記条件検索式を用いて前記サービス登録装置から前記サービスを取得するサービス取得手段と、
取得した前記サービスを用いて前記コンテンツを登録するコンテンツ登録手段と、
を有することを特徴とするコンテンツ登録装置。
【請求項7】
コンテンツを公開するサーバがアクセスを受け付けるネットワークインタフェースを選択するステップと、
選択された前記ネットワークインタフェースに割り当てられたIPアドレス宛のアクセスを受け付けるように前記サーバを起動するステップと、
当該サーバにより公開されるコンテンツの登録を受け付けるサービスを生成するステップと、
前記サービスの設定及び前記ネットワークインタフェースの情報を記載したサービスプロパティを生成するステップと、
前記サービスに前記サービスプロパティを付与してサービスレジストリに登録するステップと、
を有することを特徴とするサービス登録方法。
【請求項8】
前記サーバの起動の完了を待たずに前記サービスをサービスレジストリに登録することを特徴とする請求項7記載のサービス登録方法。
【請求項9】
前記サービスがコンテンツの登録を受け付けたときに前記サーバを起動することを特徴とする請求項7記載のサービス登録方法。
【請求項10】
前記サービスと当該サービスに対応する前記サーバがアクセスを受け付けるネットワークインタフェースの情報との対応を記憶する情報管理手段から前記ネットワークインタフェースの情報を読み出して当該ネットワークインタフェース経由のアクセスのみを受け付けるように前記サーバを起動することを特徴とする請求項9記載のサービス登録方法。
【請求項11】
前記サーバがアクセスを受け付けるネットワークインタフェースに割り当てられたIPアドレスの変更を検出するステップと、
前記ネットワークインタフェースに割り当てられたIPアドレスに変更があった場合には、新しいIPアドレス宛のアクセスを受け付けるように前記サーバを再起動するステップと、
を有することを特徴とする請求項7乃至10のいずれかに記載のサービス登録方法。
【請求項12】
サービス登録装置に登録されたサービスを取得してコンテンツを登録するコンテンツ登録方法であって、
前記コンテンツを公開するネットワークインタフェースを選択するステップと、
選択した前記ネットワークインタフェースの情報に基づいて前記サービス登録装置から所望のサービスを検索するための条件検索式を作成するステップと、
前記条件検索式を用いて前記サービス登録装置から前記サービスを取得するステップと、
取得した前記サービスを用いて前記コンテンツを登録するステップと、
を有することを特徴とするコンテンツ登録方法。
【請求項13】
請求項1乃至6のいずれかに記載のサービス登録装置又はコンテンツ登録装置を構成する各手段としてコンピュータを機能させるためのプログラム。
【請求項14】
請求項13に記載のプログラムを記録した記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−39819(P2011−39819A)
【公開日】平成23年2月24日(2011.2.24)
【国際特許分類】
【出願番号】特願2009−187135(P2009−187135)
【出願日】平成21年8月12日(2009.8.12)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】