JP5740257B2 - OSGiプログラム、OSGiシステム - Google Patents

OSGiプログラム、OSGiシステム Download PDF

Info

Publication number
JP5740257B2
JP5740257B2 JP2011196060A JP2011196060A JP5740257B2 JP 5740257 B2 JP5740257 B2 JP 5740257B2 JP 2011196060 A JP2011196060 A JP 2011196060A JP 2011196060 A JP2011196060 A JP 2011196060A JP 5740257 B2 JP5740257 B2 JP 5740257B2
Authority
JP
Japan
Prior art keywords
osgi
bundle
device
identification information
electronic device
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.)
Expired - Fee Related
Application number
JP2011196060A
Other languages
English (en)
Other versions
JP2013058083A (ja
Inventor
真也 信岡
真也 信岡
中村 雄一
雄一 中村
Original Assignee
株式会社日立ソリューションズ
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 株式会社日立ソリューションズ filed Critical 株式会社日立ソリューションズ
Priority to JP2011196060A priority Critical patent/JP5740257B2/ja
Publication of JP2013058083A publication Critical patent/JP2013058083A/ja
Application granted granted Critical
Publication of JP5740257B2 publication Critical patent/JP5740257B2/ja
Application status is Expired - Fee Related legal-status Critical
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Description

本発明は、OSGiフレームワーク仕様に対応したOSGiバンドルを配信する技術に関する。

OSGiフレームワークとは、Java(登録商標)Virtual Machine上で動作し、JavaプログラムをPluginモジュールとして取り扱い、動的にアプリケーションへ追加できるようにする、サービスプラットフォームである。OSGiフレームワークは、OSGi Allianceによって開発・定義されている(非特許文献1)。Pluginモジュールとして扱われるOSGiフレームワーク上のJavaプログラムのことを、OSGiバンドルと呼ぶ。

通信キャリアなどのサービスプロバイダが各家庭に設置しているゲートウェイデバイスなどの端末(ブロードバンドルータ等)のなかには、OSGiフレームワークを搭載しているものがある。OSGiフレームワークは、ゲートウェイデバイスにアプリケーションを配信し、実行する基盤としての役割を担う。端末がOSGiフレームワークを搭載し、配信サーバからOSGiバンドルを配信することにより、遠隔からモジュール単位で機能の追加やアップデートをすることができる。

家庭内のゲートウェイデバイスは、新たなOSGiバンドルを配信サーバから取得する必要が生じる場合がある。例えば、ユーザがZigBee(登録商標)通信機能を持ったUSBドングルを購入した場合について考える。

ZigBeeドングルをゲートウェイデバイスのUSBポートに挿せば、ゲートウェイデバイス10はハードウェア能力としてはZigBee通信機能を備えることができる。しかし、ゲートウェイデバイスがZigBee通信を実施するために必要な通信ソフトウェアを備えていなければ、ユーザはZigBee機能を使用することはできない。

このような場合、ユーザはサービスプロバイダのWebページ等からZigBee通信を実施するために必要なOSGiバンドルを探し、自宅のゲートウェイデバイスにダウンロードしインストールする。これにより、配信サーバから自宅ゲートウェイデバイスへZigBee通信のためのOSGiバンドルが送り込まれ、ゲートウェイデバイスはそのOSGiバンドルの機能を使用してZigBee機器を操作することができるようになる。

このときユーザがOSGiバンドルを探すために用いるユーザインターフェースとして、Webブラウザが考えられる。Webブラウザのアクセス先は、例えばサービスプロバイダが提供するWebページである。ユーザは、Webブラウザを用いて必要なOSGiバンドルを探し、ゲートウェイデバイス上にダウンロードしてインストールする。

上述のように、ゲートウェイデバイス上にインストールするOSGiバンドルをユーザが手動で探してインストールする他、配信サーバとゲートウェイデバイスの間の通信セッションを常時または定期的に確立し、ゲートウェイデバイスが必要とするOSGiバンドルを配信サーバ側からプッシュ配信することも考えられる。

OSGi Service Platform Release4、URL:http://www.osgi.org/Release4/HomePage(2011年8月22日取得)

ユーザがゲートウェイデバイス上に導入しようとしているアプリケーション(OSGiバンドル)が、上記例のように特定種類の外部デバイスと連動するものである場合、ユーザはその外部デバイスに対応するOSGiバンドルを探してゲートウェイデバイス上にインストールする必要がある。そのため、ユーザにとって作業負担が大きい。

また、配信サーバからプッシュ型でOSGiバンドルを配信する場合、多数のクライアント端末(ゲートウェイデバイス)を常に配信サーバ側で監視する必要があり、配信システム全体として大規模かつ複雑にならざるを得ない。新たなOSGiバンドルを配信する必要が常時発生するようなクライアント端末でない場合、このようなプッシュ型の配信システムはオーバースペックであると考えられる。

本発明は、上記のような課題を解決するためになされたものであり、OSGiフレームワークを搭載した電子機器に接続する外部デバイスを利用するために必要となるOSGiバンドルを、配信システムに負担をかけず電子機器へ自動的にインストールすることを目的とする。

本発明に係るOSGiプログラムは、OSGiフレームワークを搭載する電子機器に接続された外部デバイスを検出し、その外部デバイスに対応するOSGiバンドルを配信サーバからダウンロードし、電子機器にインストールする。

本発明に係るOSGiプログラムによれば、OSGiフレームワークを搭載する電子機器に外部デバイスを接続するだけで、その外部デバイスに対応するOSGiバンドルを電子機器にインストールすることができる。これにより、ユーザに作業負担をかけることなく、電子機器上で新たな外部デバイスを利用することができる。また、必要なOSGiバンドルを配信するように電子機器の側から要求するので、配信システムは電子機器を常時監視する必要はなく、配信システムにかかる負担を抑えることができる。

実施形態1に係るOSGiシステム100の構成図である。 バンドル取得バンドル14の機能ブロック図である。 デバイス情報取得部141の機能ブロック図である。 OSGiバンドルプール23の構成例を示す図である。 バンドル取得バンドル14の動作フローを示す図である。 図5のステップS502における配信サーバ20の動作フローを示す図である。 図5のステップS506における配信サーバ20の動作フローを示す図である。 図5のステップS502でバンドル取得部143が配信サーバ20に送信するHTTPリクエストの内容を例示する図である。 図5のステップS502で配信サーバ20がバンドル取得部143に送信するHTTPレスポンスの内容を例示する図である。 図5のステップS508でバンドル取得部143がポータルサーバ30に送信するHTTPメッセージの内容を例示する図である。 ポータルサーバ30がユーザに提供するWebページの画面推移を例示する図である。

<実施の形態1>
図1は、本発明の実施形態1に係るOSGiシステム100の構成図である。OSGiシステム100は、OSGiフレームワークに準拠した機能を提供するシステムであり、ゲートウェイデバイス10、配信サーバ20、ポータルサーバ30を有する。

ゲートウェイデバイス10は、ユーザ宅に配置され、OSGiフレームワークが搭載された電子機器である。ゲートウェイデバイス10は、OS(オペレーティングシステム)11、JavaVM12、OSGiフレームワーク13、バンドル取得バンドル14を備える。その他、各プログラムを実行するCPU(Central Processing Unit)、ネットワークインターフェースなどを適宜備える。ここでは、OSGiフレームワークを搭載した電子機器としてゲートウェイデバイスを例に説明するが、その他の電子機器も同様の構成を備えることができる。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはCPUなどの演算装置である。

OS11は、ゲートウェイデバイス10のOSであり、例えばLinux(登録商標)などのOSを用いることができる。JavaVM12は、OS11上で動作し、OSGiフレームワーク13を実行する。OSGiフレームワーク13は、OSGiフレームワーク仕様を実装したソフトウェアである。

バンドル取得バンドル14は、OSGiフレームワーク13上で動作するOSGiバンドルである。バンドル取得バンドル14は、ZigBeeドングル40のようなUSBデバイスがゲートウェイデバイス10のUSBポートに接続されたことを検知し、そのデバイスに対応するOSGiバンドル(この例ではZigBeeバンドル15)を配信サーバ20よりダウンロードしてOSGiフレームワーク13上にインストールし実行する。その他、ゲートウェイデバイス10が属するネットワーク上に接続されたUPnP(Universal Plug and Play)デバイスを検出し、同様の処理を実施することもできる。

また、バンドル取得バンドル14は、新しくインストールされたOSGiバンドルの識別情報をユーザIDとともにポータルサーバ30に通知する。ここでいうユーザIDは、サービスプロバイダが各ユーザおよびユーザ宅のOSGiフレームワークに割り振ったユニークIDである。ポータルサーバ30は、このユーザIDを用いて、個々のゲートウェイデバイス10を識別することができる。

配信サーバ20は、各ユーザ宅のゲートウェイデバイス10にOSGiバンドルを配信するサーバである。配信サーバ20は、HTTPサーバ部21、デバイスマッチング部22、OSGiバンドルプール23を備える。HTTPサーバ部21とデバイスマッチング部22は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、同様の機能を実装したソフトウェアとCPUなどの演算装置を用いて構成することもできる。OSGiバンドルプール23は、データを格納する記憶装置を用いて構成することができる。

HTTPサーバ部21は、バンドル取得バンドル14から後述するデバイス識別情報やバンドル識別情報を受け取り、これらに対応するバンドル識別情報やOSGiバンドルを配信する。HTTPサーバ部21は、HTTPサーバとして実装することができる。

デバイスマッチング部22は、バンドル取得バンドル14から受け取ったデバイス識別情報に合致するバンドル識別情報またはOSGiバンドルをOSGiバンドルプール23から検索し、HTTPサーバ部21を介してバンドル取得バンドル14に送信する。

OSGiバンドルプール23は、OSGiバンドルおよび各OSGiバンドルを識別するバンドル識別情報を保持するデータベースである。OSGiバンドルプール23は、データベース内に保持するデータを例えばテーブル形式で記述することができる。

ポータルサーバ30は、Webページを通じてユーザに各種サービスを提供するサーバである。例えば、ゲートウェイデバイス10自身がユーザインターフェースを備えていない場合、ユーザはゲートウェイデバイス10内にどのようなOSGiバンドルがインストールされているかを知ることができない。そこでバンドル取得バンドル14は、OSGiフレームワーク13上にインストール済みのOSGiバンドルのバンドル識別情報をポータルサーバ30へ通知し、ポータルサーバ30はこれをWebページ形式に整形してユーザに公開する。その他、ユーザ情報の管理などの各種サービスを提供することもできるがここでは説明しない。

図2は、バンドル取得バンドル14の機能ブロック図である。バンドル取得バンドル14は、デバイス情報取得部141、バンドル配置・実行部142、バンドル取得部143を備える。これら機能部は、バンドル取得バンドル14が備えるJavaメソッドとして実装することができる。

デバイス情報取得部141は、USBデバイスがゲートウェイデバイス10のUSBポートに接続されたこと、またはゲートウェイデバイス10が属するネットワークにUPnPデバイスが接続されたことを検知し、そのデバイスを識別するためのデバイス識別情報を取得する。バンドル配置・実行部142は、OSGiバンドルをOSGiフレームワーク13にインストールし実行する。バンドル取得部143は、配信サーバ20にデバイス識別情報を送信し、そのデバイスにマッチするOSGiバンドルまたはそのバンドル識別情報を取得する。

図3は、デバイス情報取得部141の機能ブロック図である。デバイス情報取得部141は、USBデバイス情報取得部1411とUPnPデバイス情報取得部1413を備える。

USBデバイス情報取得部1411は、ゲートウェイデバイス10にUSBデバイスが接続されたことを検知し、そのデバイスの識別情報(例えば製造者、製品名など、以下同じ)を取得する。UPnPデバイス情報取得部1413は、UPnPデバイスがゲートウェイデバイス10の属するネットワーク(LAN)に接続されたことを検知し、そのデバイスの識別情報を取得する。

USBデバイス情報取得部1411は、例えばオープンソースのJavaライブラリであるJSR80モジュール1412を使用して、USBデバイスの識別情報を取得する。JSR80は、USBデバイスが接続されたことを検知する機能、USBデバイスの製造者名や製品名といったプロパティを取得する機能を提供する。JSR80モジュール1412がUSBデバイスを検知する前提として、そのUSBデバイスに適合するデバイスドライバがOS11に組み込まれているものとする。主要なデバイスドライバは一般的なOS11に組み込まれているため、JSR80モジュール1412は大多数のUSBデバイスからデバイス識別情報を取得することができると考えられる。

UPnPデバイス情報取得部1413は、UPnPサービス17を使用してUPnPデバイスを検知し、同デバイスのデバイス識別情報を取得する。UPnPサービス17は、OSGiフレームワーク13が動作しているデバイスと同じネットワーク内に存在するUPnPデバイスの検知、製造者や製品名といったデバイス識別情報の取得、およびそのUPnPデバイスが持つ機能を使用するためのインターフェースを提供する。UPnPサービス17は、OSGiフレームワーク13上で動作するOSGiバンドルである。UPnPサービス17は、OSGiAllianceによって仕様化され、多くのOSGiフレームワーク上で提供されている。

図4は、OSGiバンドルプール23の構成例を示す図である。OSGiバンドルプール23は、ゲートウェイデバイス10に接続される外部デバイスのデバイス識別情報と、そのデバイスに対応するOSGiバンドルのバンドル識別情報との対応関係を記述するテーブルを有する。

デバイス識別情報は、例えば当該デバイスの製造者名と製品名のような、当該デバイスから取得することができる情報を用いて構成することができる。バンドル識別情報は、各OSGiバンドルに固有のバンドルシンボル名とバンドルバージョン番号を用いて構成することができる。OSGi規格では全てのバンドルがバンドルシンボル名を持つよう規定されているので、バンドルシンボル名によって個々のOSGiバンドルを特定することができる。なお、実際にOSGiバンドルを配信するときに備えて、OSGiバンドルの実体ファイル(jarファイル)のファイル名をバンドル識別情報に含めてもよい。

デバイスマッチング部22は、ゲートウェイデバイス10に接続された外部デバイスのデバイス識別情報をバンドル取得バンドル14から取得し、OSGiバンドルプール23が格納しているデータと比較することにより、そのデバイスに対応するOSGiバンドルを特定する。ここでいう「対応するOSGiバンドル」とは、ゲートウェイデバイス10上でそのデバイスを利用するために必要となるOSGiバンドル、インストールすることが望ましいOSGiバンドルなど、ゲートウェイデバイス10上でそのデバイスを使用する際に何らかの形態で用いられるOSGiバンドルのことである、

図5は、バンドル取得バンドル14の動作フローを示す図である。以下、図5の各ステップについて説明する。

(図5:ステップS500)
OSGiフレームワーク13は常時実行型のフレームワークであるため、バンドル取得バンドル14は新たなデバイスを検出するように常時待機している。ゲートウェイデバイス10のUSBポートにUSBデバイスが接続されるか、またはゲートウェイデバイス10が属するネットワーク内に新たなUPnPデバイスが接続され、デバイス情報取得部141がその旨を検出すると、デバイス情報取得部141は本処理フローを開始する。
(図5:ステップS501)
デバイス情報取得部141は、新たに検出した外部デバイスのデバイス識別情報を取得し、そのデバイス識別情報をバンドル取得バンドル14に通知する。

(図5:ステップS502)
バンドル取得部143は、デバイス情報取得部141より受け取ったデバイス識別情報を、HTTPリクエストに載せて配信サーバ20に送信する。バンドル取得部143は、配信サーバ20からのレスポンスを待ち受ける。
(図5:ステップS503)
バンドル取得部143は、配信サーバ20からのHTTPレスポンスがNull(ボディ部分が空)であった場合、本処理を終了する。これは送信したデバイス識別情報にマッチするOSGiバンドルが見つからなかったことを意味する。HTTPレスポンス内にバンドル識別情報が含まれている場合は、ステップS504に進む。
(図5:ステップS503:補足)
本ステップにおいて、デバイスマッチング部22は、バンドル取得部143から受け取ったデバイス識別情報に合致するOSGiバンドルのバンドル識別情報をOSGiバンドルプール23から検索し、バンドル取得部143に返信する。バンドル識別情報とは、図4で説明したバンドルシンボル名とバージョン番号である。

(図5:ステップS504)
バンドル取得部143は、ステップS503で受け取ったバンドルシンボル名とバージョン番号に一致するOSGiバンドルが既にOSGiフレームワーク13上にインストールされているか否かをチェックする。
(図5:ステップS504:補足)
バージョン番号をチェックするのは、OSGiフレームワーク13上に同じバンドルシンボルでバージョンが古いOSGiバンドルがインストールされていた場合に、それを更新するためである。この仕組みにより、ゲートウェイデバイス10をネットワークに接続する毎に、OSGiバンドルを新しいバージョンに更新することができる。

(図5:ステップS505)
ステップS504でチェックしたOSGiバンドルがOSGiフレームワーク13上に既にインストールされている場合は本処理フローを終了し、インストールされていない場合はステップS506へ進む。
(図5:ステップS506)
バンドル取得部143は、ステップS503で取得したバンドルシンボル名を載せて配信サーバ20にHTTPリクエストを送り、そのバンドルシンボル名に該当するOSGiバンドルを配信サーバ20から取得する。
(図5:ステップS506:補足)
本処理フローでは、ステップS503〜S504でいったんバンドル識別情報を取得してそのOSGiバンドルがインストール済みであるか否かをチェックし、インストールされていない場合のみ本ステップでそのOSGiバンドルを取得することとした。これは、毎回OSGiバンドルを取得すると、ゲートウェイデバイス10や配信サーバ20の処理負荷が大きくなるからである。

(図5:ステップS507)
バンドル配置・実行部142は、ステップS506で取得したOSGiバンドルをインストール・実行する。同じバンドルシンボル名でバージョン番号が古いOSGiバンドルが既にインストールされている場合は、そのOSGiバンドルを上書インストールする。インストールに成功すればステップS508に進み、失敗した場合は本処理を終了する。
(図5:ステップS508)
バンドル配置・実行部142は、インストールしたOSGiバンドルのバンドルシンボル名とバージョン番号、およびOSGiフレームワーク13に設定されているユーザIDをポータルサーバ30に送信する。ここでのユーザIDは、先に説明したように、サービスプロバイダが各ユーザを識別するために各ユーザのOSGiフレームワーク13に割り当てたIDであり、OSGiフレームワークの仕様で定められたものではない。

図6は、図5のステップS502における配信サーバ20の動作フローを示す図である。以下、図6の各ステップについて説明する。
(図6:ステップS5021)
HTTPサーバ部21は、ゲートウェイデバイス10からデバイス識別情報を付加したHTTPリクエストを受け取ると、そのデバイス識別情報をデバイスマッチング部22に渡す。デバイス識別情報を受け取ったデバイスマッチング部22は、そのデバイス識別情報に対応するOSGiバンドルをOSGiバンドルプール23から検索する。
(図6:ステップS5022)
ステップS5021でデバイス識別情報に対応するOSGiバンドルを発見できた場合はステップS5023に進み、発見できなかった場合はステップS5024に進む。

(図6:ステップS5023)
デバイスマッチング部22は、ステップS5021で発見したOSGiバンドルのバンドル識別情報(バンドルシンボル名とバージョン)をOSGiバンドルプール23から取り出してHTTPサーバ部21に渡す。HTTPサーバ部21は、ゲートウェイデバイス10にそのバンドル識別情報を返信する。
(図6:ステップS5024)
HTTPサーバ部21は、ゲートウェイデバイス10にNull(ボディ部が空白のHTTPレスポンス)を返信する。

図7は、図5のステップS506における配信サーバ20の動作フローを示す図である。以下、図7の各ステップについて説明する。
(図7:ステップS5061)
HTTPサーバ部21は、ゲートウェイデバイス10からバンドル識別情報(バンドルシンボル名とバージョン)を付加したHTTPリクエストを受け取ると、そのバンドル識別情報に該当するOSGiバンドルをOSGiバンドルプール23から取得し、ゲートウェイデバイス10に返送する。

図8は、図5のステップS502でバンドル取得部143が配信サーバ20に送信するHTTPリクエストの内容を例示する図である。バンドル取得部143は、ゲートウェイデバイス10に接続されているUSBデバイスまたはUPnPデバイスのデバイス識別情報(ここでは製造者名と製品名)を配信サーバ20に送信し、これに対応するOSGiバンドルの識別情報(バンドルシンボル名とバージョン)を取得する。

図9は、図5のステップS502で配信サーバ20がバンドル取得部143に送信するHTTPレスポンスの内容を例示する図である。デバイスマッチング部22は、HTTPサーバ部21を介して、バンドル取得部143から受け取ったデバイス識別情報に合致するバンドル識別情報(ここではバンドルシンボル名とバージョン番号)を返信する。

図10は、図5のステップS508でバンドル取得部143がポータルサーバ30に送信するHTTPメッセージの内容を例示する図である。インストール・実行されたOSGiバンドルのバンドル識別情報をユーザIDと結び付けてポータルサーバ30に送信することにより、ポータルサーバ30はどのユーザのゲートウェイデバイス10にどのOSGiバンドルがインストールされたかを知ることができる。

図11は、ポータルサーバ30がユーザに提供するWebページの画面推移を例示する図である。説明の便宜上、ステップ番号を付与した。以下、図11の各ステップに示す画面遷移について説明する。

(図11:ステップS1101)
ポータルサーバ30は、図5のステップS508において、ゲートウェイデバイス10に新たなOSGiバンドルがインストールされたことを知る。ポータルサーバ30は、そのユーザに対して当該OSGiバンドルに対応する機能が利用できるようになった旨を通知する。
(図11:ステップS1101:補足その1)
ゲートウェイデバイス10にインストールしたOSGiバンドルの一覧をポータルサーバ30から通知するのは、OSGiフレームワーク13が基本的にGUI(Graphical User Interface)を持たないため、OSGiフレームワーク13にインストールされたOSGiバンドルの利用方法をユーザに知らせる必要があるからである。OSGiフレームワークが内部的にWebサーバを備えており、Webページ形式の画面を提供できる可能性もあるが、その場合でもユーザがそのページに頻繁にアクセスしているか否かは不明である。そのため、何らかのプッシュ型手段によってユーザに通知することが望ましいと考えられる。
(図11:ステップS1101:補足その2)
本ステップにおける通知の内容は、単純にそのOSGiサービスが提供するサービスの利用方法が記載されている場合、図11に示すようにサービス利用のためのWebページへのリンクが貼られている場合、などが考えられる。前者はそのOSGiバンドルがユーザ宅のLAN内で完結しているサービスを提供している場合に適している。後者はサービスプロバイダが提供するサーバを経由して利用する形態のサービスに適している。
(図11:ステップS1101:補足その3)
本ステップにおける通知は、例えばユーザが所持する所定の電子メールアドレス宛に送信してもよいし、ゲートウェイデバイス10が備えているWebページを介して操作を実施している場合は、そのWebページ上で通知してもよい。

(図11:ステップS1102)
ユーザは、Webブラウザを操作し、サービスプロバイダから割り当てられたIDとパスワードなどを用いて、ステップS1101で受け取った通知に記載されているWebサイトなどへログインする。このWebサイトは、ポータルサーバ30が提供するものでもよいし、ポータルサーバ30上のものでなくともよい。
(図11:ステップS1103)
ユーザがWebサイトにログインすると、当該ユーザが所持するゲートウェイデバイス10にインストールされ実行されているOSGiバンドルに対応するサービスの一覧が現れる。ここでは、ユーザはXXX社のZigBeeドングル40をゲートウェイデバイス10に挿し、そのZigBeeドングル40を操作するためのOSGiバンドルがゲートウェイデバイス10にインストールされている例を示した。このページ内のリンクより、ユーザ宅のZigBeeデバイスを操作するためのページに進むことができる。

(図11:ステップS1104)
本ステップで例示している画面は、ZigBeeドングル40が提供するZigBeeネットワークにZigBeeデバイスを追加するための機能ボタンを備える。本Web画面上でこのボタンを押し、一方でユーザ宅内のZigBeeデバイスがネットワークに参加手続き(多くの場合はこれもデバイス上のボタンを押すこと)を実施すると、ZigBeeデバイスがネットワークに追加され、このWeb画面を通じて操作することができるようになる。
(図11:ステップS1105)
ステップS1104で新たなZigBeeデバイスをZigBeeネットワーク上に追加した後は、そのZigBeeデバイスを本画面上で操作することができるようになる。例えば家庭内の電気機器をZigBeeデバイスとして遠隔操作することができる。

<実施の形態1:まとめ>
以上のように、本実施形態1によれば、ユーザがゲートウェイデバイス10に新たな外部デバイスを接続すると、その外部デバイスを利用するために必要なOSGiバンドルがゲートウェイデバイス10に自動的にインストールされる。これにより、ユーザは必要なOSGiバンドルを探したりインストールしたりする作業から解放され、ユーザの負担を軽減することができる。また、新たな外部デバイスを検出した時点で配信サーバ20に対してOSGiバンドルを配信するよう要求するので、配信サーバ20にかける負担を軽減することができる。

また、本実施形態1によれば、バンドル取得部143は、新たな外部デバイスに対応するOSGiバンドルがOSGiフレームワーク13上にインストールされていない場合のみ、配信サーバ20からOSGiバンドルを取得する。これにより、ゲートウェイデバイス10と配信サーバ20双方の負担を軽減することができる。

<実施の形態2>
実施形態1では、ゲートウェイデバイス10に新たな外部デバイスが接続されたとき、これに対応するOSGiバンドルを取得する例を説明した。新たなOSGiバンドルが必要になるその他の場合として、例えば以下のような例が考えられる。

<実施の形態2:ユーザ操作に対応するOSGiバンドル>
ゲートウェイデバイス10のユーザが、ゲートウェイデバイス10上である特定の操作を実施してゲートウェイデバイス10に命令を発したとき、その命令に対応するOSGiバンドルを配信サーバ10から取得することが考えられる。例えば、ユーザがゲートウェイデバイス10上でZigBeeデバイスを操作しようとした時点で、ZigBee機能を実装したOSGiバンドルを配信サーバ20から取得することが考えられる。

この場合、配信サーバ20のOSGiバンドルプール23は、ユーザがゲートウェイデバイス10に対して発する命令と、その命令に対応するOSGiバンドルとの対応関係を記述したテーブルを備える必要がある。また、バンドル取得バンドル14は、ゲートウェイデバイス10に接続された外部デバイスを検出することに加えて、ユーザがゲートウェイデバイス10に対して発する命令を検出する必要がある。

<実施の形態2:データ種別に対応するOSGiバンドル>
ゲートウェイデバイス10に新たな外部デバイスが接続されたとき、その外部デバイスは特定種類のデータを格納している場合がある。バンドル取得部143は、そのデータ種類に対応するOSGiバンドルを配信サーバ10から取得することが考えられる。例えば外部デバイスが動画データを格納している場合、その動画データを再生するためのDLNA(Digital Living Network Alliance)プレイヤー機能を実装したOSGiバンドルを配信サーバ20から取得することが考えられる。

この場合、配信サーバ20のOSGiバンドルプール23は、外部デバイスが格納するデータ種類と、そのデータ種類に対応するOSGiバンドルとの対応関係を記述したテーブルを備える必要がある。また、バンドル取得バンドル14は、ゲートウェイデバイス10に接続された外部デバイスを検出することに加えて、その外部デバイスに格納されているデータ種類を検出する必要がある。

<実施の形態3>
実施形態1では、ゲートウェイデバイス10に接続される外部デバイスの例として、USBデバイスとUPnPデバイスを例示したが、その他種類の外部デバイスを検出するようにしてもよい。例えば、PCI(Peripheral Component Interconnect)カード、IP(Internet Protocol)デバイスなどを検出してもよい。ただし、どのようなデバイスを検出してもよいものではなく、少なくともユーザがゲートウェイデバイス10を介して利用することができるデバイスである必要がある。

10:ゲートウェイデバイス、11:OS、12:JavaVM、13:OSGiフレームワーク、14:バンドル取得バンドル、141:デバイス情報取得部、1411:USBデバイス情報取得部、1412:JSR80モジュール、1413:UPnPデバイス情報取得部、142:バンドル配置・実行部、143:バンドル取得部、15:ZigBeeバンドル、17:UPnPサービス、20:配信サーバ、21:HTTPサーバ部、22:デバイスマッチング部、23:OSGiバンドルプール、30:ポータルサーバ、40:ZigBeeドングル、100:OSGiシステム。

Claims (8)

  1. OSGiフレームワーク仕様に準拠した処理を演算装置に実行させるOSGiプログラムであって、
    OSGiフレームワークを実装したソフトウェアモジュールと、
    前記OSGiフレームワークの配下で動作する処理を記述したOSGiバンドルと、
    を備え、
    前記OSGiバンドルは、前記演算装置に、
    前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、
    前記外部デバイスを識別するデバイス識別情報を取得するステップ、
    前記デバイス識別情報に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、
    前記デバイス識別情報に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、
    を実行させ
    前記OSGiバンドルはさらに、前記演算装置に、
    前記演算装置を搭載している電子機器に対してユーザが指示した命令を検出する命令検出ステップ、
    前記命令に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、
    前記命令に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、
    を実行させる
    ことを特徴とするOSGiプログラム。
  2. OSGiフレームワーク仕様に準拠した処理を演算装置に実行させるOSGiプログラムであって、
    OSGiフレームワークを実装したソフトウェアモジュールと、
    前記OSGiフレームワークの配下で動作する処理を記述したOSGiバンドルと、
    を備え、
    前記OSGiバンドルは、前記演算装置に、
    前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、
    前記外部デバイスを識別するデバイス識別情報を取得するステップ、
    前記デバイス識別情報に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、
    前記デバイス識別情報に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、
    を実行させ、
    前記OSGiバンドルはさらに、前記演算装置に、
    前記演算装置を搭載している電子機器が格納しているデータの種類を検出するデータ検出ステップ、
    前記種類に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、
    前記種類に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、
    を実行させる
    ことを特徴とするOSGiプログラム。
  3. 前記OSGiバンドルは、前記デバイス検出ステップにおいて、前記演算装置に、
    前記電子機器が備えるUSBポートに接続されたUSBデバイスを前記外部デバイスとして検出するステップ、または前記電子機器が属しているネットワーク内に存在するUPnPデバイスを前記外部デバイスとして検出するステップの少なくともいずれかを実行させる
    ことを特徴とする請求項1または2記載のOSGiプログラム。
  4. 請求項1または2記載のOSGiプログラムと、
    前記OSGiプログラムを実行する演算装置と、
    を備えることを特徴とする電子機器。
  5. 請求項記載の電子機器と、
    前記電子機器にOSGiバンドルを配信する配信サーバと、
    を有し、
    前記配信サーバは、
    前記デバイス識別情報と前記電子機器に配信すべきOSGiバンドルとの対応関係を記述したバンドルテーブルを備え、
    前記デバイス識別情報に対応するOSGiバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するOSGiバンドルを特定し、特定したOSGiバンドルを前記電子機器に配信する
    ことを特徴とするOSGiシステム。
  6. 前記配信サーバは、
    前記電子機器から前記デバイス識別情報を受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するOSGiバンドルを特定し、特定したOSGiバンドルを識別するバンドル識別情報を前記電子機器に配信し、
    前記電子機器は、
    前記バンドル識別情報を前記配信サーバから受け取ると、そのバンドル識別情報に対応するOSGiバンドルが前記OSGiフレームワーク上にインストールされているか否かを確認し、
    インストールされていない場合はそのOSGiバンドルを配信するように前記配信サーバへ要求する
    ことを特徴とする請求項記載のOSGiシステム。
  7. 前記OSGiフレームワーク上にインストールされているOSGiバンドルの一覧を公開するポータルサーバを有し、
    前記電子機器は、
    前記OSGiフレームワーク上にインストールされているOSGiバンドルを識別するインストール済バンドル情報と、当該電子機器を識別するユーザ識別情報とを前記ポータルサーバに対して送信し、
    前記ポータルサーバは、
    前記電子機器から受け取った前記インストール済バンドル情報と前記ユーザ識別情報に基づき、前記SGiフレームワーク上にインストールされているOSGiバンドルの一覧を前記電子機器に対して公開する
    ことを特徴とする請求項記載のOSGiシステム。
  8. 電子機器と、
    前記電子機器にOSGiバンドルを配信する配信サーバと、
    を有するOSGiシステムであって、
    前記電子機器は、
    OSGiフレームワーク仕様に準拠した処理を演算装置に実行させるOSGiプログラム、
    前記OSGiプログラムを実行する前記演算装置、
    を備え、
    前記OSGiプログラムは、
    OSGiフレームワークを実装したソフトウェアモジュールと、
    前記OSGiフレームワークの配下で動作する処理を記述したOSGiバンドルと、
    を備え、
    前記OSGiバンドルは、前記演算装置に、
    前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、
    前記外部デバイスを識別するデバイス識別情報を取得するステップ、
    前記デバイス識別情報に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、
    前記デバイス識別情報に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、
    を実行させ、
    前記配信サーバは、
    前記デバイス識別情報と前記電子機器に配信すべきOSGiバンドルとの対応関係を記述したバンドルテーブルを備え、
    前記デバイス識別情報に対応するOSGiバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するOSGiバンドルを特定し、特定したOSGiバンドルを前記電子機器に配信し、
    前記OSGiシステムはさらに、
    前記OSGiフレームワーク上にインストールされているOSGiバンドルの一覧を公開するポータルサーバを有し、
    前記電子機器は、
    前記OSGiフレームワーク上にインストールされているOSGiバンドルを識別するインストール済バンドル情報と、当該電子機器を識別するユーザ識別情報とを前記ポータルサーバに対して送信し、
    前記ポータルサーバは、
    前記電子機器から受け取った前記インストール済バンドル情報と前記ユーザ識別情報に基づき、前記OSGiフレームワーク上にインストールされているOSGiバンドルの一覧を前記電子機器に対して公開する
    ことを特徴とするOSGiシステム。
JP2011196060A 2011-09-08 2011-09-08 OSGiプログラム、OSGiシステム Expired - Fee Related JP5740257B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011196060A JP5740257B2 (ja) 2011-09-08 2011-09-08 OSGiプログラム、OSGiシステム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011196060A JP5740257B2 (ja) 2011-09-08 2011-09-08 OSGiプログラム、OSGiシステム
US14/002,811 US9218174B2 (en) 2011-09-08 2012-01-24 OSGi program, OSGi system
PCT/JP2012/051446 WO2013035348A1 (ja) 2011-09-08 2012-01-24 OSGiプログラム、OSGiシステム
EP12829623.3A EP2672391B1 (en) 2011-09-08 2012-01-24 Osgi program and osgi system

Publications (2)

Publication Number Publication Date
JP2013058083A JP2013058083A (ja) 2013-03-28
JP5740257B2 true JP5740257B2 (ja) 2015-06-24

Family

ID=47831816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011196060A Expired - Fee Related JP5740257B2 (ja) 2011-09-08 2011-09-08 OSGiプログラム、OSGiシステム

Country Status (4)

Country Link
US (1) US9218174B2 (ja)
EP (1) EP2672391B1 (ja)
JP (1) JP5740257B2 (ja)
WO (1) WO2013035348A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2487587A1 (en) * 2011-02-11 2012-08-15 Alcatel Lucent Service gateway, management server and software module
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9715402B2 (en) * 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
CN105119790B (zh) * 2015-09-09 2019-02-19 小米科技有限责任公司 设备控制方法及装置
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10365909B2 (en) * 2016-04-21 2019-07-30 Data Accelerator Ltd. Method and system for deploying virtualized applications
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716663B2 (en) * 2004-02-26 2010-05-11 International Business Machines Corporation Method, system and program product for controlling native applications using open service gateway initiative (OSGi) bundles
US7640542B2 (en) * 2005-03-24 2009-12-29 Nokia Corporation Managing midlet suites in OSGI environment
JP4791910B2 (ja) * 2005-08-26 2011-10-12 株式会社リコー 画像形成装置、情報処理方法、情報処理プログラム、及び記録媒体
JP4624942B2 (ja) * 2006-03-07 2011-02-02 日本電信電話株式会社 ホームゲートウェイソフトウェアパーミッション管理システム
US8448163B2 (en) * 2006-08-15 2013-05-21 International Business Machines Corporation Deploying J2EE web applications in an OSGI environment
GB2459682B (en) * 2008-04-30 2012-04-25 Vmware Inc A computer system and a method of deploying an application in a computer system
TWI414164B (zh) * 2008-10-14 2013-11-01 Ind Tech Res Inst 用於osgi之閘道服務方法及其閘道裝置與閘道系統
JP4866930B2 (ja) * 2009-03-24 2012-02-01 日本電信電話株式会社 通信システム、通信サーバ、アクセス制御方法、アクセス制御プログラム、およびアクセス制御プログラムを記録した記録媒体
JP2011048503A (ja) * 2009-08-25 2011-03-10 Kyocera Mita Corp 画像形成装置
KR101636457B1 (ko) * 2009-12-28 2016-07-05 삼성전자주식회사 복수 개의 번들간에 서로 기능을 공유할 수 있는 프레임워크 기반으로 동작하는 화상형성장치 및 이러한 화상형성장치에 번들을 설치하는 방법

Also Published As

Publication number Publication date
EP2672391B1 (en) 2018-08-29
US20130346964A1 (en) 2013-12-26
EP2672391A4 (en) 2015-08-12
WO2013035348A1 (ja) 2013-03-14
US9218174B2 (en) 2015-12-22
EP2672391A1 (en) 2013-12-11
JP2013058083A (ja) 2013-03-28

Similar Documents

Publication Publication Date Title
JP6067732B2 (ja) エンドユーザデバイス、およびそれぞれのエンドユーザデバイスの遠隔管理のためのパブリッシュ/サブスクライブブローカを備えるシステム
KR101560470B1 (ko) 스마트 연결 장치 및 스마트 연결 장치를 활용하여 IoT 장치를 제어하기 위한 방법
TWI524787B (zh) 配置安全無線網路
EP2840813B1 (en) Service method and system using instance interface of virtualization object in internet of things environment
ES2625781T3 (es) Método de gestión de dispositivo, programa informático intermedio y plataforma de comunicaciones máquina a máquina, dispositivo y sistema
JP5676655B2 (ja) モバイルブロードバンドデバイス、およびモバイルブロードバンドデバイスを管理するための方法
EP2254310B1 (en) Web service system and method
JP3980596B2 (ja) サーバを遠隔かつ動的に構成する方法およびシステム
US20140289366A1 (en) Service providing method and system for instance hosting
EP1905205B1 (en) Residential gateway system for home network service
US8601090B1 (en) Network resource identification
JP4058845B2 (ja) ゲートウェイ装置
US7729363B2 (en) System and method for managing communication for component applications
US7853674B2 (en) System and method for provisioning component applications
US8832680B2 (en) Installation event counting apparatus and package creation method
CN102413022B (zh) 一种应用调试方法和系统
US20150113519A1 (en) Extending functionality of web-based applications
KR20130135134A (ko) 원격으로 애플리케이션들을 설치
US8825748B2 (en) Sandboxed daemon process invocation through HTTP
US20110010704A1 (en) Method and apparatus for installing application using application identifier
CN103634386A (zh) 一种客户端应用程序下载应用的方法及装置
JP2004288187A (ja) ネットワークを介した機器情報の管理装置およびその方法
DE60035348T2 (de) Verlängerbarer Bereitstellungsmechanismus für einen Diensten-gateway
EP2680500A1 (en) Application discovery
EP1355231A2 (en) Processing data files using plug-ins

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150213

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: 20150407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150427

R150 Certificate of patent or registration of utility model

Ref document number: 5740257

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees