JP2006127399A - アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム - Google Patents

アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム Download PDF

Info

Publication number
JP2006127399A
JP2006127399A JP2004318119A JP2004318119A JP2006127399A JP 2006127399 A JP2006127399 A JP 2006127399A JP 2004318119 A JP2004318119 A JP 2004318119A JP 2004318119 A JP2004318119 A JP 2004318119A JP 2006127399 A JP2006127399 A JP 2006127399A
Authority
JP
Japan
Prior art keywords
access
request
application
processing
embedded 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.)
Pending
Application number
JP2004318119A
Other languages
English (en)
Inventor
Tomohisa Yamaguchi
智久 山口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2004318119A priority Critical patent/JP2006127399A/ja
Publication of JP2006127399A publication Critical patent/JP2006127399A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 アプリケーションを動作させるための特定のアプリケーションプラットフォームを備えていない機器であっても、あたかも機器で動作しているのと同等の機能を実現することのできるアプリケーションプラットフォーム提供システムを得る。
【解決手段】 Java(登録商標)アプリケーション206からのアクセス要求に対して、組み込み機器アクセスサービス205は、組み込み機器100へのアクセス要求を行う。組み込み機器アクセスモジュール102は、サーバ200からのアクセス要求を受けた場合、処理結果を組み込み機器アクセスサービス205に応答する。組み込み機器アクセスサービス205は、この処理結果をJava(登録商標)アプリケーション206に応答する。
【選択図】 図1

Description

この発明は、所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、特定のアプリケーションプラットフォームと所定のアプリケーションとを有するサーバとを備え、所定のアプリケーションから見るとあたかもそのアプリケーションが機器上で動作しているように見えるような機能を実現するアプリケーションプラットフォーム提供システム及び方法並びにプログラムに関するものである。
組み込み機器向けのアプリケーション実行環境に関する仕組みとしては、OSGi Service Platform(http://www.osgi.org)がある。このOSGi Service Platformでは動的なモジュールの入れ替えなどをサポートしている。
また、オブジェクト指向プログラミングに基づいた携帯形情報処理装置用のソフトウェアの構築方法を提供するものがあった(例えば、特許文献1参照)。
特開平11−312079号公報
上記のOSGi Service PlatformではJava(登録商標)をベースとしており、上述したように動的なモジュールの入れ替えなど、比較的高機能な処理を必要とするため、実行環境としてConnected Device Configuration(CDC);JSR−36、JSR−218/Foundation Profile(FP);JSR−46のサブセットを要求している(OSGi Service Platform, Release3 P427−478 Execution Environment Specification)。しかしながら、CDCは比較的リソースに余裕のあるデバイス向けのものであり、リソースに制限のある携帯電話のようなデバイスではOSGi Service Platformの仕組みを利用することができなかった。また、上記特許文献1では、携帯形情報処理装置において、現在実行されているタスクに応じて制御アプリケーションのコンフィギュレーションを動的に変化させる方法を開示しているが、このような、特定のアプリケーションプラットフォームを備えていない携帯電話といった機器におけるアプリケーションの実行については示されていなかった。
この発明は上記のような課題を解決するためになされたもので、アプリケーションを動作させるための特定のアプリケーションプラットフォームを備えていない機器であっても、サーバ上のアプリケーションから見るとあたかも機器で動作しているのと同等の機能を実現することのできるアプリケーションプラットフォーム提供システム及び方法並びにそのプログラムを得ることを目的とする。
この発明に係るアプリケーションプラットフォーム提供システムは、所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、特定のアプリケーションプラットフォームと所定のアプリケーションとを有するサーバとを備え、特定のアプリケーションプラットフォーム上で動作し、アプリケーションから機器固有の処理に関するアクセス要求があった場合、このアクセス要求に基づいて機器への処理要求を行い、かつ、機器より処理結果を受信した場合は、これをアプリケーションに応答するアクセスサービスをサーバ側に設け、アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果をアクセスサービスに対して応答するアクセスモジュールを機器側に設けたものである。
この発明のアプリケーションプラットフォーム提供システムは、アプリケーションからのアクセス要求に対してサーバ側のアクセスサービスと機器側のアクセスモジュールとによって処理するようにしたので、サーバ上のアプリケーションから見るとあたかも機器上で動作しているのと同等の機能を実現することができる。
実施の形態1.
図1は、この発明の実施の形態1によるアプリケーションプラットフォーム提供システムを示す構成図である。
図において、アプリケーションプラットフォーム提供システムは、組み込み機器(機器)100とサーバ200とこれらを接続するためのネットワーク300からなる。組み込み機器100は、実行環境となるリソースに制限を有する機器であり、組み込みOS101、組み込み機器アクセスモジュール(アクセスモジュール)102を備え、組み込み機器アクセスモジュール102は、リソースアクセス部103と組み込み機器側通信部104を備えている。サーバ200は、実行環境となるリソースに余裕のあるコンピュータであり、サーバOS201、Java(登録商標)VM202、OSGiフレームワーク203、バンドル204、組み込み機器アクセスサービス(アクセスサービス)205を備えている。また、バンドル204は、Java(登録商標)アプリケーション206を有し、組み込み機器アクセスサービス205は、リソースアクセスI/F部207とサーバ側通信部208とを備えている。
組み込み機器100における組み込みOS101は、組み込み機器アクセスモジュール102といった組み込み機器100のソフトウェアが動作するためのオペレーティングシステムである。リソースアクセス部103は、組み込み機器100のファイルやネットワークといったリソースにアクセスするためのモジュールである。組み込み機器側通信部104は、ネットワーク300を介してサーバ200との通信を行うための、組み込み機器100側の通信インタフェースである。また、組み込み機器側通信部104は、サーバ200からの接続待ちを行えるものとする。
サーバ200におけるサーバOS201は、サーバ200において全てのソフトウェアが動作する際の基本となるオペレーティングシステムである。Java(登録商標)VM202は、サーバOS201上で動作するJava(登録商標)仮想マシンである。また、OSGiフレームワーク203は、Java(登録商標)VM202上で動作するフレームワークであり、動的なモジュールのインストール/アンインストール、開始、停止、更新などアプリケーションのライフサイクルの管理とOSGiフレームワーク203上にインストールされているアプリケーションを、同じくOSGiフレームワーク203にインストールされているアプリケーションから利用できる仕組みなどを提供する。
バンドル204は、OSGiフレームワーク203においてJava(登録商標)アプリケーション206の動的な入れ替えを行うための単位となるものであり、通常、バンドル204はJARファイルとして提供され、Java(登録商標)アプリケーション206はこのバンドル204に入れられている。組み込み機器アクセスサービス205は、Java(登録商標)アプリケーション206から、組み込み機器100へのリソースアクセス要求を受けた場合、リソースアクセス用オブジェクトを生成すると共に、このリソースアクセス用オブジェクトに基づいて組み込み機器100への処理要求を行う機能を有している。リソースアクセスI/F部207は、Java(登録商標)アプリケーション206が組み込み機器100のリソースにアクセスするためのインタフェースを提供する機能部であり、サーバ側通信部208は、ネットワーク300を介して組み込み機器100と通信を行うためのサーバ200側の通信部である。
次に、実施の形態1の動作について説明する。
尚、組み込み機器100のリソースにアクセスする必要がない処理に関してはサーバ200上で行われるため、この処理についての説明は省略する。
先ず、サーバ200では、組み込み機器アクセスサービス205が動作しており、サーバ側通信部208を使用して組み込み機器アクセスモジュール102からの接続を待っている。サーバ側通信部208と組み込み機器側通信部104との通信は、直接、TCP/IP上で行ってもよいし、HTTPやSIP等のプロトコル上のように同様なものでも構わない。
次に、組み込み機器100が起動して組み込み機器アクセスモジュール102が開始されると、組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用して、組み込み機器アクセスサービス205に接続しにいく。接続に失敗した場合は設定ファイル等(図示しない)で指定された間隔でリトライする。設定ファイルにはリトライ間隔のほか、サーバ200のIPアドレス、接続待ちをしているポート番号、組み込み機器を識別するための組み込み機器IDを記述しておく。
次に、組み込み機器アクセスモジュール102は組み込み機器側の情報を組み込み機器アクセスサービス205に送信する。組み込み機器側の情報としては組み込み機器のIPアドレス、接続待ちを行うポート番号、組み込み機器IDからなる。組み込み機器アクセスモジュール102は、組み込み機器側の情報を送信した後は一旦サーバ2との接続を切り、今度は先ほど組み込み機器側の情報として送ったポート番号で接続を待つ。
次に、組み込み機器100側の情報を受け取った組み込み機器アクセスサービス205は、組み込み機器IDをキーとして組み込み機器100のIPアドレスおよび接続待ちを行うポート番号を登録する。
次に、バンドル204を組み込み機器アクセスサービス205を使用し、組み込み機器IDを指定してインストールする。組み込み機器アクセスサービス205は、OSGiフレームワーク203の機能を使用してバンドル204をOSGiフレームワーク203に登録する。このとき、組み込み機器アクセスサービス205は、バンドル204をインストールした際にOSGiフレームワーク203から得られるバンドルIDを先ほど受け取った組み込み機器IDと対応させて保存しておく。ここで、バンドル204はネットワーク300越しにインストールしてもよいし、サーバ200のローカルファイルシステムからインストールしてもよい。バンドル204のインストールに関してはOSGi Service Platformで規定しているのでここではその説明を省略する。
次に、OSGiフレームワーク203の機能を利用してJava(登録商標)アプリケーション206を起動させる。ここで、Java(登録商標)アプリケーション206がそのプログラム中で組み込み機器100が提供するリソースにアクセスする場合を考える。組み込み機器100が提供するリソースとしてはファイルやネットワークがある。Java(登録商標)でいえばFileクラスやSocketクラスなどである。通常、Java(登録商標)アプリケーションではまず各クラスのオブジェクトをそのクラスのコンストラクタを使用して生成する。例えばFileオブジェクトを生成したい場合は
File f = new File(ファイル名);
となる。
この実施の形態では上記の処理を次のように行う。即ち、先ずJava(登録商標)アプリケーション206では、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205を取り出し、リソースアクセスI/F部207を利用してリソースアクセス用オブジェクトを取り出す。リソースアクセス用オブジェクトは、本来生成したいFileクラスのサブクラスのオブジェクトとして生成される。実際には
File f = 組み込みアクセスサービス.getEDRAFile(ファイル名)
のようになる。
ここでEDRA(Embeded Device Resource Access)はメソッド名の重複を防ぐために付けたものである。そしてその後に生成したいオブジェクトのクラス名、コンストラクタで指定するパラメータを指定する。上述した通り、リソースアクセス用オブジェクトは本来生成したいクラスのサブクラスであるので、生成したあとは本来のクラスとまったく同様に扱うことが可能となる。
ここでリソースアクセス用オブジェクトの生成処理手順について説明する。
図2は、この処理手順を示す説明図である。尚、図中の括弧付き数字の処理は、以下の(1)〜(9)に対応している。また、これ以降の説明において、図中の数字と実施の形態中の説明は対応しているものとする。
(1)Java(登録商標)アプリケーション206は、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205を取り出す。
(2)更に、Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205から上記したようなgetEDRAXXX(パラメータ)メソッドを使用してリソースアクセス用オブジェクトの取り出し要求を出す(XXXはリソースへのアクセスがあるクラス名、パラメータはそのクラスのコンストラクタと同じフォーマット)。
(3)組み込み機器アクセスサービス205は、リソースアクセス用オブジェクトを生成する。このときパラメータとして組み込み機器アクセスサービス205とリソースアクセス用オブジェクトの取り出しで渡されたパラメータを渡す。
ここで、設定ファイル等によりリソースアクセス用オブジェクトを生成するのではなく、本来生成したいクラスのオブジェクトを生成して返すようにしてもよい。本来のクラスのオブジェクトを生成した場合は以下の処理は行われず、リソースにアクセスがあった場合はJava(登録商標)アプリケーション206が動作している同一の機器上のリソースにアクセスすることになる。このようにすることにより、組み込み機器アクセスサービスを利用してリソースにアクセスするJava(登録商標)アプリケーション206を変更することなく、比較的リソースに余裕があり、OSGiフレームワーク203が動作するような組み込み機器でそのまま動作させることも可能となる。
(4)リソースアクセス用オブジェクトは、組み込み機器アクセスサービス205に対して、組み込み機器アクセスモジュール102に、このリソースアクセス用オブジェクトが生成されたというコマンドを送るように依頼する。このときパラメータとして、(a)このリソースアクセス用オブジェクトを識別するためのリソースアクセス用オブジェクトID、(b)組み込み機器アクセスモジュール102に要求するコマンド(ここではコンストラクタなので例えば”construct”となる)とパラメータからなる文字列、(c)コマンドに付随するデータ、(d)このリソースアクセス用オブジェクト(this)を渡す。以下、このリソースアクセス用オブジェクトが使用される度に、このパラメータを使用してコマンドが送られる。ここでリソースアクセス用オブジェクトIDの書式の例を以下に示す。
クラス名+このオブジェクトのハッシュコード値+現在の時間の一部
(時間の一部はハッシュコード値が特定の桁に足りない分を時間の最後から補う)
(5)組み込み機器アクセスサービス205は、組み込み機器アクセスモジュール102から結果が返ってきたときにリソースアクセス用オブジェクトに結果を通知できるように上記(a)をキーとして上記(d)を保存しておく。そして、組み込み機器アクセスサービス205は、サーバ側通信部208を使って組み込み機器アクセスモジュール102に対し、渡されたパラメータに従いコマンドデータを送信する。このとき送信されるコマンドデータの書式の例を以下に示す。
(e)のサイズ4バイト+(e)+(c)のサイズ4バイト+(c)
((e)は(a)+” ”+(b))
サーバ側通信部208は、要求されたデータ送信を行う前に、組み込み機器アクセスサービス205に登録されているバンドル204がインストールされた際に指定された組み込み機器IDに対応するIPアドレス、ポート番号で接続を行い、この接続した通信路に対してデータ送信を行う。以降の各通信処理において通信路が確保されていない場合はこの処理を行うものとする。
(6)組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してコマンドデータを受信し、このコマンドデータを解析し、対応するリソースの準備を行う。
(7)組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してリソースが準備できたかどうかの結果を結果データとして組み込み機器アクセスサービス205に送信する。結果データの書式の例を以下に示す。
(a)のサイズ4バイト+(a)+結果のサイズ4バイト+結果
(8)組み込み機器アクセスサービス205は、サーバ側通信部208を使用して結果データを受信する。そしてこの結果データに含まれる(a)に対応する(d)を取り出し、この保存領域をクリアした後、取り出したリソース用オブジェクトに結果を渡す。
リソースアクセス用オブジェクトは、結果を受け取り、この結果をチェックし、問題がなければコンストラクタでの処理を終了する。一方、問題が発生していれば例外をスローまたはその他の方法で結果を返す(本来生成したいクラスのコンストラクタのAPIに依存する)。
(9)組み込み機器アクセスサービス205は、(8)の結果を受けて、(3)で生成したリソースアクセス用オブジェクトまたは例外を返す。
次に、リソースアクセス用オブジェクトを使用して組み込み機器100のリソースにアクセスする場合の処理手順について説明する。これはリソースアクセス用オブジェクトへのメソッド呼び出しという形で行われる。
リソースアクセス用オブジェクトのメソッド呼び出しには以下の2つのパターンがある。
・戻り値が数値や文字列などのネットワークを通して送信可能なものである場合
・戻り値が入力ストリームなどネットワークを通して送信不可能なものである場合
以下にそれぞれの場合のメソッド呼び出しの処理手順について説明する。
図3は、戻り値がネットワークを通して送信可能なものである場合の処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、リソースアクセス用オブジェクトのメソッドを呼び出す。
(2)リソースアクセス用オブジェクトは、組み込み機器アクセスサービス205に対して、組み込み機器アクセスモジュール102に、Java(登録商標)アプリケーション206から呼び出されたメソッドに対応するコマンドを送るように、リソースアクセス用オブジェクトの生成処理手順(4)で説明した方法で依頼する。
(3)組み込み機器アクセスサービス205は、リソースアクセス用オブジェクトの生成処理手順(5)で説明したようにリソースアクセス用オブジェクトを保存し、渡されたパラメータに従ってコマンドデータを送信する。
(4)組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してコマンドデータを受信し、このコマンドデータを解析し、リソースアクセス部103を使用してリソースにアクセスし、結果を取り出す。
(5)組み込み機器アクセスモジュール102は、この結果をリソースアクセス用オブジェクトの生成処理手順(7)で説明したように結果データを送信する。
(6)組み込み機器アクセスサービス205は、リソースアクセス用オブジェクトの生成処理手順(8)で説明したように、送られてきた結果データからリソースアクセス用オブジェクトIDと結果とを取り出し、このリソースアクセス用オブジェクトIDに対応する保存しておいたリソースアクセス用オブジェクトを取り出し、保存領域をクリアした後、取り出したリソースアクセス用オブジェクトに結果を渡す。
(7)リソースアクセス用オブジェクトは、渡された結果をメソッドの戻り値としてリターンする。
次に、戻り値がネットワークを通して送信不可能なものである場合の処理手順について説明する。
図4は、この処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、リソースアクセス用オブジェクトのメソッドを呼び出す。
(2)リソースアクセス用オブジェクトは、戻り値用オブジェクトを生成する。このときパラメータとして組み込み機器アクセスサービス205とリソースアクセス用オブジェクトの生成処理手順(4)で説明したリソースアクセス用オブジェクトIDを渡す。
(3)戻り値用オブジェクトは、組み込み機器アクセスサービス205に対して、組み込み機器アクセスモジュール102に、(2)で受け取ったリソースアクセス用オブジェクトIDに関連した戻り値用オブジェクトが生成されたというコマンドを送るように依頼する。このときパラメータとして、(a)この戻り値用オブジェクトを識別するための戻り値用オブジェクトID(書式の例としてはリソースアクセス用オブジェクトの生成処理手順(4)で説明したリソースアクセス用オブジェクトIDと同じ)、(b)組み込み機器アクセスモジュール102に要求するコマンドおよび(2)で受け取ったリソースアクセス用オブジェクトID(ここではコンストラクタなので例えば”construct”+” ”+リソースアクセス用オブジェクトIDとなる)とパラメータからなる文字列、(c)コマンドに付随するデータ、(d)この戻り値用オブジェクト(this)を渡す。
(4)組み込み機器アクセスサービス205は、リソースアクセス用オブジェクトの生成処理手順(5)で説明したように(リソースアクセス用オブジェクトの生成処理手順(5)ではリソースアクセス用オブジェクトであるが、ここでは戻り値用オブジェクトになる)、戻り値用オブジェクトを保存し、渡されたパラメータに従って組み込み機器アクセスモジュール102にコマンドデータを送信する。
(5)組み込み機器アクセスモジュール102は、コマンドデータを受信し、このコマンドデータを解析し、対応する戻り値用リソースの準備を行う。
(6)組み込み機器アクセスモジュール102は、戻り値用リソースが準備できたかどうかの結果を結果データとして、リソースアクセス用オブジェクトの生成処理手順(7)で説明した書式で、組み込み機器アクセスサービス205に送信する。
(7)組み込み機器アクセスサービス205は、リソースアクセス用オブジェクトの生成処理手順(8)で説明したように(リソースアクセス用オブジェクトの生成処理手順(8)ではリソースアクセス用オブジェクトIDであるが、ここでは戻り値用オブジェクトIDになる)、送られてきた結果データから戻り値用オブジェクトIDと結果を取り出し、この戻り値用オブジェクトIDに対応する保存しておいた戻り値用オブジェクトを取り出し、保存領域をクリアしたあと、取り出した戻り値用オブジェクトに結果を渡す。
戻り値用オブジェクトは、結果を受け取り、この結果をチェックし、問題がなければコンストラクタでの処理を終了する。一方、問題が発生していれば例外をスローまたはその他の方法で結果を返す(呼び出されたメソッドのAPIに依存する)。
(8)リソースアクセス用オブジェクトは(7)の結果を受けて、(2)で生成した戻り値用オブジェクトまたは例外または結果(例えばnullや−1など)を返す。
以上のような方法により、Java(登録商標)アプリケーションはリソースにアクセスする必要があるクラスを使用する場合に、そのオブジェクトの生成方法を変更する以外は通常のプログラミングと同様に行うことができる。またコンストラクタの代わりに呼ばれるメソッドもコンストラクタとほぼ同様な書式で記述することができるため、ネットワーク越しに実行するための特別なAPIを学習・使用する必要もない。
以上のように、実施の形態1のアプリケーションプラットフォーム提供システムによれば、所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、特定のアプリケーションプラットフォームと所定のアプリケーションとを有するサーバとを備え、サーバは、特定のアプリケーションプラットフォーム上で動作し、アプリケーションから機器固有の処理に関するアクセス要求があった場合、アクセス要求に基づいて機器への処理要求を行い、かつ、機器より処理結果を受信した場合は、処理結果をアプリケーションに応答するアクセスサービスとを備え、機器は、アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果をアクセスサービスに対して応答するアクセスモジュールを備えたので、サーバ上のアプリケーションから見るとあたかも機器上で動作しているのと同等の機能を実現することができる。
また、実施の形態1のアプリケーションプラットフォーム提供システムによれば、アクセスサービスは、所定のアプリケーションから機器のリソースアクセス要求を受けた場合、リソースアクセス用オブジェクトを生成すると共に、リソースアクセス用オブジェクトに基づいて機器への処理要求を行うようにしたので、機器側のリソースに対して、サーバ上のアプリケーションは、ネットワーク等を意識することなくアクセスすることができる。
また、実施の形態1のアプリケーションプラットフォーム提供システムによれば、アクセスモジュールは、サーバからのアクセス要求の接続待ちを行い、アクセスサービスは、機器への処理要求が発生した場合に、アクセスモジュールに対して接続を行うようにしたので、アプリケーションから機器への要求はサーバが要求するタイミングで行うことができるため、アクセスに対する応答を直ちに得ることができる。
また、実施の形態1のアプリケーションプラットフォーム提供システムによれば、特定のアプリケーションプラットフォームは、Java(登録商標)VMと当該Java(登録商標)VM上で動作する所定のフレームワークからなり、所定のアプリケーションはJava(登録商標)アプリケーションとしたので、リソースに制限がありJava(登録商標)VMを動作させることができない組み込み機器であっても適用することができる。
また、実施の形態1のアプリケーションプラットフォーム提供方法によれば、所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、特定のアプリケーションプラットフォームと所定のアプリケーションとを有するサーバとを備え、アプリケーションから機器固有の処理に関するアクセス要求があった場合、特定のアプリケーションプラットフォーム上で動作するアクセスサービスが、アクセス要求に基づいて機器への処理要求を行い、機器は、アクセスサービスからの処理要求に基づいて機器固有の処理を行って、その処理結果をアクセスサービスに対して応答し、アクセスサービスは、機器より処理結果を受信した場合は、処理結果をアプリケーションに応答するようにしたので、サーバ上のアプリケーションから見るとあたかも機器上で動作しているのと同等の機能を提供することができる。
また、実施の形態1のアプリケーションプラットフォーム提供プログラムによれば、所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器を構成するコンピュータと、特定のアプリケーションプラットフォームと所定のアプリケーションとを有するサーバを構成するコンピュータとを、サーバを構成するコンピュータ上で、特定のアプリケーションプラットフォーム上で動作し、アプリケーションから機器固有の処理に関するアクセス要求があった場合、アクセス要求に基づいて機器への処理要求を行い、かつ、機器より処理結果を受信した場合は、処理結果をアプリケーションに応答するアクセスサービスとして機能させ、機器を構成するコンピュータ上で、アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果をアクセスサービスに対して応答するアクセスモジュールとして機能させるようにしたので、サーバ上のアプリケーションから見るとあたかも機器上で動作しているのと同等の機能を実現するプログラムを提供することができる。
実施の形態2.
図5は、この発明の実施の形態2によるアプリケーションプラットフォーム提供システムを示す構成図である。
実施の形態2は、組み込み機器100aとサーバ200aとネットワーク300からなる。組み込み機器100aは、組み込みOS101、組み込み機器アクセスモジュール(アクセスモジュール)102aとネイティブライブラリ105を備え、組み込み機器アクセスモジュール102aは、リソースアクセス部103と組み込み機器側通信部104とネイティブライブラリアクセス部106を備えている。この組み込み機器100aにおいて、組み込みOS101、リソースアクセス部103、組み込み機器側通信部104は、実施の形態1と同様の構成であるため、これらの説明は省略する。
サーバ200aは、サーバOS201、Java(登録商標)VM202、OSGiフレームワーク203、バンドル204a、組み込み機器アクセスサービス(アクセスサービス)205aを備えている。バンドル204aは、Java(登録商標)アプリケーション206とネイティブライブラリ209とを備え、組み込み機器アクセスサービス205は、リソースアクセスI/F部207とサーバ側通信部208とネイティブライブラリアクセスI/F部210を備えている。ここで、ネイティブライブラリ209およびネイティブライブラリアクセスI/F部210以外の構成は、実施の形態1と同様であるため、これらの説明は省略する。
組み込み機器100aにおけるネイティブライブラリ105は、組み込み機器100a上で動作するネイティブライブラリであり、サーバ200a側のネイティブライブラリ209がインストールされたものである。ネイティブライブラリアクセス部106は、ネイティブライブラリ105にアクセスするための組み込み機器アクセスモジュール102aに備えられたネイティブライブラリアクセス部である。即ち、組み込み機器アクセスモジュール102aは、サーバ200a側からのネイティブライブラリ呼び出し要求を受けた場合は、ネイティブライブラリへのアクセスを行う機能を有している。
サーバ200aにおけるネイティブライブラリ209は、例えば、サーバOS201上で動作するネイティブライブラリであり、組み込み機器100aにインストールされるネイティブライブラリである。ネイティブライブラリアクセスI/F部210は、組み込み機器アクセスサービス205aに備えられた、Java(登録商標)アプリケーション206がネイティブライブラリ105にアクセスするためのインタフェースを提供するものである。即ち、組み込み機器アクセスサービス205aは、Java(登録商標)アプリケーション206から、ネイティブライブラリへのアクセス要求を受けた場合は、組み込み機器100aへのネイティブライブラリ呼び出し要求を行う機能を有している。
本実施の形態の構成は以上のようになっており、以下、サーバ上で動作するJava(登録商標)アプリケーション206が組み込み機器100a上で動作するネイティブライブラリ105にアクセスする実行手順について説明する。
Java(登録商標)アプリケーション206を起動させるまでの処理は実施の形態1と同様であるためここでの説明は省略する。
ここでJava(登録商標)アプリケーション206がそのプログラム中でネイティブライブラリ105にアクセスする場合を考える。Java(登録商標)ではネイティブライブラリにアクセスするためには、まずネイティブライブラリのロードを行う必要がある。ここではネイティブライブラリを組み込み機器100aにインストールし、使用できるようにロードする処理を行うことになる。
図6は、ネイティブライブラリのロード処理を示す説明図である。
(1)Java(登録商標)アプリケーション206は、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205aを取り出す。
(2)更に、Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205aにネイティブライブラリのロード要求を出す。このときパラメータとしてネイティブライブラリ名を渡す。
(3)更に、組み込み機器アクセスサービス205aはパラメータで与えられたネイティブライブラリ名を使用して、Java(登録商標)アプリケーション206に対応するバンドル204aからネイティブライブラリ209を取り出す。
(4)更に、組み込み機器アクセスサービス205aはコマンドデータを組み込み機器アクセスモジュール102aに対し送信する。このとき送信されるコマンドデータの書式の例を以下に示す。
(d)のサイズ4バイト+(d)+(c)のサイズ4バイト+(c)
ここで(a)は組み込み機器アクセスサービスを示すIDで、例えば全てのバイトを0にしたIDである。また、(b)は組み込み機器アクセスモジュール102aに要求するコマンドでここでは”loadLibrary”となる。更に、(c)は(3)で取り出したネイティブライブラリ、(d)は(a)+” ”+(b)である。
サーバ側通信部208は要求されたデータ送信を行う前に、組み込み機器アクセスサービス205aに登録されているバンドル204aがインストールされた際に指定された組み込み機器IDに対応するIPアドレス、ポート番号で接続を行い、この接続した通信路に対してデータ送信を行う。以降の各通信処理において通信路が確保されていない場合はこの処理を行うものとする。
(5)組み込み機器アクセスモジュール102aは、組み込み機器側通信部104を使用してコマンドデータを受信し、このコマンドデータを解析し、コマンドデータに含まれるネイティブライブラリを組み込みOS101にロードさせる。
(6)組み込み機器アクセスモジュール102aは、組み込み機器側通信部104を使用してネイティブライブラリがロードできたかの結果を結果データとして組み込み機器アクセスサービス205aに送信する。結果データの書式の例を以下に示す。
(a)のサイズ4バイト+(a)+結果のサイズ4バイト+結果
(7)組み込み機器アクセスサービス205aは、サーバ側通信部208を使用して結果データを受信する。そしてこの結果データに含まれる結果を取り出し、この結果をJava(登録商標)アプリケーション206に返す。
ここでネイティブライブラリ209のロードは組み込み機器アクセスサービス205aが持つI/FをJava(登録商標)アプリケーション206が使用して行ったが、これを実施の形態1と同じようにリソースアクセス用オブジェクトを使用して行うこともできる。この場合はまずネイティブライブラリをロードする場合に使用するSystemクラスのリソースアクセス用オブジェクトを取り出し、このリソースアクセス用オブジェクトのloadLibrary(String)メソッドを使用することによって行うことができる。これの手順については実施の形態1で説明したのでここでは省略する。
次に、Java(登録商標)アプリケーション206がそのプログラム中でネイティブライブラリ105にアクセスする実行手順について説明する。
一般的に、Java(登録商標)では、ネイティブライブラリはJNI(Java(登録商標) Native Interface)を用いて作成される。このため本実施の形態でもネイティブライブラリとのI/FはJNIを用いることとする。ここではJNIとするがネイティブライブラリのI/Fとして独自のものでも構わない。
ネットワーク300越しにネイティブライブラリ105が提供するメソッドを呼び出す場合、Java(登録商標)アプリケーション206が呼び出したメソッドを元に、組み込み機器アクセスサービス205aで対応するJNIに基づいた関数名を作り出し、ネットワーク300を通してその関数名とパラメータを送信する。そして、送られてきたデータを元に組み込み機器アクセスモジュール102aが対応するネイティブライブラリ105の関数を呼び出す。
しかし、組み込み機器アクセスモジュール102aにおいて、メソッドに対応する関数名さえ分かればネイティブライブラリ105からメソッドに対応する関数のポインタは取り出せるが、パラメータの個数とタイプの組み合わせは無限にあるため、取り出した関数をキャストすることができず、よって関数呼び出しが出来ないという問題がある。
この解決手段として以下の2つの方法が考えられる。
・パラメータの個数を制限するためにメソッドで使用するパラメータは配列の1個のみとし、かつ配列で与えるパラメータのタイプをオブジェクトとする。そしてネイティブライブラリ側でパラメータを配列から取り出し、取り出したオブジェクトを目的のタイプにキャストして使用する(定型パラメータ方式とする)。
・組み込み機器アクセスサービス205a側でJava(登録商標)アプリケーション206が呼び出すメソッドの情報を元に、ネイティブライブラリ105にアクセスできるようなモジュールを動的に生成し、このモジュールを組み込み機器アクセスモジュール102aに送り、組み込み機器アクセスモジュール102aはこのモジュールを使用してネイティブライブラリ105が提供する関数を呼び出す(動的コンパイル方式とする)。
以下に、これらの方式の処理手順について説明する。
先ず、定型パラメータ方式について説明する。
定型パラメータ方式ではネイティブメソッドを以下の書式にする必要がある。
可視性修飾子 Object メソッド名(Object[] args)
可視性修飾子は、例えばpublicやprivateなどである。次のObjectはリターン値のためのもの、そしてメソッド名と続き、最後にパラメータの配列となる。
図7は、定型パラメータ方式の処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205aのネイティブライブラリアクセスI/F部210を利用して、ネイティブライブラリ105が提供するメソッドの呼び出し要求を行う。呼び出し要求のメソッドの例を以下に示す。
publuc Object invoke(Object obj,String methodname,Object[] args)
ここでパラメータの内容は、
obj−メソッドを呼び出すオブジェクト(実際にはthisを指定)。
methodname−呼び出すメソッドの名前。
args−メソッドに設定するパラメータの配列。1番目のパラメータはargs[0]へ、2番目のパラメータはargs[1]へ、以下同様。パラメータがない場合はnullを指定する。
また戻り値としてはメソッドのリターン値を格納するためのObjectになる。
(2)組み込み機器アクセスサービス205aは与えられたパラメータから、このメソッドに対応する関数名を組み立てる。またパラメータで与えられたobj、argsの各要素に対してIDを割り当てる。割り当てるIDは実施の形態1でリソースアクセス用オブジェクトに割り当てたIDと同じ書式とする。そして組み込み機器アクセスモジュール102aに対しネイティブメソッド対応関数呼び出し要求用のデータを送信する。このデータの書式の例を以下に示す。
(e)のサイズ4バイト+(e)+(f)のサイズ4バイト+(f)
ここで(a)はobjのID
(b)はコマンド(ここでは”invoke”となる)
(c)は関数名
(d)はargs[0]のID+” ”+args[1]のID+” ”+args[2]のID+・・・
(e)は(a)+” ”+(b)
(f)は(c)+” ”+(d)
である。
(3)組み込み機器アクセスモジュール102aでは、送られてきた関数名から関数を取り出す。関数の型は以下のようになる。
jobject JNICALL 関数名(JNIEnv *env,jobject thisClass,jobjectArray params)
ここで、第一パラメータはJNIポインタで、メソッドの呼び出しやフィールドへのアクセスなどネイティブ側からJava(登録商標)の情報にアクセスする場合はこのJNIポインタを使用する。第二パラメータはthisポインタ、第三パラメータはメソッドのパラメータで、ネイティブメソッドのパラメータをオブジェクトの配列にしたことからjobjectArrayになる。
(4)更に、組み込み機器アクセスモジュール102aでは、(2)で送られてきたobjのIDとargsの各IDを、関数のパラメータとして与えるthisClassに設定する。argsに関しては更にparamsに設定する。
(5)更に、組み込み機器アクセスモジュール102aでは、ネイティブライブラリアクセス部106を使用して(3)で取り出した関数に(4)で準備した各パラメータを与えて呼び出す。
(6)ネイティブライブラリ105において関数を実行する。もしこの中でフィールドやオブジェクトにアクセスが発生した場合の処理は(7)〜(11)のようになる。
(7)パラメータで与えられたJNIポインタを使用してJNIでアクセスする。
(8)ネイティブライブラリ105がJava(登録商標)の情報にアクセスする場合、パラメータで与えられたthisClassやparamsの各要素にアクセスする場合は(4)で設定したIDとその処理コマンドを組み込み機器アクセスサービス205aに送信する。また新規オブジェクトを生成する場合は仮IDとその処理コマンドを組み込み機器アクセスサービス205aに送信する。仮IDは例えば(4)で使用したIDと同じ桁分の”1”などを使用する(”0”はネイティブライブラリをロードする際に組み込み機器アクセスサービス205aのIDとして使用しているため使用できないが、通常のIDに割り当てられるようなID以外の値なら特に問題ない)。ここで組み込み機器アクセスサービス205aに送信するデータの書式の例を以下に示す。
(g)のサイズ4バイト+(g)+(h)のサイズ4バイト+(h)
ここで(g)はパラメータで与えられたjobjectのIDまたは仮ID
(h)はコマンド名+” ”+第一パラメータの型+” ”+第一パラメータの値+” ”+第二のパラメータの型+” ”+第二パラメータの値+・・・
または”getfield”+” ”+フィールド名
ここで、パラメータの値としては
・パラメータの型がオブジェクトの場合はID
・パラメータの型がプリミティブの場合は値を文字列にしたもの
となる。
(9)組み込み機器アクセスサービス205aでは送られてきたデータから対応する処理を実行する。
(10)そして、組み込み機器アクセスサービス205aでは実行結果を組み込み機器アクセスモジュール102aに送信する。ここで組み込み機器アクセスモジュール102aに送信するデータの書式の例を以下に示す。
(g)のサイズ4バイト+(g)+(i)のサイズ4バイト+(i)
ここで(i)はコマンドに対する戻り値である。戻り値がオブジェクトの場合はID、それ以外の場合はプリミティブ(戻り値をもらう関数は戻り値のタイプを知っているので、戻り値をポインタで渡せばキャストして値を得ることができる)となる。
(11)組み込み機器アクセスモジュール102aはJNIで定義されているタイプで値を返す。
(12)ネイティブライブラリ105は関数の戻り値を返す。戻り値のタイプはjobjectとなる。
(13)組み込み機器アクセスモジュール102aは、結果を組み込み機器アクセスサービス205aに送信する。結果データの書式の例を以下に示す。
(a)のサイズ4バイト+(a)+(j)のサイズ4バイト+(j)
ここで(j)はメソッド呼び出しの戻り値であるObjectのID
(14)組み込み機器アクセスサービス205aは、送られてきた結果データのObjectをリターン値として返す。
次に動的コンパイル方式について説明する。
動的コンパイル方式では定型パラメータ方式のようなネイティブメソッドの書式に対する制限はない。
図8は、動的コンパイル方式の処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205aのネイティブライブラリアクセスI/F部210を利用して、ネイティブライブラリ105が提供するメソッドの呼び出しを行う。呼び出し要求のメソッドの例を以下に示す。
public Object invoke(Object obj,String methodname,String returntype,
String[] argstypes,Object[] args)
ここでパラメータの内容は
obj−メソッドを呼び出すオブジェクト(実際にはthisを指定)
methodname−呼び出すメソッドの名前
returntype−戻り値のタイプ
argstype−メソッドに設定するパラメータのタイプの配列
args−メソッドに設定するパラメータの配列。タイプがプリミティブの場合はそのプリミティブに対応するクラスで設定する。
また、戻り値としてはメソッドのリターン値を格納するためのObjectである。タイプがプリミティブの場合はそのプリミティブに対応するクラスで返されるので、Java(登録商標)アプリケーション206は返されたクラスからプリミティブに変換する必要がある。
ここで、戻り値およびパラメータのタイプはJNIのJava(登録商標)のシグニチャ記号と同じものを使ってもよいし、独自のものを使ってもよい。
(2)組み込み機器アクセスサービス205aは与えられたパラメータから、このメソッドに対応する関数名を組み立てる。またパラメータで与えられたobjおよびargsで与えられた各要素の中でタイプがクラスであるものに対してIDを割り当てる。割り当てるIDは実施の形態1でリソースアクセス用オブジェクトに割り当てたIDと同じ書式とする。また、与えられたパラメータから、ネイティブライブラリにアクセスするためのネイティブライブラリアクセス用モジュールのソースを生成する。このとき、既に同じメソッドに対するネイティブライブラリアクセス用モジュールが作成されていたら、この後の処理と(3),(4)の処理は行わない(既にこのメソッドに対するネイティブライブラリアクセス用モジュールがインストールされているため)。ソースの内容はネイティブメソッド用の関数を取り出し、組み込み機器アクセスモジュール102aから受け取ったデータをネイティブメソッド用関数のパラメータに合わせてキャストまたはオブジェクトを生成し、そのパラメータを使用してネイティブメソッドに対応する関数を呼び出すというものとなる。そして、このソースをコンパイルし、ネイティブライブラリアクセス用モジュールを生成する。
(3)組み込み機器アクセスサービス205aは、(2)で生成したネイティブライブラリアクセス用モジュールを組み込み機器アクセスモジュール102aにインストールするようにコマンドデータを送信する。
(4)そして、組み込み機器アクセスモジュール102aは送られてきたコマンドデータを解析し、送られてきたネイティブライブラリアクセス用モジュールを適切な場所に保存し、保存したネイティブライブラリアクセス用モジュールをロードする。図5ではこのネイティブライブラリアクセス用モジュールはネイティブライブラリアクセス部106の部分に対応することになる。
(5)次に、組み込み機器アクセスサービス205aは組み込み機器アクセスモジュール102aに対してネイティブメソッド対応関数呼び出し要求用のデータを送信する。このデータの書式の例を以下に示す。
(e)のサイズ4バイト+(e)+(f)のサイズ4バイト+(f)
ここで(a)はobjのID
(b)はコマンド(ここでは”invoke”となる)
(c)はネイティブライブラリアクセス用モジュールの関数名
(d)はargs[0]のID(クラスの場合)またはargs[0]の値(プリミティブの場合)+” ”+args[1]のIDまたはargs[1]の値+” ”+args[2]のIDまたはargs[2]の値+・・・
(e)は(a)+” ”+(b)
(f)は(c)+” ”+(d)
である。
(6)組み込み機器アクセスモジュール102aは送られてきた関数名からネイティブライブラリアクセス用モジュールの関数を取り出す。
(7)そして、組み込み機器アクセスモジュール102aは組み込み機器アクセスサービス205aから送られてきたデータをバイトの配列に読み込み、これをパラメータとしてネイティブライブラリアクセス用モジュールの関数を呼び出す。
(8)ネイティブライブラリアクセス用モジュールは自身の生成時に指定されたネイティブメソッドに対応するネイティブライブラリの関数を取り出す。
(9)そして、ネイティブライブラリアクセス用モジュールはパラメータで与えられたバイトの配列からネイティブライブラリの関数のパラメータに対応するデータを順番に取り出し、このデータから関数に与えるパラメータの生成(タイプがクラスの場合)または値の取り出し(タイプがプリミティブの場合)を行う。
(10)そして、ネイティブライブラリアクセス用モジュールは(8)で取り出した関数に(9)で準備した各パラメータを与えて呼び出す。
(11)ネイティブライブラリ105において関数を実行する。
(12)ネイティブライブラリ209は関数の戻り値をネイティブライブラリアクセス用モジュールに返し、更にネイティブライブラリアクセス用モジュールはその値を組み込み機器アクセスモジュール102aに返す。
(13)そして、組み込み機器アクセスモジュール102aは結果を組み込み機器アクセスサービス205aに送信する。この結果データの書式の例を以下に示す。
(a)のサイズ4バイト+(a)+(g)のサイズ4バイト+(g)
ここで(g)はID(戻り値のタイプがクラスの場合)または値(戻り値のタイプがプリミティブの場合)。
更に、組み込み機器アクセスサービス205aは戻り値をJava(登録商標)アプリケーション206に返す。このとき組み込み機器アクセスモジュール102aから送られてきた戻り値がIDの場合はそのIDで特定されるObject、値の場合はその値(プリミティブ)に対応するクラスのObjectが返される。
以上のような方法により、Java(登録商標)アプリケーションはネイティブライブラリを使用する場合に、ネットワークを意識することなく使用することが可能となる。
以上のように、実施の形態2のアプリケーションプラットフォーム提供システムによれば、アクセスサービスは、所定のアプリケーションから、機器上で動作するネイティブライブラリへのアクセス要求を受けた場合、機器へのネイティブライブラリ呼び出し要求を行い、アクセスモジュールは、ネイティブライブラリ呼び出し要求を受けた場合は、ネイティブライブラリへのアクセスを行うよう構成したので、機器側のネイティブライブラリに対して、サーバ上のアプリケーションは、ネットワーク等を意識することなくアクセスすることができる。
実施の形態3.
図9は、この発明の実施の形態3によるアプリケーションプラットフォーム提供システムを示す構成図である。
実施の形態3は、特定のアプリケーションプラットフォームを備えていない機器として携帯電話の例であり、携帯電話100bとサーバ200bとネットワーク300からなる。携帯電話100bは、携帯電話用OS107、携帯電話用Java(登録商標)VM108、携帯電話アクセスモジュール(アクセスモジュール)102bを備え、携帯電話アクセスモジュール102bは、携帯電話リソースアクセス部103aと携帯電話側通信部104aを備えている。携帯電話用OS107は、携帯電話100bの各種のソフトウェアを動作させるためのオペレーティングシステムであり、携帯電話用Java(登録商標)VM108は、携帯電話用OS107上で動作するJava(登録商標)VMである。この携帯電話用Java(登録商標)VM108は、サーバ200b上で動作するJava(登録商標)VM202と比べて提供する機能が少なく、このため、携帯電話用Java(登録商標)VM108ではOSGiフレームワークを動作させることができない。携帯電話アクセスモジュール102bは、携帯電話100bのリソースにアクセスするためのアクセスモジュールであり、携帯電話リソースアクセス部103aは、リソースにアクセスする機能部、携帯電話側通信部104aは、200bとの通信を行うための通信部である。また、この携帯電話側通信部104aは、サーバ200bからの接続待ちは行えないものとする。
サーバ200bにおいて、組み込み機器アクセスサービス(アクセスサービス)205bは、携帯電話100bへの処理要求が発生した場合に、携帯電話アクセスモジュール102bからの接続要求待ちを行い、その携帯電話アクセスモジュール102bから接続要求があった場合にアクセス要求を行うよう構成されている。これ以外の構成は実施の形態1のサーバ200と同様であるため、ここでの説明は省略する。
次に、実施の形態3の動作について説明する。
先ず、サーバ200bでは、組み込み機器アクセスサービス205bが動作しており、サーバ側通信部208を使用して携帯電話アクセスモジュール102bからの接続を待っている。
次に、携帯電話100b上で携帯電話アクセスモジュール102bを動作させる。すると携帯電話アクセスモジュール102bは、携帯電話側通信部104aを使用して、組み込み機器アクセスサービス205bに接続しにいく。
更に、携帯電話アクセスモジュール102bは、組み込み機器アクセスサービス205bに対し、自身に対するリソースアクセス要求の有無をチェックするために、HTTP要求を行う。リソースアクセス要求の有無のチェックは定期的に行う方法や、例えばリソースアクセス要求がないという応答があった直後の再チェックではウェイト時間を長くし、リソースアクセス要求があった直後の再チェックは短時間のウェイトもしくは直ちに再チェックを行うといった方法が考えられる。即ち、携帯電話アクセスモジュール102bは、組み込み機器アクセスサービス205bからのそれまでのアクセス要求の有無に応じて接続要求の頻度を変更するようにしてもよい。
このHTTP要求はGETまたはPOSTで行われる。このときパラメータとしてこのHTTP要求がリソースアクセス要求の有無のチェックを示すコマンドと自身のIDを含む。ここでリソースアクセス要求の有無のチェックを示すコマンドをなくしてIDだけをパラメータとしてもよい。
これらのパラメータはクエリーに設定され送信される。もしPOSTで要求する場合はクエリーの代わりにエンティティ部分に格納して送信することも可能である。
次に、サーバ200bの組み込み機器アクセスサービス205bは、このHTTP要求を調査し、このHTTP要求に含まれるIDに対するリソースアクセス要求があるかをチェックし、ある場合はリソースアクセス要求を、ない場合はリソースアクセス要求がないというデータをHTTP応答として返す。リソースアクセス要求がある場合についての処理は後述する。
次に、バンドル204を組み込み機器アクセスサービス205bを使用して、携帯電話アクセスモジュール102bのIDを指定してインストールする。
組み込み機器アクセスサービス205bは、OSGiフレームワーク203の機能を使用してバンドル204をOSGiフレームワーク203に登録する。このとき組み込み機器アクセスサービス205bはバンドル204をインストールした際にOSGiフレームワーク203から得られるバンドルIDを先ほど受け取ったIDと対応させて保存しておく。
次に、OSGiフレームワーク203の機能を利用してJava(登録商標)アプリケーション206を起動させる。Java(登録商標)アプリケーション206ではOSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205bを取り出し、リソースアクセスI/F部207を利用してリソースアクセス用オブジェクトを取り出す。リソースアクセス用オブジェクトの生成処理手順について以下に説明する。
図10は、リソースアクセス用オブジェクトの生成処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205bを取り出す。このとき組み込み機器アクセスサービス205bはOSGiフレームワーク203の機能を利用して、自身の取り出しを行ったJava(登録商標)アプリケーションに対応するバンドルのバンドルIDを取り出すことができる。このバンドルIDを使用してバンドル204をインストールした際に保存しておいた携帯電話アクセスモジュール102bのIDを取り出し、今後Java(登録商標)アプリケーション206からの要求があった場合には携帯電話アクセスモジュール102bのIDを使用することが可能になる。
(2)更に、Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205bから実施の形態1で説明したようなgetEDRAXXX(パラメータ)メソッドを使用してリソースアクセス用オブジェクトの取り出し要求を出す。
(3)組み込み機器アクセスサービス205bは、リソースアクセス用オブジェクトを生成する。このときパラメータとして組み込み機器アクセスサービス205bとリソースアクセス用オブジェクトの取り出しで渡されたパラメータを渡す。
(4)リソースアクセス用オブジェクトは、組み込み機器アクセスサービス205bに対して、携帯電話アクセスモジュール102bに、このリソースアクセス用オブジェクトが生成されたというリソースアクセス要求を知らせるための設定を行うよう依頼する。このとき渡されるパラメータとしては(a)自分自身、(b)このリソースアクセス用オブジェクトのID、(c)リソースのクラス名もしくはクラス名に対応するID。但しIDの場合は予め携帯電話アクセスモジュール102bとの間で取り決めておく必要がある。そして(d)リソース用オブジェクトのID、(e)メソッドのパラメータとなる。
ここで(b)リソースアクセス用オブジェクトのIDは実施の形態1で説明したようなリソースアクセス用オブジェクトIDのようなユニークなIDであるならどのようなものでもかまわない。
また、本実施の形態では、(d)リソース用オブジェクトのID(携帯電話側の実際のリソースに対応するオブジェクトとリソースアクセス用オブジェクトを対応させるためのID。実施の形態1ではこれをリソースアクセス用オブジェクトIDと言っている)は実施の形態1のように組み込み機器アクセスサービス205b側で決めるのではなく、実際にリソースに対応するオブジェクトを用意する側(本実施の形態では携帯電話アクセスモジュール102b)が決定するので、ここでは未決定であることを示す値(たとえば−1など)を設定する。
また、(e)メソッドのパラメータはプリミティブや文字列の場合はそのままで、オブジェクトの場合はそのオブジェクトのリソース用オブジェクトのIDを設定する。パラメータは受け取り側でどのようなデータの型であるかを判断できるのでバイトに変換して転送し、受け取り側で元の型に直すようにしてもよい。またパラメータがオブジェクトの場合はIDを送ることになるが、本実施の形態ではパラメータに設定できるオブジェクトは携帯電話アクセスモジュール102bで用意されたオブジェクトに対応するリソースアクセス用オブジェクトのみとする。
そして、組み込み機器アクセスサービス205bは、携帯電話アクセスモジュール102bにリソースアクセス要求があることを(1)で取り出した携帯電話アクセスモジュール102bのIDに対応させて設定しておく。また(b)のIDをキーとして(a)リソースアクセス用オブジェクトを設定しておく。これは携帯電話アクセスモジュール102bからの応答をリソースアクセス用オブジェクトに知らせるためである。
(5)携帯電話アクセスモジュール102bは、上述したように、自身に対するリソースアクセス要求の有無をチェックするために、HTTP要求を行う。ここでは携帯電話側通信部104aは接続待ちを行えないために、サーバ200bに接続して要求を出し、応答を受ける標準的なプロトコルであるHTTPを使用しているが、HTTPと同じように要求を出して応答を受けるような通信方式であるならばどのようなものでもかまわない。
(6)組み込み機器アクセスサービス205bは、HTTP要求で送られてきたパラメータをチェックし、携帯電話アクセスモジュール102bのIDに対するリソースアクセス要求が設定されているかをチェックし、設定されていない場合はリソースアクセス要求がないというデータをHTTP応答として返す。ここではリソースアクセス要求が設定されているので、リソースアクセス要求としてリソースアクセス用オブジェクトに対応するリソース用オブジェクトの生成という要求をHTTP応答として返す。このとき送られるデータの書式の例を以下に示す。
(b)+(c)+(d)+(e)
ここで(b)、(c)、(d)、(e)は上記(4)で説明したものである。
(7)携帯電話アクセスモジュール102bはHTTP応答を受信し、リソースアクセス要求の有無をチェックし、リソースアクセス要求があった場合には送られてきたデータを元に、そのリソース用オブジェクトの生成を行う。
(8)そして、携帯電話アクセスモジュール102bは、リソース用オブジェクトが生成できたかどうかの結果をHTTP要求として組み込み機器アクセスサービス205bに送信する。このときリソース用オブジェクトが生成できた場合は生成したリソース用オブジェクトのIDを決定し、このIDと生成したリソース用オブジェクトを対応付けて保存しておく。そして、このIDを組み込み機器アクセスサービス205bに送信する。一方、生成できなかった場合は、生成できなかったことを示す値(例えば−1など)を送信する。ここで行うHTTP要求としてはGETもしくはPOSTで行われる。GETの場合はクエリーに設定することになるが、文字列でデータを送る必要があるため、POSTのエンティティとして送る方が望ましい。またこのとき送られるデータの書式の例を以下に示す。
(b)+データサイズ+データ
(b)は(4)で説明したものである。データには上記したIDまたは生成できなかったことを示す値が設定される。
(9)組み込み機器アクセスサービス205bはHTTP要求を受け取り、このHTTPのセッションを完了させるためにHTTP応答を返す。このHTTP応答はHTTPのセッションを正常に終わらすためのものなので特にデータなどは必要ない。
(10)そして、組み込み機器アクセスサービス205bは、送られてきたHTTP要求の(b)から対応するリソースアクセス用オブジェクトを取り出し、データをこのリソースアクセス用オブジェクトに渡す。リソースアクセス用オブジェクトは組み込み機器アクセスサービス205bから渡されたデータをチェックし、IDであれば次のアクセス時に使うため((d)として使用)にこのIDを保存しておく。また、もし生成出来なかったことを示す値であった場合はエラーを返すか例外をスローする。この動作は生成される元のクラスのコンストラクタのAPIに依存する。
(11)ここでリソースアクセス用オブジェクトのコンストラクタが終わるので、組み込み機器アクセスサービス205bはリソースアクセス用オブジェクトをJava(登録商標)アプリケーション206に渡す。
次に、Java(登録商標)アプリケーション206が取り出したリソースアクセス用オブジェクトを使用して携帯電話100bのリソースにアクセスする場合の処理を説明する。
図11は、このリソースアクセスの処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、リソースアクセス用オブジェクトのメソッドを呼び出す。
(2)リソースアクセス用オブジェクトは、組み込み機器アクセスサービス205bに対して、携帯電話アクセスモジュール102bに、Java(登録商標)アプリケーション206から呼び出されたメソッドに対応するリソースアクセス要求を知らせるための設定を行うよう依頼する。そして組み込み機器アクセスサービス205bは、携帯電話アクセスモジュール102bにリソースアクセス要求があることを設定しておく。
(3)携帯電話アクセスモジュール102bは、自身に対するリソースアクセス要求の有無をチェックするために、HTTP要求を行う。
(4)組み込み機器アクセスサービス205bは、HTTP要求を受け取り、携帯電話アクセスモジュール102bに対するリソースアクセス要求が設定されているかをチェックし、設定されているリソースアクセス要求をHTTP応答として返す。このとき送られるデータの書式の例としては、本実施の形態のリソースアクセス用オブジェクトの生成処理で説明したものと同一である。但し、今回はリソース用オブジェクトのIDは、リソースアクセス用オブジェクトの生成時に携帯電話アクセスモジュール102bから渡されたリソース用オブジェクトのIDを使用する。
(5)携帯電話アクセスモジュール102bは、HTTP応答に設定されているリソースアクセス要求を取り出し、要求されたリソースアクセスを実行する。
(6)携帯電話アクセスモジュール102bは、リソースアクセスの実行結果をHTTP要求として組み込み機器アクセスサービス205bに送信する。このとき、戻り値がプリミティブや文字列などネットワークを通して直接送信可能なものはそのままもしくはバイトとして送り、オブジェクトの場合はこのオブジェクトのIDを決定し、このIDとオブジェクトを対応付けて保存しておき、このIDを送る。
(7)組み込み機器アクセスサービス205bはHTTP要求を受け取り、このHTTPのセッションを完了させるためにHTTP応答を返す。
(8)そして組み込み機器アクセスサービス205bは送られてきたHTTP要求をチェックし、リソースアクセスの実行結果をリソースアクセス用オブジェクトに渡す。
(9)リソースアクセス用オブジェクトは、渡された結果をメソッドの戻り値としてリターンする。このとき、戻り値がプリミティブや文字列の場合は(バイトに変換されて送られてきた場合は元の型に変換する必要がある)そのままリターンし、オブジェクトの場合はそのオブジェクトに対応するリソースアクセス用オブジェクトを送られてきたIDと組み込み機器アクセスサービス205bをパラメータとして生成し、この生成したリソースアクセス用オブジェクトをリターンする。
以上のような方法により、携帯電話のようにリソースに制限があり、接続待ちを行えないような機器に対しても、Java(登録商標)アプリケーション206はリソースにアクセスする必要があるクラスを使用する場合に、そのオブジェクトの生成方法を変更する以外は通常のプログラミングと同様に行うことができ、またコンストラクタの代わりに呼ばれるメソッドもコンストラクタとほぼ同様な書式で記述することができるため、ネットワーク300越しに実行するための特別なAPIを学習・使用する必要もないため、Java(登録商標)アプリケーションプログラマはリソースに制限のある機器を意識することなしにOSGiフレームワーク環境上のプログラムを作成することができる。
以上のように、実施の形態3のアプリケーションプラットフォーム提供システムによれば、アクセスサービスは、機器への処理要求が発生した場合に、アクセスモジュールからの接続要求待ちを行い、アクセスモジュールから接続要求があった場合にアクセス要求を行うようにしたので、機器側の負荷を軽くすることができるため、携帯電話といったリソースに制限があり接続待ちが行えない機器であっても適用することができる。
また、実施の形態3のアプリケーションプラットフォーム提供システムによれば、アクセスモジュールは、アクセスサービスからのそれまでのアクセス要求の有無に応じて、接続要求の頻度を変更するようにしたので、機器の処理への影響を最小限に抑えながら、機器側へのアクセス要求に対する応答の遅れも小さくすることができる。
また、実施の形態3のアプリケーションプラットフォーム提供システムによれば、機器として携帯電話としたので、リソースに制限のある機器が携帯電話であっても適用することができる。
実施の形態4.
図12は、この発明の実施の形態4によるアプリケーションプラットフォーム提供システムを示す構成図である。
実施の形態4は、組み込み機器100とサーバ200cとネットワーク300からなる。ここで、組み込み機器100およびネットワーク300については、実施の形態1の組み込み機器100およびネットワーク300と同様の構成であるため、ここでの説明は省略する。
サーバ200cは、サーバOS201、Java(登録商標)VM202a、OSGiフレームワーク203、バンドル204、バンドルインストールサービス211からなる。ここで、サーバOS201、OSGiフレームワーク203およびバンドル204は、実施の形態1と同様であるため、ここでの説明は省略する。Java(登録商標)VM202aには、リソースアクセスクラス管理部(アクセス管理部)212が設けられている。このリソースアクセスクラス管理部212は、組み込み機器100側の処理についての情報を有し、Java(登録商標)アプリケーション206から処理要求があった場合、前記の情報に基づいてその処理が組み込み機器100での処理であるかを判定し、そうであった場合は、組み込み機器100へのアクセス要求を行い、かつ、組み込み機器100より処理結果を受信した場合は、その処理結果をJava(登録商標)アプリケーション206に応答する機能を有している。また、リソースアクセスクラス管理部212は、組み込み機器100との通信を行うためのサーバ側通信部208を備えている。即ち、リソースアクセスクラス管理部212は、組み込み機器100のリソースへのアクセスを伴うクラスについてはJava(登録商標)VM202で提供されるクラスの代わりとして使用され、Java(登録商標)VM202で提供されるJava(登録商標)APIと同一のインタフェースを持つものである。バンドルインストールサービス211は、自身を通してインストールされたバンドルの情報をリソースアクセスクラス管理部212に通知するためのものである。
次に、実施の形態4の動作について説明する。
以下、サーバ200c上で動作するJava(登録商標)アプリケーション206が組み込み機器100のリソースにアクセスする実行手順について説明する。
先ず、リソースアクセスクラス管理部212は、サーバ側通信部208を使用して組み込み機器アクセスモジュール102からの接続を待っている。
次に、組み込み機器100が起動して組み込み機器アクセスモジュール102が開始されると、組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してリソースアクセスクラス管理部212に接続しに行く。接続に失敗した場合は設定ファイル等(図示しない)で指定された間隔でリトライする。
次に、組み込み機器アクセスモジュール102は、組み込み機器側の情報をリソースアクセスクラス管理部212に送信する。組み込み機器側の情報としては組み込み機器100のIPアドレス、接続待ちを行うポート番号、組み込み機器IDからなる。組み込み機器アクセスモジュール102は組み込み機器側の情報を送信した後は一旦サーバ200との接続を切り、今度は先ほど組み込み機器側の情報として送ったポート番号で接続を待つ。
次に、組み込み機器側の情報を受け取ったリソースアクセスクラス管理部212は組み込み機器IDをキーとして組み込み機器のIPアドレスおよび接続待ちを行うポート番号を登録する。
次に、バンドル204をバンドルインストールサービス211を使用し、組み込み機器IDを指定してインストールする。バンドルインストールサービス211は、OSGiフレームワーク203の機能を使用してバンドル204をOSGiフレームワーク203に登録する。このときバンドルインストールサービス211はバンドル204が指定された組み込み機器IDに対応するということをリソースアクセスクラス管理部212に通知する。これによりバンドル204に関連するJava(登録商標)アプリケーション206がリソースアクセスクラス管理部212が提供するリソースアクセスクラスを使用した場合に、どの組み込み機器へアクセスすればよいかが分かるようになる。
次に、OSGiフレームワーク203の機能を利用してJava(登録商標)アプリケーション206を起動させる。
Java(登録商標)アプリケーション206が組み込み機器100のリソースにアクセスする場合、Java(登録商標)アプリケーション206は、何も意識することなく通常のJava(登録商標)APIを使用する。リソースへのアクセスを伴うクラスを使用した場合には、それはリソースアクセスクラス管理部212が処理することになる。即ち、リソースアクセスクラス管理部212は、Java(登録商標)アプリケーション206からJava(登録商標)APIに対して処理要求があった場合、予め設けられた組み込み機器100側での処理を示す情報に基づき、その処理が組み込み機器100へのリソースアクセスが必要であるか否かを判断する。ここで、組み込み機器100のリソースアクセスが不要な処理であった場合は、サーバ200c上でその処理を行う。一方、組み込み機器100のリソースアクセスが必要であった場合は次の処理を行う。
先ず、Java(登録商標)アプリケーション206を提供するバンドル204が組み込み機器IDを指定してインストールされたのかをチェックする。もし組み込み機器IDを指定してインストールされていなかった場合はローカルのリソースを使用することになり、この処理をJava(登録商標)VM202aに依頼する。一方、組み込み機器IDが指定されていた場合は、その組み込み機器IDで特定される組み込み機器100と通信を行い、リソースアクセスを行うことになる。
Java(登録商標)アプリケーション206が組み込み機器100のリソースにアクセスする場合の処理手順は以下のようになる。
(1)Java(登録商標)アプリケーション206は、通常のJava(登録商標)APIで提供されるメソッドを使用する。
(2)リソースアクセスクラス管理部212は、Java(登録商標)アプリケーション206に対応する組み込み機器IDから保存しておいたIPアドレスとポート番号を取り出し、サーバ側通信部208を使用して組み込み機器100に接続する。
(3)リソースアクセスクラス管理部212は、呼び出されたメソッドに対応するコマンドとメソッドで与えられたパラメータを送信する。
(4)組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用して(3)で送られたデータを受け取り、このデータで指定された処理を行う。
(5)組み込み機器アクセスモジュール102は、(4)の結果を送信する。
(6)リソースアクセス管理部212は、結果を受け取り、メソッドの戻り値に応じて結果を処理し、戻り値をリターンもしくは例外をスローする。
尚、ここで各通信でやり取りされるデータの書式は実施の形態1〜3で説明したものを使用できるため、ここでの説明は省略する。
以上のような方法により、Java(登録商標)アプリケーション206は組み込み機器100のリソースにアクセスする必要があるクラスを使用する場合にも、全く意識する必要がない。
以上のように、実施の形態4のアプリケーションプラットフォーム提供システムによれば、所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、特定のアプリケーションプラットフォームを有するサーバとを備え、サーバは、特定のアプリケーションプラットフォームに設けられ、機器側の処理についての情報を有し、所定のアプリケーションから処理要求があった場合、その情報に基づいて処理が機器での処理であるかを判定し、そうであった場合は、機器へのアクセス要求を行い、かつ、機器より処理結果を受信した場合は、処理結果をアプリケーションに応答するアクセス管理部を備え、機器は、アクセス管理部からの処理要求を受けた場合は、機器固有の処理を行い、その処理結果をアクセス管理部に対して応答するアクセスモジュールを備えたので、アプリケーションからのアクセス要求が組み込み機器100への固有の処理を伴うものであった場合でも、これはリソースアクセスクラス管理部によって自動的にアクセス要求されるため、アプリケーションは、機器における処理であるかを全く意識せずアクセス要求を送出することができる。
尚、上記実施の形態4において、組み込み機器100の代わりに実施の形態3のような携帯電話100bであってもよい。また、実施の形態3、4では、機器側のリソースアクセスの場合を説明したが、実施の形態2で説明したようなネイティブライブラリへのアクセスであってもよい。即ち、上記実施の形態1〜4を適宜組み合わせた構成としてもよい。
また、上記各実施の形態では、特定のアプリケーションプラットフォームとしてJava(登録商標)VM202やOSGiフレームワーク203の例を説明したが、特にこれらに限定されるものではない。即ち、機器側ではリソースの制限により動作させることが不可能なもの(各実施の形態ではJava(登録商標)VM)を利用するもの(各実施の形態ではOSGiフレームワーク)を提供するような構成であればどのようなものあっても適用可能である。
この発明の実施の形態1によるアプリケーションプラットフォーム提供システムを示す構成図である。 この発明の実施の形態1におけるリソースアクセス用オブジェクトの生成処理手順を示す説明図である。 この発明の実施の形態1における戻り値がネットワークを通して送信可能なものである場合の処理手順を示す説明図である。 この発明の実施の形態1における戻り値がネットワークを通して送信不可能なものである場合の処理手順を示す説明図である。 この発明の実施の形態2によるアプリケーションプラットフォーム提供システムを示す構成図である。 この発明の実施の形態2におけるネイティブライブラリのロード処理を示す説明図である。 この発明の実施の形態2による定型パラメータ方式の処理手順を示す説明図である。 この発明の実施の形態2による動的コンパイル方式の処理手順を示す説明図である。 この発明の実施の形態3によるアプリケーションプラットフォーム提供システムを示す構成図である。 この発明の実施の形態3によるリソースアクセス用オブジェクトの生成処理手順を示す説明図である。 この発明の実施の形態3によるリソースアクセスの処理手順を示す説明図である。 この発明の実施の形態4によるアプリケーションプラットフォーム提供システムを示す構成図である。
符号の説明
100,100a,100c 組み込み機器、100b 携帯電話、102,102a 組み込み機器アクセスモジュール、102b 携帯電話アクセスモジュール、105 ネイティブライブラリ、200,200a,200b,200c サーバ、202 Java(登録商標)VM、203 OSGiフレームワーク、205,205a,205b 組み込み機器アクセスサービス、206 Java(登録商標)アプリケーション、212 リソースアクセスクラス管理部。

Claims (11)

  1. 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、前記特定のアプリケーションプラットフォームと前記所定のアプリケーションとを有するサーバとを備え、
    前記サーバは、
    前記特定のアプリケーションプラットフォーム上で動作し、前記アプリケーションから前記機器固有の処理に関するアクセス要求があった場合、当該アクセス要求に基づいて前記機器への処理要求を行い、かつ、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアクセスサービスとを備え、
    前記機器は、
    前記アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果を前記アクセスサービスに対して応答するアクセスモジュールを備えたアプリケーションプラットフォーム提供システム。
  2. アクセスサービスは、所定のアプリケーションから機器のリソースアクセス要求を受けた場合、リソースアクセス用オブジェクトを生成すると共に、当該リソースアクセス用オブジェクトに基づいて前記機器への処理要求を行うことを特徴とする請求項1記載のアプリケーションプラットフォーム提供システム。
  3. アクセスサービスは、所定のアプリケーションから、機器上で動作するネイティブライブラリへのアクセス要求を受けた場合、前記機器へのネイティブライブラリ呼び出し要求を行い、
    アクセスモジュールは、前記ネイティブライブラリ呼び出し要求を受けた場合は、前記ネイティブライブラリへのアクセスを行うことを特徴とする請求項1記載のアプリケーションプラットフォーム提供システム。
  4. アクセスモジュールは、サーバからのアクセス要求の接続待ちを行い、アクセスサービスは、機器への処理要求が発生した場合に、前記アクセスモジュールに対して接続を行うことを特徴とする請求項1から請求項3のうちのいずれか1項記載のアプリケーションプラットフォーム提供システム。
  5. アクセスサービスは、機器への処理要求が発生した場合に、前記アクセスモジュールからの接続要求待ちを行い、当該アクセスモジュールから接続要求があった場合に前記アクセス要求を行うことを特徴とする請求項1から請求項3のうちのいずれか1項記載のアプリケーションプラットフォーム提供システム。
  6. アクセスモジュールは、アクセスサービスからのそれまでのアクセス要求の有無に応じて、接続要求の頻度を変更することを特徴とする請求項5記載のアプリケーションプラットフォーム提供システム。
  7. 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、前記特定のアプリケーションプラットフォームを有するサーバとを備え、
    前記サーバは、
    前記特定のアプリケーションプラットフォームに設けられ、機器側の処理についての情報を有し、前記所定のアプリケーションから処理要求があった場合、前記情報に基づいて当該処理が前記機器での処理であるかを判定し、そうであった場合は、前記機器へのアクセス要求を行い、かつ、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアクセス管理部を備え、
    前記機器は、
    前記アクセス管理部からの処理要求を受けた場合は、機器固有の処理を行い、その処理結果を前記アクセス管理部に対して応答するアクセスモジュールを備えたアプリケーションプラットフォーム提供システム。
  8. 特定のアプリケーションプラットフォームは、Java(登録商標)VMと当該Java(登録商標)VM上で動作する所定のフレームワークからなり、所定のアプリケーションはJava(登録商標)アプリケーションであることを特徴とする請求項1から請求項7のうちいずれか1項記載のアプリケーションプラットフォーム提供システム。
  9. 機器は、携帯電話であることを特徴とする請求項1から請求項8のうちのいずれか1項記載のアプリケーションプラットフォーム提供システム。
  10. 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、前記特定のアプリケーションプラットフォームと前記所定のアプリケーションとを有するサーバとを備え、
    前記アプリケーションから前記機器固有の処理に関するアクセス要求があった場合、前記特定のアプリケーションプラットフォーム上で動作するアクセスサービスが、前記アクセス要求に基づいて前記機器への処理要求を行い、
    前記機器は、前記アクセスサービスからの処理要求に基づいて機器固有の処理を行って、その処理結果を前記アクセスサービスに対して応答し、
    前記アクセスサービスは、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアプリケーションプラットフォーム提供方法。
  11. 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器を構成するコンピュータと、前記特定のアプリケーションプラットフォームと前記所定のアプリケーションとを有するサーバを構成するコンピュータとを、
    前記サーバを構成するコンピュータ上で、前記特定のアプリケーションプラットフォーム上で動作し、前記アプリケーションから前記機器固有の処理に関するアクセス要求があった場合、当該アクセス要求に基づいて前記機器への処理要求を行い、かつ、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアクセスサービスとして機能させ、
    前記機器を構成するコンピュータ上で、前記アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果を前記アクセスサービスに対して応答するアクセスモジュールとして機能させるためのアプリケーションプラットフォーム提供プログラム。
JP2004318119A 2004-11-01 2004-11-01 アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム Pending JP2006127399A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004318119A JP2006127399A (ja) 2004-11-01 2004-11-01 アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004318119A JP2006127399A (ja) 2004-11-01 2004-11-01 アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム

Publications (1)

Publication Number Publication Date
JP2006127399A true JP2006127399A (ja) 2006-05-18

Family

ID=36722064

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004318119A Pending JP2006127399A (ja) 2004-11-01 2004-11-01 アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム

Country Status (1)

Country Link
JP (1) JP2006127399A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218352A (ja) * 2009-03-18 2010-09-30 Ricoh Co Ltd 機器管理装置、画像形成装置、及び機器管理プログラム
JP2011511973A (ja) * 2007-12-31 2011-04-14 サムスン エレクトロニクス カンパニー リミテッド OSGiライフサイクルコマンドの実行制限のための方法及びシステム
JP2011186571A (ja) * 2010-03-05 2011-09-22 Hitachi Ltd サーバ、クライアントシステム
CN112698842A (zh) * 2019-10-22 2021-04-23 北京国双科技有限公司 获取应用程序的额外信息的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003077474A1 (en) * 2002-03-12 2003-09-18 Thomson Licensing S.A. Method for updating a web client on a non ip based home network, and devices for implementing the process
JP2004213612A (ja) * 2003-01-02 2004-07-29 Samsung Electronics Co Ltd アプリケーション管理システム及び方法
JP2005196772A (ja) * 2004-01-08 2005-07-21 Samsung Electronics Co Ltd ネットワーク上でのサービス共有のための装置及び方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003077474A1 (en) * 2002-03-12 2003-09-18 Thomson Licensing S.A. Method for updating a web client on a non ip based home network, and devices for implementing the process
JP2004213612A (ja) * 2003-01-02 2004-07-29 Samsung Electronics Co Ltd アプリケーション管理システム及び方法
JP2005196772A (ja) * 2004-01-08 2005-07-21 Samsung Electronics Co Ltd ネットワーク上でのサービス共有のための装置及び方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511973A (ja) * 2007-12-31 2011-04-14 サムスン エレクトロニクス カンパニー リミテッド OSGiライフサイクルコマンドの実行制限のための方法及びシステム
JP2010218352A (ja) * 2009-03-18 2010-09-30 Ricoh Co Ltd 機器管理装置、画像形成装置、及び機器管理プログラム
JP2011186571A (ja) * 2010-03-05 2011-09-22 Hitachi Ltd サーバ、クライアントシステム
CN112698842A (zh) * 2019-10-22 2021-04-23 北京国双科技有限公司 获取应用程序的额外信息的方法及装置

Similar Documents

Publication Publication Date Title
US20030009539A1 (en) Distributed object middleware connection method
US8713177B2 (en) Remote management of networked systems using secure modular platform
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
JP3853593B2 (ja) ウェブアプリケーションサーバにおいて拡張可能な認証機構を実現するための方法および装置
US8010973B2 (en) Class loader for managing a network
US7900214B2 (en) System and method for adaptable provisioning of generic application content
US6839897B2 (en) Stub search loading system and method, server apparatus, client apparatus, and computer-readable recording medium
US6708171B1 (en) Network proxy
CA2495396A1 (en) System and method for customized provisioning of application content
US20030055862A1 (en) Methods, systems, and articles of manufacture for managing systems using operation objects
WO2009062414A1 (en) Integrate client and method of desktop application communicating with net web application
KR100772175B1 (ko) 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법
US20020046304A1 (en) Dynamic class loading
US8239862B2 (en) Apparatus, method, and computer program product for processing information
JP5200639B2 (ja) 画像形成装置、情報処理方法、及びプログラム
JP2009290729A (ja) 画像形成装置、情報処理方法、及びプログラム
US8051191B2 (en) Ethernet extensibility
KR20080024751A (ko) 임베디드 단말의 OSGi 미들웨어 환경에서 이원화된애플리케이션 관리를 통한 애플리케이션 경량화를 위한장치 및 그 방법
WO1999044296A2 (en) Apparatus and method for dynamically verifying information in a distributed system
JP2006127399A (ja) アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム
CN1647036A (zh) 关于与现存系统管理产品或软件方案接口的系统与方法
US7552440B1 (en) Process communication multiplexer
CN102255872A (zh) 访问非远程对象的方法和装置
EP1058880A1 (en) Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
KR100494827B1 (ko) 하드웨어 독립적인 통신 인터페이스를 가지는 분산객체모델 기반의 라디오 서버와 이를 이용한 통신제어방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070618

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071011

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101221