説明

クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム

【課題】クライアントに専用のモジュールが用意されていなくても、サーバからそのクライアントでJava(登録商標)メソッドを呼び出せるようにする。
【解決手段】サーバ装置20が実行可能なJavaメソッドであって端末30にて実行されるアプレット80上で呼び出されるJavaメソッドを含むメッセージを、サーバ装置20のメッセージ送信部42が端末30に送信する。端末30では、メッセージ受信部52が受信したメッセージに応じて、JavaScript(登録商標)60とアプレット80の間でイベントの受け渡しをすることにより、そのメッセージに含まれるJavaメソッドをアプレット80の実行部81が呼び出す。その呼び出しの結果を含むメッセージを、メッセージ送信部53がサーバ装置20に送信する。サーバ装置20のメッセージ受信部43がそのメッセージを受信して、サーバ装置は端末でJavaメソッドを呼び出した結果を取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアントでJava(登録商標)メソッドを呼び出すシステム、コンピュータ、方法及びプログラムに関する。
【背景技術】
【0002】
サーバにおいて発生したイベントを、リアルタイムでウェブブラウザに通知する機能が知られている(例えば、非特許文献1参照)。また、複数の端末のウェブブラウザの表示画面を同期して更新するクライアントプログラムが知られている(例えば、特許文献1参照)。通信ネットワークに接続されたサーバステーションを介してアクセス可能なデータ処理オブジェクトをクライアントステーションからリモートで使用する方法も知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2010−176336号公報
【特許文献2】特開2002−207604号公報
【非特許文献】
【0004】
【非特許文献1】須江信洋,田中孝清、「WebSphere Application Server Feature Pack for Web2.0 “06 Web Messaging”」、日本IBMホームページ、2008年5月21日、[平成23年7月28日検索]、インターネット<URL:http://download.boulder.ibm.com/ibmdl/pub/software/dw/jp/websphere/was/was_web20fep_ws/FPWEB20_06WebMessaging.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
あるJava仮想マシン(JVM)から、別のJVMにあるオブジェクトのメソッドを呼び出すためには、JavaのRMI(Remote Method Invocation)の仕組みを使う必要がある。このRMIを利用するためには、Javaメソッドが呼び出される側で、RMIのサービス呼び出しを最初に受け付けるモジュールが予め稼動している必要がある。
【0006】
また、サーバからクライアントに対して計算処理をさせることができるシステムとして、グリッドコンピューティングが知られている。これは、ネットワーク上にあるコンピュータ同士を結びつけて1つの複合したコンピュータシステムとして機能させるものである。しかしながら、グリッドコンピューティングを利用するためには、専用のクライアントを用意する必要がある。
【0007】
このため、サーバのJavaプログラムやクライアントのウェブブラウザから、より簡易な方法によって他のクライアントでJavaメソッドを呼び出せるようにすることが望ましい。本発明の目的は、クライアントに専用のモジュールが用意されていなくても、サーバからそのクライアントでJavaメソッドを呼び出せるようにすることである。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明の第1の態様においては、サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、前記サーバコンピュータが、自装置が実行可能なJavaメソッドを前記クライアントコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、前記クライアントコンピュータが、前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、自装置のJava仮想マシン上で前記Javaアプレットを実行するアプレット実行部と、前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Javaアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Javaメソッドを呼び出すように制御するイベント受渡部と、前記アプレット実行部が前記Javaメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システムを提供する。
本発明の第2の態様においては、前記サーバコンピュータが実行可能なJavaメソッドを含むJavaオブジェクトを含むメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、第1の態様のシステムを提供する。
本発明の第3の態様においては、前記サーバコンピュータが実行可能なJavaメソッドであって前記JavaアプレットがもっているJavaメソッドを呼び出すためのパラメータを含むメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、第1の態様のシステムを提供する。
本発明の第4の態様においては、前記クライアントコンピュータを複数台含むコンピュータシステムであって、前記クライアントコンピュータのうちの第1のクライアントコンピュータの前記クライアント側メッセージ送信部が、当該クライアントコンピュータのうちの第2のクライアントコンピュータにて実行されるJavaアプレット上で前記Javaメソッドを呼び出すためのメッセージを、前記サーバコンピュータを介して当該第2のクライアントコンピュータに送信し、前記第2のクライアントコンピュータの前記クライアント側メッセージ受信部が受信した前記メッセージに応じて当該第2のクライアントコンピュータの前記アプレット実行部が前記Javaメソッドを呼び出し、前記Javaメソッドが呼び出された結果を含むメッセージを、前記第2のクライアントコンピュータの前記クライアント側メッセージ送信部が、前記サーバコンピュータを介して前記第1のクライアントコンピュータに送信する、第1の態様乃至第3の態様のいずれかのシステムを提供する。
本発明の第5の態様においては、前記サーバコンピュータにかかっている負荷が予め定めた基準よりも大きい場合に、前記Javaアプレット上で前記Javaメソッドを呼び出すためのメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、第1の態様乃至第4の態様のいずれかのシステムを提供する。
本発明の第6の態様においては、前記クライアントコンピュータ用の表示部への前記Javaアプレットによる表示を制御するJavaメソッドを当該Javaアプレット上で呼び出すためのメッセージを、前記サーバ側メッセージ送信部が当該クライアントコンピュータに送信する、第1の態様乃至第5の態様のいずれかのシステムを提供する。
本発明の第7の態様においては、サーバコンピュータとクライアントコンピュータが通信回線を介して接続され、当該サーバコンピュータで発生したイベントを当該クライアントコンピュータに通知する機能を当該サーバコンピュータが有するコンピュータシステムであって、前記サーバコンピュータが、自装置のHTMLファイルであって、ブラウザ用スクリプト及びJavaアプレットを含むHTMLファイルのURLにアクセスしてきた前記クライアントコンピュータに、当該ブラウザ用スクリプト及び当該Javaアプレットを送信するアプリケーション送信部と、自装置が実行可能なJavaメソッドであって前記クライアントコンピュータにて実行される前記Javaアプレット上で呼び出されるJavaメソッドを含むメッセージ、又は当該JavaアプレットがもっているJavaメソッドを呼び出すためのパラメータを含むメッセージを、当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、前記クライアントコンピュータが、前記サーバコンピュータの前記HTMLファイルのURLにアクセスすることにより、当該サーバコンピュータから前記ブラウザ用スクリプト及び前記Javaアプレットを受信するアプリケーション受信部と、前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、前記アプリケーション受信部が受信した前記ブラウザ用スクリプトを自装置のウェブブラウザ上で実行するスクリプト実行部と、前記アプリケーション受信部が受信した前記Javaアプレットを自装置のJava仮想マシン上で実行するアプレット実行部と、前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Javaアプレットの間でイベントの受け渡しをすることにより、当該メッセージに含まれる前記Javaメソッド又は当該Javaアプレットがもっている前記Javaメソッドを当該アプレット実行部が呼び出すように制御するイベント受渡部と、前記アプレット実行部が前記Javaメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システムを提供する。
本発明の第8の態様においては、通信回線を介して他のコンピュータと接続されたコンピュータであって、自装置が実行可能なJavaメソッドを前記他のコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部とを備える、コンピュータを提供する。
本発明の第9の態様においては、第1のコンピュータと通信回線を介して接続された第2のコンピュータで当該第1のコンピュータがJavaメソッドを呼び出す方法であって、前記第1のコンピュータが実行可能なJavaメソッドを前記第2のコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを、当該第1のコンピュータから当該第2のコンピュータに送信するステップと、前記第1のコンピュータから送信された前記メッセージを前記第2のコンピュータで受信するステップと、前記第2のコンピュータのウェブブラウザ上でブラウザ用スクリプトを実行するステップと、前記第2のコンピュータのJava仮想マシン上で前記Javaアプレットを実行するステップと、受信された前記メッセージに応じて、前記ブラウザ用スクリプトと前記Javaアプレットの間でイベントの受け渡しをすることにより、前記第2のコンピュータで前記Javaメソッドを呼び出すステップと、前記Javaメソッドが呼び出された結果を含むメッセージを前記第2のコンピュータから前記第1のコンピュータに送信するステップと、前記第2のコンピュータから送信された前記メッセージを前記第1のコンピュータで受信するステップとを備える、方法を提供する。
本発明の第10の態様においては、通信回線を介して他のコンピュータと接続されたコンピュータが当該他のコンピュータでJavaメソッドを呼び出すように機能させるプログラムであって、前記コンピュータを、自装置が実行可能なJavaメソッドを前記他のコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部として機能させる、プログラムを提供する。
【0009】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施形態に係るコンピュータシステムの構成を示した図である。
【図2】サーバ装置から端末へイベントを送信する場合の処理の一例を示した図である。
【図3】本発明の実施形態に係るサーバ装置及び端末の機能構成を示したブロック図である。
【図4】サーバ装置と端末の間で送受信されるメッセージの形式の例を示した図である。
【図5】四則演算を行うJavaクラスのサンプルソースである。
【図6】JavaScriptとアプレットの間でのメッセージの送り方を例示したサンプルソースである。
【図7】本発明の実施形態に係るサーバ装置が端末でJavaメソッドを呼び出すときの処理フローの一例を示した図である。
【図8】本発明の実施形態に係る第1の端末が第2の端末でJavaメソッドを呼び出すときの処理フローの一例を示した図である。
【図9】本発明の実施形態に係るコンピュータのハードウェア構成の一例を示した図である。
【発明を実施するための形態】
【0011】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0012】
図1は、本実施形態に係るコンピュータシステム10の構成を示す。本実施形態に係るコンピュータシステム10は、サーバ装置20と、複数の端末30とを備える。サーバ装置20はウェブアプリケーションサーバであり、それぞれの端末30で実行されるウェブブラウザにウェブコンテンツを提供する。サーバ装置20は、一例として、それぞれのウェブブラウザに、HTML(HyperText Markup Language)ファイルであるウェブページを提供する。
【0013】
複数の端末30のそれぞれは、サーバ装置20とネットワークを介して接続される。それぞれの端末30は、ウェブブラウザを実行する。それぞれのウェブブラウザは、ユーザの操作に応じて、サーバ装置20からウェブコンテンツを取得して実行し、このウェブコンテンツにより提供される情報を表示する。それぞれのウェブブラウザは、一例として、ウェブページをダウンロードして、表示画面にウェブページを表示する。
【0014】
ウェブコンテンツは、JavaScript(登録商標)アプリケーションとJavaアプレット(以下、単にアプレットという)を含む。JavaScriptアプリケーションは、ウェブブラウザが実行可能なJavaScript言語で記述されたプログラムである。アプレットは、ウェブブラウザのウィンドウに埋め込まれて実行されるJavaプログラムである。それぞれの端末30は、これらのアプリケーションをダウンロードして実行する。これらのアプリケーションは、一例として、HTMLファイルであるウェブページに挿入される。また、これらのアプリケーションは、一例として、ウェブコンテンツの提供者により作成される。本実施形態では、JavaScriptアプリケーションはブラウザ用スクリプトの一例である。
【0015】
図2は、本実施形態において、サーバ装置20から端末30へイベントを送信する場合の処理の一例を示す。本実施形態に係るコンピュータシステム10は、一例として、図2に示されるような方法により、サーバ装置20から端末30へとイベントを送信する。
【0016】
即ち、複数のウェブブラウザのそれぞれは、サーバ装置20に対してリクエストを送信する。サーバ装置20は、ウェブブラウザから受信したリクエストに対して直ぐにレスポンスを返すのではなく、一定時間(例えば、30〜60秒間)、HTTP(HyperText Transfer Protocol)接続を維持する。
【0017】
その一定時間の間にサーバ装置20で何かイベントが発生した場合には、サーバ装置20はそのイベントのメッセージを含めてウェブブラウザにレスポンスを返す。レスポンスを受信すると、ウェブブラウザは直ぐに次のリクエストをサーバ装置20へ送信する。一方、その一定時間の間にサーバ装置20で何もイベントが発生しなかった場合には、サーバ装置20はその一定時間の経過後にHTTP接続を切断する。その後、やはりウェブブラウザはサーバ装置20に再接続する。これにより、サーバ装置20は、サーバ装置20で発生したイベントをタイムラグ無く複数のウェブブラウザのそれぞれに通知することができる。
【0018】
図2以外の方法でも、ウェブブラウザがHTTPだけでなくTCPレベルでの接続をサーバ装置20との間で確立できる場合には、例えばWebSocketの技術を利用することにより、サーバ装置20からウェブブラウザにタイムラグ無く(リアルタイムで)イベント通知を行うことが可能になる。
【0019】
こうした機能は、クライアント(各端末30のウェブブラウザ)側ではJavaScriptライブラリとして実装されている。一方、一般に、サーバ(サーバ装置20)側のウェブアプリケーションは、Javaにより実装されるサーブレットが主流である。サーバにはJavaScriptの実行環境がないため、通常、サーバ側の処理がJavaScriptで実装されることはない。このため、サーバ側の計算処理を一般のクライアントに実行させて負荷分散をするためには、サーバ側のアプリケーションの実装言語であるJavaによるオブジェクトを、そのままサーバからクライアントに送信し、クライアントに処理させることが望ましい。
【0020】
そこで、本実施形態では、端末30(ウェブブラウザ)上でのみ実行可能なプログラムではなく、サーバ装置20上で実行可能なプログラム(Javaクラス又はJavaオブジェクト)をそのまま端末30に送信し、それをサーバ装置20等の外部から呼び出すようにする。即ち、サーバ装置20は、端末30にJavaオブジェクトを送信し、端末30にそのJavaオブジェクトを呼び出すように依頼する。そして端末30は、その呼び出しを実行した結果を含むJavaオブジェクトをサーバ装置20に返信する。これにより、サーバ装置20は、サーバ装置20で実行可能なプログラムを、そのまま端末30に実行させる。
【0021】
図3は、本実施形態に係るサーバ装置20及び端末30の機能構成を示す。まず、サーバ装置20の機能ブロックについて説明する。サーバ装置20は、アプリケーション記憶部21と、アプリケーション送信部22とを有する。また、サーバ装置20上では、サーブレット40が実行されている。
【0022】
アプリケーション記憶部21は、サーバ装置20のウェブコンテンツを記憶している。このウェブコンテンツは、端末30にダウンロードされて実行されるJavaScriptアプリケーション60(以下、単にJavaScript60という)とアプレット80を含む。
【0023】
アプリケーション送信部22は、それぞれの端末30上で動作するウェブブラウザからの要求に応じて、アプリケーション記憶部21に記憶されているJavaScript60とアプレット80をその端末30に送信する。
【0024】
サーブレット40は、Java言語で記述されたプログラムである。サーバ装置20がサーブレット40を実行することにより、実行部41と、メッセージ送信部42と、メッセージ受信部43とが実現される。
【0025】
実行部41は、サーブレット40の計算処理等を行う。具体的な処理の例は後述する。また、実行部41は、端末30を指定して、一部のJavaメソッドをその端末30に実行させる機能を有する。そのために、実行部41は、メッセージ送信部42及びメッセージ受信部43を介して端末30とメッセージをやり取りし、端末30に実行させるJavaメソッドをその端末30で呼び出す。
【0026】
メッセージ送信部42は、サーブレット40で発生したイベントをメッセージ化して、端末30に送信する。特に、メッセージ送信部42は、端末30にて実行されるアプレット80上でJavaメソッドを呼び出すためのメッセージを、その端末30に送信する。本実施形態では、メッセージ送信部42はサーバ側メッセージ送信部の一例である。
【0027】
メッセージ受信部43は、メッセージ送信部42が送信したメッセージに応じて端末30がJavaメソッドを呼び出した結果を含むメッセージを、その端末30から受信する。本実施形態では、メッセージ受信部43はサーバ側メッセージ受信部の一例である。
【0028】
次に、端末30の機能ブロックについて説明する。端末30は、ウェブブラウザ50と、Java仮想マシン70(以下、単にJVM70という)とを備える。
【0029】
ウェブブラウザ50は、アプリケーション受信部51と、メッセージ受信部52と、メッセージ送信部53とを有する。また、ウェブブラウザ50上では、JavaScript60が実行されている。
【0030】
アプリケーション受信部51は、ウェブブラウザ50とJVM70でそれぞれ実行されるJavaScript60とアプレット80を、サーバ装置20のHTMLファイルのURL(Uniform Resource Locator)にアクセスすることにより、サーバ装置20から受信する。
【0031】
メッセージ受信部52は、サーバ装置20のメッセージ送信部42から送信されたメッセージを受信する。本実施形態では、メッセージ受信部52はクライアント側メッセージ受信部の一例である。
【0032】
メッセージ送信部53は、メッセージ受信部52が受信したメッセージに応じてアプレット80の実行部81(後述)がJavaメソッドを呼び出した結果を含むメッセージを、サーバ装置20のメッセージ受信部43に送信する。本実施形態では、メッセージ送信部53はクライアント側メッセージ送信部の一例である。
【0033】
JavaScript60は、ウェブブラウザ50上で実行されるプログラムである。ウェブブラウザ50がJavaScript60を実行することにより、実行部61と、アプレット呼出部62とが実現される。実行部61は、アプリケーション受信部51が受信したJavaScript60に記述された具体的な処理を実行する。アプレット呼出部62は、サーバ装置20からのイベントをアプレット80に通知するために、メッセージ受信部52が受信したメッセージに応じてアプレット80の実行部81を呼び出す。本実施形態では、実行部61はスクリプト実行部の一例である。
【0034】
JVM70は、Javaバイトコードを端末30のプラットフォームのネイティブコードに変換して実行するソフトウェアである。JVM70上では、アプレット80が実行されている。
【0035】
アプレット80は、JVM70上で実行されるJavaプログラムである。JVM70がアプレット80を実行することにより、実行部81と、JavaScript呼出部82とが実現される。実行部81は、アプリケーション受信部51が受信したアプレット80に記述された具体的な処理を実行する。JavaScript呼出部82は、アプレット80上で発生したイベントをサーバ装置20等に送信するために、JavaScript60の実行部61を呼び出す。
【0036】
このように、ウェブブラウザ50とJVM70は、アプレット呼出部62とJavaScript呼出部82を介してイベントの受け渡しを行う。本実施形態では、アプレット呼出部62とJavaScript呼出部82はイベント受渡部の一例である。
【0037】
図4は、サーバ装置20と端末30の間で送受信されるメッセージの形式の例を示す。このメッセージは、JavaScriptにおけるオブジェクトの表記法を応用したJSON(JavaScript Object Notation)のデータ形式で作成されている。まず、サーバ装置20から端末30に送信されるメッセージ90について説明する。このメッセージ90は、JSONヘッダ90Aと、Javaオブジェクト90Bとを有する。
【0038】
JSONヘッダ90Aは、MSGヘッダ91と、送信先ID92と、送信元ID93と、呼び出しメソッド名94とを有する。MSGヘッダ91は、メッセージ90を送るためのヘッダである。送信先ID92は、メッセージ90の送信先である端末30のウェブブラウザを識別するための情報である。送信元ID93は、送信元であるサーバ装置20を識別するための情報である。呼び出しメソッド名94は、Javaオブジェクト90Bにより呼び出されるJavaメソッドの名称である。
【0039】
Javaオブジェクト90Bは、Javaヘッダ95と、Javaメソッド96と、Javaフィールド97とを有する。Javaヘッダ95は、Javaオブジェクト90Bのヘッダである。Javaメソッド96は、Javaオブジェクト90Bの「手続き」が記載される部分である。Javaフィールド97は、Javaメソッド96を実行するための「データ」(パラメータ)である。
【0040】
端末30からサーバ装置20に返信されるメッセージ90’もメッセージ90と同様であるが、送信先ID92と送信元ID93の内容はメッセージ90のものとは逆になっている。また、呼び出しメソッド名94の部分が処理結果コード98に変わっている。この処理結果コード98は、Javaオブジェクト90Bの実行が成功した場合には0、エラーであった場合には−1などの値をもつリターンコードである。さらに、メッセージ90’は、Javaフィールド97の部分に処理結果99を含む。処理結果99は、Javaオブジェクト90Bを実行して得られた演算結果等の値である。
【0041】
なお、サーバ装置20から端末30にJavaオブジェクト90Bを送信することは必須ではない。端末30で呼び出されるJavaメソッドは、その端末30のアプレット80等のJavaプログラムが元からもっているものでもよい。このため、サーバ装置20から端末30に送信されるメッセージは、サーバ装置20が実行可能なJavaメソッドであって端末30にて実行されるアプレット80上で呼び出されるJavaメソッドを(即ち、Javaオブジェクトを)含むメッセージでもよいし、又は、Javaオブジェクトを含まず、アプレット80が既にもっているJavaメソッドを呼び出すためのパラメータのみを含むメッセージでもよい。
【0042】
ここで、Javaメソッドの具体例について説明する。図5は、四則演算を行うJavaクラスのサンプルソースである。このJavaクラスは、次の(1)〜(3)の機能をもつ。なお、このクラス自体は、アプレットインターフェイスをもたないため、Javaアプレットではない。
(1)パラメータ設定用メソッド(setParams())を呼び出すことで、2個の入力パラメータ用フィールドa,bに値が設定される。
(2)演算用メソッド(add(),subtract(),multiply(),divide()のいずれか)を呼び出すことで、演算結果が結果用フィールドresultに設定される。
(3)結果取得メソッド(getResult())を呼び出すことで、結果用フィールドresultから演算結果が取得される。
【0043】
本実施形態のコンピュータシステム10では、サーバ装置20が実行可能なJavaメソッドを、端末30にて実行されるアプレット80上で、サーバ装置20が呼び出すことができる。その際、図5に示したような汎用的なJavaクラスが、アプレット80から利用されることにより、端末30で実行される。図5のJavaクラスをサーバ装置20で利用する場合には、上記(1)〜(3)は全てサーバ装置20で実行され、(2)の処理もサーバ装置20のリソース(CPU、メモリ)により実行される。一方、図5のJavaクラスを端末30で利用する場合には、例えば上記(1)はサーバ装置20で行い、上記(2)は端末30のリソースを使って端末30で行い、上記(3)はサーバ装置20で行うことが可能である。
【0044】
即ち、本実施形態によれば、メインの演算処理である(2)を、サーバ装置20と端末30のどちらでも実行することができる。このため、その時点でのサーバ装置20の負荷状況に応じて、それまでサーバ装置20で実行していたものと同一のプログラム(Javaクラス及びそのインスタンス)を端末30に処理させることが可能である。例えば、サーバ装置20にかかっている負荷が予め定めた基準よりも小さい間はサーバ装置20上でJavaプログラムを実行し、負荷がその基準を超えた場合に、そのプログラムの一部のJavaメソッドをアプレット80上で呼び出すためのメッセージを、端末30に送信してもよい。
【0045】
なお、図5に示した四則演算を行うJavaクラスは、説明のために挙げた非常に単純な例である。演算処理のロジックやパラメータは、より複雑なものにすることもできる。
【0046】
次に、アプレット呼出部62とJavaScript呼出部82がそれぞれアプレット80の実行部81とJavaScript60の実行部61を呼び出すときの具体的な方法について例示する。図6は、JavaScript60とアプレット80の間でのメッセージの送り方を例示したサンプルソースである。図6(A)は、アプレットからJavaScriptへのメッセージの送り方の例であり、図6(B)は、JavaScriptからアプレットへのメッセージの送り方の例である。図6(B)で、「ti」は「applet」タグの「name」属性で指定されるアプレットの名前であり、「setStr()」はこのアプレットがもっているメソッドである。
【0047】
以下では、本実施形態に係るサーバ装置20と端末30の動作について説明する。図7は、サーバ装置20が端末30でJavaメソッドを呼び出すときの処理フローの一例を示す。まず、一の端末30のウェブブラウザ50は、サーバ装置20のHTMLファイルのURLにアクセスする(S11)。このアクセスに応じて、サーバ装置20のアプリケーション送信部22と端末30のアプリケーション受信部51を介して、端末30のウェブブラウザ50はウェブページをダウンロードする(S12)。このウェブページは、JavaScriptアプリケーションとアプレットを含む。
【0048】
そして、端末30のウェブブラウザ50とJVM70は、ダウンロードされたウェブページに含まれるJavaScriptアプリケーションとアプレットをそれぞれ実行する。これにより、端末30は、JavaScript60とアプレット80を実行することができる。
【0049】
続いて、ウェブブラウザ50のJavaScript60の実行部61は、サーバ装置20に対してサブスクライブをする(S13)。実行部61は、一例として、イベントを受信したことにより呼び出されるコールバック関数を登録する。これにより、サーバ装置20が何れかの端末30からイベントを受信した場合、又はサーバ装置20でイベントが発生した場合に、サーバ装置20は端末30のJavaScript60を呼び出すことができる。
【0050】
続いて、ウェブブラウザ50のJavaScript60の実行部61は、そのウェブブラウザ50を識別するためのブラウザ識別情報(ID)の送信をサーバ装置20に要求する(S14)。実行部61は、ステップS13の処理と同時にブラウザ識別情報の要求を行ってもよい。
【0051】
続いて、サーバ装置20は、固有のブラウザ識別情報を、端末30のウェブブラウザ50に割り当てる。ここでは、その端末30のウェブブラウザ50にID=1が割り当てられるとする。なお、サーバ装置20にも、識別情報としてID=−1が割り当てられているとする。サーバ装置20は、割り当てたブラウザ識別情報ID=1を、ウェブブラウザ50のJavaScript60の実行部61に送信する(S15)。実行部61は、受信したブラウザ識別情報を記憶する。
【0052】
一方、サーバ装置20上では、サーブレット40が実行されている。ここで、サーブレット40の実行部41が、ID=1のウェブブラウザ50の端末30でJavaメソッドを呼び出すとする(S16)。この呼び出し処理は、例えばサーバ装置20に対するユーザの操作や、サーバ装置20の負荷状況が予め定められた条件を満たしたことなどを契機として、行われるものとする。
【0053】
すると、サーバ装置20のメッセージ送信部42は、ID=1のウェブブラウザ50を指定して、Javaメソッドを呼び出すイベントを通知する(S17)。即ち、メッセージ送信部42は、ID=1のウェブブラウザ50をもつ端末30に実行させるJavaメソッドを含むJavaオブジェクトを含むメッセージを、その端末30に送信する。例えば、加算のJavaメソッドを端末30に実行させる場合は、図5に示したadd()のコードを図4のJavaメソッド96に含み、加算される値をJavaフィールド97に含むJavaオブジェクト90Bをもつメッセージ90を、メッセージ送信部42が送信する。
【0054】
ID=1のウェブブラウザ50をもつ端末30のメッセージ受信部52がそのメッセージを受信すると、その端末30のアプレット呼出部62は、そのメッセージに対応するイベントをJavaScript60からアプレット80に受け渡す。即ち、アプレット呼出部62は、その端末30のJVM70上で実行されているアプレット80の実行部81を呼び出す(S18)。
【0055】
そして、サーバ装置20から送信されたJavaメソッドの呼び出しが、アプレット80上で実行される(S19)。加算のメソッドを呼び出す場合は、端末30のリソースを使って加算処理が実行される。
【0056】
続いて、JavaScript呼出部82は、Javaメソッドが呼び出されたことに対応するイベントを、アプレット80からJavaScript60に受け渡す。即ち、JavaScript呼出部82は、ウェブブラウザ50上で実行されているJavaScript60の実行部61を呼び出す(S20)。
【0057】
すると、端末30のメッセージ送信部53は、ID=−1のサーバ装置20を指定して、Javaメソッドが呼び出されたことに対応するイベントを通知する(S21)。即ち、メッセージ送信部53は、Javaメソッドを呼び出したことにより得られた結果を含むJavaオブジェクトを含むメッセージを、サーバ装置20に送信する。例えば、加算のJavaメソッドを端末30に実行させた場合は、加算処理により得られた和を図4の処理結果99に含むJavaオブジェクト90Bをもつメッセージ90’を、メッセージ送信部53が送信する。
【0058】
そのメッセージをサーバ装置20のメッセージ受信部43が受信して、サーバ装置20は、Javaメソッドを呼び出したことにより得られた結果を取得する(S22)。以上により、サーバ装置20が端末30でJavaメソッドを呼び出すときの動作は終了する。
【0059】
本実施形態では、サーバ装置20だけでなく端末30も、別の端末30上でJavaメソッドを呼び出すことができる。そこで次に、端末30が別の端末30上でJavaメソッドを呼び出すときの動作について説明する。図8は、第1の端末30が第2の端末30でJavaメソッドを呼び出すときの処理フローの一例を示す。
【0060】
まず、第1の端末30のウェブブラウザ50が、サーバ装置20との間で図7のステップS11〜S15と同様の処理を行う(S31〜S35)。この部分は上記と同様であるため、説明を省略する。また、第2の端末30のウェブブラウザ50も、サーバ装置20との間でステップS11〜S15と同様の処理を行う。第1の端末30と第2の端末30のウェブブラウザ50には、ブラウザ識別情報として、それぞれID=1とID=2が割り当てられているとする。また、サーバ装置20にも、識別情報としてID=−1が割り当てられているとする。
【0061】
ここで、第1の端末30のアプレット80の実行部81が、ID=2のウェブブラウザ50の端末30でJavaメソッドを呼び出すとする(S36)。この呼び出し処理は、例えば第1の端末30で実行されているアプレット80に対するユーザの操作や、第1の端末30の負荷状況が予め定められた条件を満たしたことなどを契機として、行われるものとする。
【0062】
すると、第1の端末30のJavaScript呼出部82は、Javaメソッドを呼び出すイベントを、アプレット80からJavaScript60に受け渡す。即ち、JavaScript呼出部82は、第1の端末30のウェブブラウザ50上で実行されているJavaScript60の実行部61を呼び出す(S37)。
【0063】
すると、第1の端末30のメッセージ送信部53は、ID=2のウェブブラウザ50を指定して、Javaメソッドを呼び出すイベントをサーバ装置20に通知する(S38)。即ち、メッセージ送信部53は、ID=2のウェブブラウザ50をもつ第2の端末30に実行させるJavaメソッドを含むJavaオブジェクトを含むメッセージを、サーバ装置20に送信する。
【0064】
サーバ装置20のメッセージ受信部43がそのメッセージを受信すると、サーバ装置20のメッセージ送信部42は、そのメッセージで指定されているID=2のウェブブラウザ50をもつ第2の端末30に、そのメッセージを通知(転送)する(S39)。
【0065】
ID=2のウェブブラウザ50をもつ第2の端末30のメッセージ受信部52がそのメッセージを受信すると、第2の端末30のアプレット呼出部62は、そのメッセージに対応するイベントをJavaScript60からアプレット80に受け渡す。即ち、アプレット呼出部62は、第2の端末30のJVM70上で実行されているアプレット80の実行部81を呼び出す(S40)。
【0066】
そして、第1の端末30から送信されたJavaメソッドの呼び出しが、アプレット80上で実行される(S41)。
【0067】
続いて、第2の端末30のJavaScript呼出部82は、Javaメソッドが呼び出されたことに対応するイベントを、アプレット80からJavaScript60に受け渡す。即ち、JavaScript呼出部82は、第2の端末30のウェブブラウザ50上で実行されているJavaScript60の実行部61を呼び出す(S42)。
【0068】
すると、第2の端末30のメッセージ送信部53は、ID=1のウェブブラウザ50を指定して、Javaメソッドが呼び出されたことに対応するイベントをサーバ装置20に通知する(S43)。即ち、メッセージ送信部53は、Javaメソッドを呼び出したことにより得られた結果を含むJavaオブジェクトを含むメッセージを、サーバ装置20に送信する。
【0069】
サーバ装置20のメッセージ受信部43がそのメッセージを受信すると、メッセージ送信部42は、そのメッセージで指定されているID=1のウェブブラウザ50をもつ第1の端末30に、そのメッセージを通知(転送)する(S44)。
【0070】
ID=1のウェブブラウザ50をもつ第1の端末30のメッセージ受信部52がそのメッセージを受信すると、第1の端末30のアプレット呼出部62は、そのメッセージに対応するイベントをJavaScript60からアプレット80に受け渡す。即ち、アプレット呼出部62は、第1の端末30のJVM70上で実行されているアプレット80の実行部81を呼び出す(S45)。
【0071】
これにより、第1の端末30のアプレット80の実行部81は、Javaメソッドを呼び出したことにより得られた結果を取得する(S46)。以上により、第1の端末30が第2の端末30でJavaメソッドを呼び出すときの動作は終了する。
【0072】
本実施形態によれば、端末30で実行されているアプレット等のJavaプログラムに対してリモートから(即ち、サーバ装置20や別の端末30等の外部から)Javaオブジェクトを送信し、そのオブジェクトに含まれるJavaメソッドをリモートから呼び出すことが可能になる。即ち、JavaScriptの実行環境をもたないサーバが、クライアント(ウェブブラウザ)上でのみ実行可能なJavaScriptプログラムではなく、サーバ上で実行可能なJavaプログラムをそのままクライアントに送信し、それをサーバから呼び出して実行させることが可能になる。これにより、例えばサーバが、クライアントのリソースを使ってクライアントに計算させた結果を取得することができる。
【0073】
一般に、あるJVMが別のJVM上でJavaメソッドを呼び出すためには、JavaのRMIの仕組みを使う必要がある。しかしながら、本実施形態によれば、Javaメソッドが呼び出される側でRMIのサービス呼び出しを最初に受け付けるモジュールが予め稼動していなくても、リモートからJavaメソッドを呼び出すことが可能になる。
【0074】
なお、図5では四則演算を行うJavaクラスを例示したが、クライアントで呼び出されるJavaメソッドはこれに限らない。クライアントに送信されるJavaオブジェクトには、任意の計算処理を含めることができる。そこで以下では、クライアントで呼び出されるJavaメソッドの別の例について説明する。
【0075】
まず、本実施形態をソート計算に適用することが考えられる。例えば、ソートのアルゴリズムをJavaメソッド内に実装し、さらにこのメソッドを呼び出すための別のメソッドを実装する。ソート対象のデータは、配列等のデータ形式でJavaオブジェクトに含める。ソート結果のデータは、ソート対象のデータエリアに書き込むようにしてもよいし、別に用意したエリアに書き込んでもよい。こうして得られたJavaオブジェクトを含むメッセージを送受信することにより、サーバがクライアントにソートの計算を実行させることができる。一般に、ソートに要する計算量は、ソート対象のデータの要素数に応じて増大する。このため、本実施形態を適用して、計算処理をクライアントに行わせるメリットがある。
【0076】
また、本実施形態を分割統治法による計算処理に適用することも考えられる。本実施形態のコンピュータシステム10は、1個のサーバ装置20に対して複数の端末30が接続されている。そこで、例えばソート計算について、ソート対象のデータを複数個に分割し、それぞれのデータについて別々の端末30にクイックソートやマージソートを実行させることができる。それらの結果をサーバ装置20で取得して、全体のソート結果を求めることができる。
【0077】
また、本実施形態をアプレットの状態制御に適用することも考えられる。一般に、アプレットはクライアントのウェブブラウザ上に表示エリアをもつことができるので、サーバから受信したJavaオブジェクトを処理した結果を、その表示エリアに示すことが可能である。一般に、アプレットを操作するためにはその表示エリアに表示されるボタン等を操作しなければならないが、本実施形態によれば、表示エリアへのアプレットによる表示を制御するコマンドを含むJavaオブジェクトを送受信することにより、クライアントのアプレットをサーバ(又は別のクライアント)から操作することが可能になる。
【0078】
例えば、ウェブブラウザ上の表示エリアに「Start」、「Stop」、「Pause」等のボタンが配置され、クライアントのユーザがこれらのボタンを操作することにより処理を制御することができるアプレットを考える。そして例えば、ウェブブラウザに表示されるウェブページが、ネットワークを利用したリモート講義で利用されている教材であるとする。この場合、複数の受講生が利用している複数のクライアントを、1人の講師が制御したいときがある。サーバ側の講師が各クライアントのアプレットの状態制御をするためには、「Start」、「Stop」、「Pause」等のメソッドの呼び出しをサーバから行い、その結果がアプレットの表示エリアに出力されるようにする必要がある。本実施形態を適用すれば、このような制御を実現することが可能になる。
【0079】
最後に、本実施形態に係るコンピュータのハードウェア構成について説明する。図9は、本実施形態に係るコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部とを備える。
【0080】
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【0081】
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
【0082】
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
【0083】
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
【0084】
コンピュータ1900にダウンロードして実行され、コンピュータ1900を端末30として機能させるプログラムは、アプリケーション受信モジュールと、メッセージ受信モジュールと、メッセージ送信モジュールと、JavaScript実行モジュールと、アプレット呼出モジュールと、アプレット実行モジュールと、JavaScript呼出モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、アプリケーション受信部51、メッセージ受信部52、メッセージ送信部53、実行部61、アプレット呼出部62、実行部81及びJavaScript呼出部82としてそれぞれ機能させる。
【0085】
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるアプリケーション受信部51、メッセージ受信部52、メッセージ送信部53、実行部61、アプレット呼出部62、実行部81及びJavaScript呼出部82として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の端末30が構築される。
【0086】
また、コンピュータ1900にインストールされ、コンピュータ1900をサーバ装置20として機能させるプログラムは、アプリケーション送信モジュールと、サーブレット実行モジュールと、メッセージ送信モジュールと、メッセージ受信モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、アプリケーション送信部22、実行部41、メッセージ送信部42及びメッセージ受信部43としてそれぞれ機能させる。
【0087】
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるアプリケーション送信部22、実行部41、メッセージ送信部42及びメッセージ受信部43として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のサーバ装置20が構築される。
【0088】
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、又はCD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、若しくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置又は通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【0089】
また、CPU2000は、ハードディスクドライブ2040、CD−ROMドライブ2060(CD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイル又はデータベース等の中から、全部又は必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020及び外部記憶装置等をメモリ、記憶部、又は記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、及び/又は記憶装置に含まれるものとする。
【0090】
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数又は定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合(又は不成立であった場合)に、異なる命令列へと分岐し、又はサブルーチンを呼び出す。
【0091】
また、CPU2000は、記憶装置内のファイル又はデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
【0092】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVD又はCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
【0093】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0094】
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【0095】
10…コンピュータシステム、20…サーバ装置、21…アプリケーション記憶部、22…アプリケーション送信部、30…端末、40…サーブレット、41…実行部、42…メッセージ送信部、43…メッセージ受信部、50…ウェブブラウザ、51…アプリケーション受信部、52…メッセージ受信部、53…メッセージ送信部、60…JavaScriptアプリケーション、61…実行部、62…アプレット呼出部、70…Java仮想マシン、80…アプレット、81…実行部、82…JavaScript呼出部、1900…コンピュータ、2000…CPU、2010…ROM、2020…RAM、2030…通信インターフェイス、2040…ハードディスクドライブ、2050…フレキシブルディスク・ドライブ、2060…CD−ROMドライブ、2070…入出力チップ、2075…グラフィック・コントローラ、2080…表示装置、2082…ホスト・コントローラ、2084…入出力コントローラ、2090…フレキシブルディスク、2095…CD−ROM

【特許請求の範囲】
【請求項1】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続されたコンピュータシステムであって、
前記サーバコンピュータが、
自装置が実行可能なJavaメソッドを前記クライアントコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
自装置のウェブブラウザ上でブラウザ用スクリプトを実行するスクリプト実行部と、
自装置のJava仮想マシン上で前記Javaアプレットを実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Javaアプレットの間でイベントの受け渡しをすることにより、当該アプレット実行部が前記Javaメソッドを呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Javaメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項2】
前記サーバコンピュータが実行可能なJavaメソッドを含むJavaオブジェクトを含むメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、請求項1のシステム。
【請求項3】
前記サーバコンピュータが実行可能なJavaメソッドであって前記JavaアプレットがもっているJavaメソッドを呼び出すためのパラメータを含むメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、請求項1のシステム。
【請求項4】
前記クライアントコンピュータを複数台含むコンピュータシステムであって、
前記クライアントコンピュータのうちの第1のクライアントコンピュータの前記クライアント側メッセージ送信部が、当該クライアントコンピュータのうちの第2のクライアントコンピュータにて実行されるJavaアプレット上で前記Javaメソッドを呼び出すためのメッセージを、前記サーバコンピュータを介して当該第2のクライアントコンピュータに送信し、
前記第2のクライアントコンピュータの前記クライアント側メッセージ受信部が受信した前記メッセージに応じて当該第2のクライアントコンピュータの前記アプレット実行部が前記Javaメソッドを呼び出し、
前記Javaメソッドが呼び出された結果を含むメッセージを、前記第2のクライアントコンピュータの前記クライアント側メッセージ送信部が、前記サーバコンピュータを介して前記第1のクライアントコンピュータに送信する、請求項1乃至請求項3のいずれかのシステム。
【請求項5】
前記サーバコンピュータにかかっている負荷が予め定めた基準よりも大きい場合に、前記Javaアプレット上で前記Javaメソッドを呼び出すためのメッセージを、前記サーバ側メッセージ送信部が前記クライアントコンピュータに送信する、請求項1乃至請求項4のいずれかのシステム。
【請求項6】
前記クライアントコンピュータ用の表示部への前記Javaアプレットによる表示を制御するJavaメソッドを当該Javaアプレット上で呼び出すためのメッセージを、前記サーバ側メッセージ送信部が当該クライアントコンピュータに送信する、請求項1乃至請求項5のいずれかのシステム。
【請求項7】
サーバコンピュータとクライアントコンピュータが通信回線を介して接続され、当該サーバコンピュータで発生したイベントを当該クライアントコンピュータに通知する機能を当該サーバコンピュータが有するコンピュータシステムであって、
前記サーバコンピュータが、
自装置のHTMLファイルであって、ブラウザ用スクリプト及びJavaアプレットを含むHTMLファイルのURLにアクセスしてきた前記クライアントコンピュータに、当該ブラウザ用スクリプト及び当該Javaアプレットを送信するアプリケーション送信部と、
自装置が実行可能なJavaメソッドであって前記クライアントコンピュータにて実行される前記Javaアプレット上で呼び出されるJavaメソッドを含むメッセージ、又は当該JavaアプレットがもっているJavaメソッドを呼び出すためのパラメータを含むメッセージを、当該クライアントコンピュータに送信するサーバ側メッセージ送信部と、
前記サーバ側メッセージ送信部が送信した前記メッセージに応じて前記クライアントコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該クライアントコンピュータから受信するサーバ側メッセージ受信部とを備え、
前記クライアントコンピュータが、
前記サーバコンピュータの前記HTMLファイルのURLにアクセスすることにより、当該サーバコンピュータから前記ブラウザ用スクリプト及び前記Javaアプレットを受信するアプリケーション受信部と、
前記サーバコンピュータから送信された前記メッセージを受信するクライアント側メッセージ受信部と、
前記アプリケーション受信部が受信した前記ブラウザ用スクリプトを自装置のウェブブラウザ上で実行するスクリプト実行部と、
前記アプリケーション受信部が受信した前記Javaアプレットを自装置のJava仮想マシン上で実行するアプレット実行部と、
前記クライアント側メッセージ受信部が受信した前記メッセージに応じて、前記スクリプト実行部が実行する前記ブラウザ用スクリプトと前記アプレット実行部が実行する前記Javaアプレットの間でイベントの受け渡しをすることにより、当該メッセージに含まれる前記Javaメソッド又は当該Javaアプレットがもっている前記Javaメソッドを当該アプレット実行部が呼び出すように制御するイベント受渡部と、
前記アプレット実行部が前記Javaメソッドを呼び出した結果を含むメッセージを前記サーバコンピュータに送信するクライアント側メッセージ送信部とを備える、システム。
【請求項8】
通信回線を介して他のコンピュータと接続されたコンピュータであって、
自装置が実行可能なJavaメソッドを前記他のコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、
前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部とを備える、コンピュータ。
【請求項9】
第1のコンピュータと通信回線を介して接続された第2のコンピュータで当該第1のコンピュータがJavaメソッドを呼び出す方法であって、
前記第1のコンピュータが実行可能なJavaメソッドを前記第2のコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを、当該第1のコンピュータから当該第2のコンピュータに送信するステップと、
前記第1のコンピュータから送信された前記メッセージを前記第2のコンピュータで受信するステップと、
前記第2のコンピュータのウェブブラウザ上でブラウザ用スクリプトを実行するステップと、
前記第2のコンピュータのJava仮想マシン上で前記Javaアプレットを実行するステップと、
受信された前記メッセージに応じて、前記ブラウザ用スクリプトと前記Javaアプレットの間でイベントの受け渡しをすることにより、前記第2のコンピュータで前記Javaメソッドを呼び出すステップと、
前記Javaメソッドが呼び出された結果を含むメッセージを前記第2のコンピュータから前記第1のコンピュータに送信するステップと、
前記第2のコンピュータから送信された前記メッセージを前記第1のコンピュータで受信するステップとを備える、方法。
【請求項10】
通信回線を介して他のコンピュータと接続されたコンピュータが当該他のコンピュータでJavaメソッドを呼び出すように機能させるプログラムであって、
前記コンピュータを、
自装置が実行可能なJavaメソッドを前記他のコンピュータにて実行されるJavaアプレット上で呼び出すためのメッセージを当該他のコンピュータに送信するメッセージ送信部と、
前記メッセージ送信部が送信した前記メッセージに応じて前記他のコンピュータが前記Javaメソッドを呼び出した結果を含むメッセージを当該他のコンピュータから受信するメッセージ受信部として機能させる、プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−80404(P2013−80404A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2011−220517(P2011−220517)
【出願日】平成23年10月4日(2011.10.4)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之