JP2006127399A - アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム - Google Patents
アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】 Java(登録商標)アプリケーション206からのアクセス要求に対して、組み込み機器アクセスサービス205は、組み込み機器100へのアクセス要求を行う。組み込み機器アクセスモジュール102は、サーバ200からのアクセス要求を受けた場合、処理結果を組み込み機器アクセスサービス205に応答する。組み込み機器アクセスサービス205は、この処理結果をJava(登録商標)アプリケーション206に応答する。
【選択図】 図1
Description
また、オブジェクト指向プログラミングに基づいた携帯形情報処理装置用のソフトウェアの構築方法を提供するものがあった(例えば、特許文献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のリソースにアクセスする必要がない処理に関してはサーバ200上で行われるため、この処理についての説明は省略する。
次に、組み込み機器100側の情報を受け取った組み込み機器アクセスサービス205は、組み込み機器IDをキーとして組み込み機器100のIPアドレスおよび接続待ちを行うポート番号を登録する。
File f = new File(ファイル名);
となる。
File f = 組み込みアクセスサービス.getEDRAFile(ファイル名)
のようになる。
ここでEDRA(Embeded Device Resource Access)はメソッド名の重複を防ぐために付けたものである。そしてその後に生成したいオブジェクトのクラス名、コンストラクタで指定するパラメータを指定する。上述した通り、リソースアクセス用オブジェクトは本来生成したいクラスのサブクラスであるので、生成したあとは本来のクラスとまったく同様に扱うことが可能となる。
図2は、この処理手順を示す説明図である。尚、図中の括弧付き数字の処理は、以下の(1)〜(9)に対応している。また、これ以降の説明において、図中の数字と実施の形態中の説明は対応しているものとする。
(1)Java(登録商標)アプリケーション206は、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205を取り出す。
(2)更に、Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205から上記したようなgetEDRAXXX(パラメータ)メソッドを使用してリソースアクセス用オブジェクトの取り出し要求を出す(XXXはリソースへのアクセスがあるクラス名、パラメータはそのクラスのコンストラクタと同じフォーマット)。
ここで、設定ファイル等によりリソースアクセス用オブジェクトを生成するのではなく、本来生成したいクラスのオブジェクトを生成して返すようにしてもよい。本来のクラスのオブジェクトを生成した場合は以下の処理は行われず、リソースにアクセスがあった場合はJava(登録商標)アプリケーション206が動作している同一の機器上のリソースにアクセスすることになる。このようにすることにより、組み込み機器アクセスサービスを利用してリソースにアクセスするJava(登録商標)アプリケーション206を変更することなく、比較的リソースに余裕があり、OSGiフレームワーク203が動作するような組み込み機器でそのまま動作させることも可能となる。
クラス名+このオブジェクトのハッシュコード値+現在の時間の一部
(時間の一部はハッシュコード値が特定の桁に足りない分を時間の最後から補う)
(e)のサイズ4バイト+(e)+(c)のサイズ4バイト+(c)
((e)は(a)+” ”+(b))
(7)組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してリソースが準備できたかどうかの結果を結果データとして組み込み機器アクセスサービス205に送信する。結果データの書式の例を以下に示す。
(a)のサイズ4バイト+(a)+結果のサイズ4バイト+結果
リソースアクセス用オブジェクトは、結果を受け取り、この結果をチェックし、問題がなければコンストラクタでの処理を終了する。一方、問題が発生していれば例外をスローまたはその他の方法で結果を返す(本来生成したいクラスのコンストラクタのAPIに依存する)。
(9)組み込み機器アクセスサービス205は、(8)の結果を受けて、(3)で生成したリソースアクセス用オブジェクトまたは例外を返す。
リソースアクセス用オブジェクトのメソッド呼び出しには以下の2つのパターンがある。
・戻り値が数値や文字列などのネットワークを通して送信可能なものである場合
・戻り値が入力ストリームなどネットワークを通して送信不可能なものである場合
以下にそれぞれの場合のメソッド呼び出しの処理手順について説明する。
(1)Java(登録商標)アプリケーション206は、リソースアクセス用オブジェクトのメソッドを呼び出す。
(2)リソースアクセス用オブジェクトは、組み込み機器アクセスサービス205に対して、組み込み機器アクセスモジュール102に、Java(登録商標)アプリケーション206から呼び出されたメソッドに対応するコマンドを送るように、リソースアクセス用オブジェクトの生成処理手順(4)で説明した方法で依頼する。
(3)組み込み機器アクセスサービス205は、リソースアクセス用オブジェクトの生成処理手順(5)で説明したようにリソースアクセス用オブジェクトを保存し、渡されたパラメータに従ってコマンドデータを送信する。
(4)組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してコマンドデータを受信し、このコマンドデータを解析し、リソースアクセス部103を使用してリソースにアクセスし、結果を取り出す。
(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)を渡す。
(5)組み込み機器アクセスモジュール102は、コマンドデータを受信し、このコマンドデータを解析し、対応する戻り値用リソースの準備を行う。
(6)組み込み機器アクセスモジュール102は、戻り値用リソースが準備できたかどうかの結果を結果データとして、リソースアクセス用オブジェクトの生成処理手順(7)で説明した書式で、組み込み機器アクセスサービス205に送信する。
戻り値用オブジェクトは、結果を受け取り、この結果をチェックし、問題がなければコンストラクタでの処理を終了する。一方、問題が発生していれば例外をスローまたはその他の方法で結果を返す(呼び出されたメソッドのAPIに依存する)。
(8)リソースアクセス用オブジェクトは(7)の結果を受けて、(2)で生成した戻り値用オブジェクトまたは例外または結果(例えばnullや−1など)を返す。
図5は、この発明の実施の形態2によるアプリケーションプラットフォーム提供システムを示す構成図である。
実施の形態2は、組み込み機器100aとサーバ200aとネットワーク300からなる。組み込み機器100aは、組み込みOS101、組み込み機器アクセスモジュール(アクセスモジュール)102aとネイティブライブラリ105を備え、組み込み機器アクセスモジュール102aは、リソースアクセス部103と組み込み機器側通信部104とネイティブライブラリアクセス部106を備えている。この組み込み機器100aにおいて、組み込みOS101、リソースアクセス部103、組み込み機器側通信部104は、実施の形態1と同様の構成であるため、これらの説明は省略する。
Java(登録商標)アプリケーション206を起動させるまでの処理は実施の形態1と同様であるためここでの説明は省略する。
ここでJava(登録商標)アプリケーション206がそのプログラム中でネイティブライブラリ105にアクセスする場合を考える。Java(登録商標)ではネイティブライブラリにアクセスするためには、まずネイティブライブラリのロードを行う必要がある。ここではネイティブライブラリを組み込み機器100aにインストールし、使用できるようにロードする処理を行うことになる。
(1)Java(登録商標)アプリケーション206は、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205aを取り出す。
(2)更に、Java(登録商標)アプリケーション206は、組み込み機器アクセスサービス205aにネイティブライブラリのロード要求を出す。このときパラメータとしてネイティブライブラリ名を渡す。
(3)更に、組み込み機器アクセスサービス205aはパラメータで与えられたネイティブライブラリ名を使用して、Java(登録商標)アプリケーション206に対応するバンドル204aからネイティブライブラリ209を取り出す。
(d)のサイズ4バイト+(d)+(c)のサイズ4バイト+(c)
ここで(a)は組み込み機器アクセスサービスを示すIDで、例えば全てのバイトを0にしたIDである。また、(b)は組み込み機器アクセスモジュール102aに要求するコマンドでここでは”loadLibrary”となる。更に、(c)は(3)で取り出したネイティブライブラリ、(d)は(a)+” ”+(b)である。
サーバ側通信部208は要求されたデータ送信を行う前に、組み込み機器アクセスサービス205aに登録されているバンドル204aがインストールされた際に指定された組み込み機器IDに対応するIPアドレス、ポート番号で接続を行い、この接続した通信路に対してデータ送信を行う。以降の各通信処理において通信路が確保されていない場合はこの処理を行うものとする。
(6)組み込み機器アクセスモジュール102aは、組み込み機器側通信部104を使用してネイティブライブラリがロードできたかの結果を結果データとして組み込み機器アクセスサービス205aに送信する。結果データの書式の例を以下に示す。
(a)のサイズ4バイト+(a)+結果のサイズ4バイト+結果
(7)組み込み機器アクセスサービス205aは、サーバ側通信部208を使用して結果データを受信する。そしてこの結果データに含まれる結果を取り出し、この結果をJava(登録商標)アプリケーション206に返す。
一般的に、Java(登録商標)では、ネイティブライブラリはJNI(Java(登録商標) Native Interface)を用いて作成される。このため本実施の形態でもネイティブライブラリとのI/FはJNIを用いることとする。ここではJNIとするがネイティブライブラリのI/Fとして独自のものでも構わない。
ネットワーク300越しにネイティブライブラリ105が提供するメソッドを呼び出す場合、Java(登録商標)アプリケーション206が呼び出したメソッドを元に、組み込み機器アクセスサービス205aで対応するJNIに基づいた関数名を作り出し、ネットワーク300を通してその関数名とパラメータを送信する。そして、送られてきたデータを元に組み込み機器アクセスモジュール102aが対応するネイティブライブラリ105の関数を呼び出す。
この解決手段として以下の2つの方法が考えられる。
・パラメータの個数を制限するためにメソッドで使用するパラメータは配列の1個のみとし、かつ配列で与えるパラメータのタイプをオブジェクトとする。そしてネイティブライブラリ側でパラメータを配列から取り出し、取り出したオブジェクトを目的のタイプにキャストして使用する(定型パラメータ方式とする)。
・組み込み機器アクセスサービス205a側でJava(登録商標)アプリケーション206が呼び出すメソッドの情報を元に、ネイティブライブラリ105にアクセスできるようなモジュールを動的に生成し、このモジュールを組み込み機器アクセスモジュール102aに送り、組み込み機器アクセスモジュール102aはこのモジュールを使用してネイティブライブラリ105が提供する関数を呼び出す(動的コンパイル方式とする)。
先ず、定型パラメータ方式について説明する。
定型パラメータ方式ではネイティブメソッドを以下の書式にする必要がある。
可視性修飾子 Object メソッド名(Object[] args)
可視性修飾子は、例えばpublicやprivateなどである。次のObjectはリターン値のためのもの、そしてメソッド名と続き、最後にパラメータの配列となる。
(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になる。
(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)
である。
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でアクセスする。
(g)のサイズ4バイト+(g)+(h)のサイズ4バイト+(h)
ここで(g)はパラメータで与えられたjobjectのIDまたは仮ID
(h)はコマンド名+” ”+第一パラメータの型+” ”+第一パラメータの値+” ”+第二のパラメータの型+” ”+第二パラメータの値+・・・
または”getfield”+” ”+フィールド名
ここで、パラメータの値としては
・パラメータの型がオブジェクトの場合はID
・パラメータの型がプリミティブの場合は値を文字列にしたもの
となる。
(10)そして、組み込み機器アクセスサービス205aでは実行結果を組み込み機器アクセスモジュール102aに送信する。ここで組み込み機器アクセスモジュール102aに送信するデータの書式の例を以下に示す。
(g)のサイズ4バイト+(g)+(i)のサイズ4バイト+(i)
ここで(i)はコマンドに対する戻り値である。戻り値がオブジェクトの場合はID、それ以外の場合はプリミティブ(戻り値をもらう関数は戻り値のタイプを知っているので、戻り値をポインタで渡せばキャストして値を得ることができる)となる。
(11)組み込み機器アクセスモジュール102aはJNIで定義されているタイプで値を返す。
(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(登録商標)のシグニチャ記号と同じものを使ってもよいし、独自のものを使ってもよい。
(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)
である。
(7)そして、組み込み機器アクセスモジュール102aは組み込み機器アクセスサービス205aから送られてきたデータをバイトの配列に読み込み、これをパラメータとしてネイティブライブラリアクセス用モジュールの関数を呼び出す。
(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が返される。
図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が動作しており、サーバ側通信部208を使用して携帯電話アクセスモジュール102bからの接続を待っている。
次に、携帯電話100b上で携帯電話アクセスモジュール102bを動作させる。すると携帯電話アクセスモジュール102bは、携帯電話側通信部104aを使用して、組み込み機器アクセスサービス205bに接続しにいく。
更に、携帯電話アクセスモジュール102bは、組み込み機器アクセスサービス205bに対し、自身に対するリソースアクセス要求の有無をチェックするために、HTTP要求を行う。リソースアクセス要求の有無のチェックは定期的に行う方法や、例えばリソースアクセス要求がないという応答があった直後の再チェックではウェイト時間を長くし、リソースアクセス要求があった直後の再チェックは短時間のウェイトもしくは直ちに再チェックを行うといった方法が考えられる。即ち、携帯電話アクセスモジュール102bは、組み込み機器アクセスサービス205bからのそれまでのアクセス要求の有無に応じて接続要求の頻度を変更するようにしてもよい。
これらのパラメータはクエリーに設定され送信される。もしPOSTで要求する場合はクエリーの代わりにエンティティ部分に格納して送信することも可能である。
組み込み機器アクセスサービス205bは、OSGiフレームワーク203の機能を使用してバンドル204をOSGiフレームワーク203に登録する。このとき組み込み機器アクセスサービス205bはバンドル204をインストールした際にOSGiフレームワーク203から得られるバンドルIDを先ほど受け取ったIDと対応させて保存しておく。
次に、OSGiフレームワーク203の機能を利用してJava(登録商標)アプリケーション206を起動させる。Java(登録商標)アプリケーション206ではOSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205bを取り出し、リソースアクセスI/F部207を利用してリソースアクセス用オブジェクトを取り出す。リソースアクセス用オブジェクトの生成処理手順について以下に説明する。
(1)Java(登録商標)アプリケーション206は、OSGiフレームワーク203の機能を利用して組み込み機器アクセスサービス205bを取り出す。このとき組み込み機器アクセスサービス205bはOSGiフレームワーク203の機能を利用して、自身の取り出しを行ったJava(登録商標)アプリケーションに対応するバンドルのバンドルIDを取り出すことができる。このバンドルIDを使用してバンドル204をインストールした際に保存しておいた携帯電話アクセスモジュール102bのIDを取り出し、今後Java(登録商標)アプリケーション206からの要求があった場合には携帯電話アクセスモジュール102bのIDを使用することが可能になる。
(3)組み込み機器アクセスサービス205bは、リソースアクセス用オブジェクトを生成する。このときパラメータとして組み込み機器アクセスサービス205bとリソースアクセス用オブジェクトの取り出しで渡されたパラメータを渡す。
ここで(b)リソースアクセス用オブジェクトのIDは実施の形態1で説明したようなリソースアクセス用オブジェクトIDのようなユニークなIDであるならどのようなものでもかまわない。
また、本実施の形態では、(d)リソース用オブジェクトのID(携帯電話側の実際のリソースに対応するオブジェクトとリソースアクセス用オブジェクトを対応させるためのID。実施の形態1ではこれをリソースアクセス用オブジェクトIDと言っている)は実施の形態1のように組み込み機器アクセスサービス205b側で決めるのではなく、実際にリソースに対応するオブジェクトを用意する側(本実施の形態では携帯電話アクセスモジュール102b)が決定するので、ここでは未決定であることを示す値(たとえば−1など)を設定する。
そして、組み込み機器アクセスサービス205bは、携帯電話アクセスモジュール102bにリソースアクセス要求があることを(1)で取り出した携帯電話アクセスモジュール102bのIDに対応させて設定しておく。また(b)のIDをキーとして(a)リソースアクセス用オブジェクトを設定しておく。これは携帯電話アクセスモジュール102bからの応答をリソースアクセス用オブジェクトに知らせるためである。
(6)組み込み機器アクセスサービス205bは、HTTP要求で送られてきたパラメータをチェックし、携帯電話アクセスモジュール102bのIDに対するリソースアクセス要求が設定されているかをチェックし、設定されていない場合はリソースアクセス要求がないというデータをHTTP応答として返す。ここではリソースアクセス要求が設定されているので、リソースアクセス要求としてリソースアクセス用オブジェクトに対応するリソース用オブジェクトの生成という要求をHTTP応答として返す。このとき送られるデータの書式の例を以下に示す。
(b)+(c)+(d)+(e)
ここで(b)、(c)、(d)、(e)は上記(4)で説明したものである。
(8)そして、携帯電話アクセスモジュール102bは、リソース用オブジェクトが生成できたかどうかの結果をHTTP要求として組み込み機器アクセスサービス205bに送信する。このときリソース用オブジェクトが生成できた場合は生成したリソース用オブジェクトのIDを決定し、このIDと生成したリソース用オブジェクトを対応付けて保存しておく。そして、このIDを組み込み機器アクセスサービス205bに送信する。一方、生成できなかった場合は、生成できなかったことを示す値(例えば−1など)を送信する。ここで行うHTTP要求としてはGETもしくはPOSTで行われる。GETの場合はクエリーに設定することになるが、文字列でデータを送る必要があるため、POSTのエンティティとして送る方が望ましい。またこのとき送られるデータの書式の例を以下に示す。
(b)+データサイズ+データ
(b)は(4)で説明したものである。データには上記したIDまたは生成できなかったことを示す値が設定される。
(10)そして、組み込み機器アクセスサービス205bは、送られてきたHTTP要求の(b)から対応するリソースアクセス用オブジェクトを取り出し、データをこのリソースアクセス用オブジェクトに渡す。リソースアクセス用オブジェクトは組み込み機器アクセスサービス205bから渡されたデータをチェックし、IDであれば次のアクセス時に使うため((d)として使用)にこのIDを保存しておく。また、もし生成出来なかったことを示す値であった場合はエラーを返すか例外をスローする。この動作は生成される元のクラスのコンストラクタのAPIに依存する。
(11)ここでリソースアクセス用オブジェクトのコンストラクタが終わるので、組み込み機器アクセスサービス205bはリソースアクセス用オブジェクトをJava(登録商標)アプリケーション206に渡す。
図11は、このリソースアクセスの処理手順を示す説明図である。
(1)Java(登録商標)アプリケーション206は、リソースアクセス用オブジェクトのメソッドを呼び出す。
(2)リソースアクセス用オブジェクトは、組み込み機器アクセスサービス205bに対して、携帯電話アクセスモジュール102bに、Java(登録商標)アプリケーション206から呼び出されたメソッドに対応するリソースアクセス要求を知らせるための設定を行うよう依頼する。そして組み込み機器アクセスサービス205bは、携帯電話アクセスモジュール102bにリソースアクセス要求があることを設定しておく。
(3)携帯電話アクセスモジュール102bは、自身に対するリソースアクセス要求の有無をチェックするために、HTTP要求を行う。
(5)携帯電話アクセスモジュール102bは、HTTP応答に設定されているリソースアクセス要求を取り出し、要求されたリソースアクセスを実行する。
(6)携帯電話アクセスモジュール102bは、リソースアクセスの実行結果をHTTP要求として組み込み機器アクセスサービス205bに送信する。このとき、戻り値がプリミティブや文字列などネットワークを通して直接送信可能なものはそのままもしくはバイトとして送り、オブジェクトの場合はこのオブジェクトのIDを決定し、このIDとオブジェクトを対応付けて保存しておき、このIDを送る。
(8)そして組み込み機器アクセスサービス205bは送られてきたHTTP要求をチェックし、リソースアクセスの実行結果をリソースアクセス用オブジェクトに渡す。
(9)リソースアクセス用オブジェクトは、渡された結果をメソッドの戻り値としてリターンする。このとき、戻り値がプリミティブや文字列の場合は(バイトに変換されて送られてきた場合は元の型に変換する必要がある)そのままリターンし、オブジェクトの場合はそのオブジェクトに対応するリソースアクセス用オブジェクトを送られてきたIDと組み込み機器アクセスサービス205bをパラメータとして生成し、この生成したリソースアクセス用オブジェクトをリターンする。
図12は、この発明の実施の形態4によるアプリケーションプラットフォーム提供システムを示す構成図である。
実施の形態4は、組み込み機器100とサーバ200cとネットワーク300からなる。ここで、組み込み機器100およびネットワーク300については、実施の形態1の組み込み機器100およびネットワーク300と同様の構成であるため、ここでの説明は省略する。
以下、サーバ200c上で動作するJava(登録商標)アプリケーション206が組み込み機器100のリソースにアクセスする実行手順について説明する。
先ず、リソースアクセスクラス管理部212は、サーバ側通信部208を使用して組み込み機器アクセスモジュール102からの接続を待っている。
次に、組み込み機器100が起動して組み込み機器アクセスモジュール102が開始されると、組み込み機器アクセスモジュール102は、組み込み機器側通信部104を使用してリソースアクセスクラス管理部212に接続しに行く。接続に失敗した場合は設定ファイル等(図示しない)で指定された間隔でリトライする。
次に、組み込み機器側の情報を受け取ったリソースアクセスクラス管理部212は組み込み機器IDをキーとして組み込み機器のIPアドレスおよび接続待ちを行うポート番号を登録する。
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と通信を行い、リソースアクセスを行うことになる。
(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(登録商標)VM202やOSGiフレームワーク203の例を説明したが、特にこれらに限定されるものではない。即ち、機器側ではリソースの制限により動作させることが不可能なもの(各実施の形態ではJava(登録商標)VM)を利用するもの(各実施の形態ではOSGiフレームワーク)を提供するような構成であればどのようなものあっても適用可能である。
Claims (11)
- 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、前記特定のアプリケーションプラットフォームと前記所定のアプリケーションとを有するサーバとを備え、
前記サーバは、
前記特定のアプリケーションプラットフォーム上で動作し、前記アプリケーションから前記機器固有の処理に関するアクセス要求があった場合、当該アクセス要求に基づいて前記機器への処理要求を行い、かつ、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアクセスサービスとを備え、
前記機器は、
前記アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果を前記アクセスサービスに対して応答するアクセスモジュールを備えたアプリケーションプラットフォーム提供システム。 - アクセスサービスは、所定のアプリケーションから機器のリソースアクセス要求を受けた場合、リソースアクセス用オブジェクトを生成すると共に、当該リソースアクセス用オブジェクトに基づいて前記機器への処理要求を行うことを特徴とする請求項1記載のアプリケーションプラットフォーム提供システム。
- アクセスサービスは、所定のアプリケーションから、機器上で動作するネイティブライブラリへのアクセス要求を受けた場合、前記機器へのネイティブライブラリ呼び出し要求を行い、
アクセスモジュールは、前記ネイティブライブラリ呼び出し要求を受けた場合は、前記ネイティブライブラリへのアクセスを行うことを特徴とする請求項1記載のアプリケーションプラットフォーム提供システム。 - アクセスモジュールは、サーバからのアクセス要求の接続待ちを行い、アクセスサービスは、機器への処理要求が発生した場合に、前記アクセスモジュールに対して接続を行うことを特徴とする請求項1から請求項3のうちのいずれか1項記載のアプリケーションプラットフォーム提供システム。
- アクセスサービスは、機器への処理要求が発生した場合に、前記アクセスモジュールからの接続要求待ちを行い、当該アクセスモジュールから接続要求があった場合に前記アクセス要求を行うことを特徴とする請求項1から請求項3のうちのいずれか1項記載のアプリケーションプラットフォーム提供システム。
- アクセスモジュールは、アクセスサービスからのそれまでのアクセス要求の有無に応じて、接続要求の頻度を変更することを特徴とする請求項5記載のアプリケーションプラットフォーム提供システム。
- 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、前記特定のアプリケーションプラットフォームを有するサーバとを備え、
前記サーバは、
前記特定のアプリケーションプラットフォームに設けられ、機器側の処理についての情報を有し、前記所定のアプリケーションから処理要求があった場合、前記情報に基づいて当該処理が前記機器での処理であるかを判定し、そうであった場合は、前記機器へのアクセス要求を行い、かつ、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアクセス管理部を備え、
前記機器は、
前記アクセス管理部からの処理要求を受けた場合は、機器固有の処理を行い、その処理結果を前記アクセス管理部に対して応答するアクセスモジュールを備えたアプリケーションプラットフォーム提供システム。 - 特定のアプリケーションプラットフォームは、Java(登録商標)VMと当該Java(登録商標)VM上で動作する所定のフレームワークからなり、所定のアプリケーションはJava(登録商標)アプリケーションであることを特徴とする請求項1から請求項7のうちいずれか1項記載のアプリケーションプラットフォーム提供システム。
- 機器は、携帯電話であることを特徴とする請求項1から請求項8のうちのいずれか1項記載のアプリケーションプラットフォーム提供システム。
- 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器と、前記特定のアプリケーションプラットフォームと前記所定のアプリケーションとを有するサーバとを備え、
前記アプリケーションから前記機器固有の処理に関するアクセス要求があった場合、前記特定のアプリケーションプラットフォーム上で動作するアクセスサービスが、前記アクセス要求に基づいて前記機器への処理要求を行い、
前記機器は、前記アクセスサービスからの処理要求に基づいて機器固有の処理を行って、その処理結果を前記アクセスサービスに対して応答し、
前記アクセスサービスは、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアプリケーションプラットフォーム提供方法。 - 所定のアプリケーションが動作するための特定のアプリケーションプラットフォームを持たない機器を構成するコンピュータと、前記特定のアプリケーションプラットフォームと前記所定のアプリケーションとを有するサーバを構成するコンピュータとを、
前記サーバを構成するコンピュータ上で、前記特定のアプリケーションプラットフォーム上で動作し、前記アプリケーションから前記機器固有の処理に関するアクセス要求があった場合、当該アクセス要求に基づいて前記機器への処理要求を行い、かつ、前記機器より処理結果を受信した場合は、当該処理結果を前記アプリケーションに応答するアクセスサービスとして機能させ、
前記機器を構成するコンピュータ上で、前記アクセスサービスからの処理要求を受けた場合は、機器固有の処理を行い、その処理結果を前記アクセスサービスに対して応答するアクセスモジュールとして機能させるためのアプリケーションプラットフォーム提供プログラム。
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)
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)
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 | ネットワーク上でのサービス共有のための装置及び方法 |
-
2004
- 2004-11-01 JP JP2004318119A patent/JP2006127399A/ja active Pending
Patent Citations (3)
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)
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 |