JP3558887B2 - 分散システム、その制御方法、および記憶媒体 - Google Patents

分散システム、その制御方法、および記憶媒体 Download PDF

Info

Publication number
JP3558887B2
JP3558887B2 JP24361498A JP24361498A JP3558887B2 JP 3558887 B2 JP3558887 B2 JP 3558887B2 JP 24361498 A JP24361498 A JP 24361498A JP 24361498 A JP24361498 A JP 24361498A JP 3558887 B2 JP3558887 B2 JP 3558887B2
Authority
JP
Japan
Prior art keywords
server
client
component
server component
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP24361498A
Other languages
English (en)
Other versions
JP2000076172A (ja
Inventor
孝信 安東
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP24361498A priority Critical patent/JP3558887B2/ja
Priority to US09/383,963 priority patent/US6678715B1/en
Publication of JP2000076172A publication Critical patent/JP2000076172A/ja
Application granted granted Critical
Publication of JP3558887B2 publication Critical patent/JP3558887B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は複数のコンピュータが接続されてなる分散システムに関し、特に、要求された処理の実行位置決定の改良に関する。
【0002】
【従来の技術】
近年のコンピュータ・通信技術の発達により、コンピュータは単体で使用するよりも、LAN,WANあるいはインターネット等の種々の形態のネットワークシステムを構築し、そのネットワークの中で資源共有等を行って使用される場合が多くなってきている。このようなネットワークシステムの中で、処理を要求するコンピュータ(クライアントホスト)に対して何らかの処理を行う他のコンピュータ(サーバホスト)が存在するシステムは、クライアント・サーバシステムあるいは分散システム(以下、本明細書では分散システムと称する)と呼ばれている。このような分散システムによれば、クライアントホストの要求する処理を、その時のネットワークシステムの状況や処理内容に応じて当該クライアントホスト以外のサーバホスト等で実行させることも可能である。
【0003】
従来の分散システムは大きく3種類に分類される。以下それぞれについて説明する。
【0004】
第1の形態は、メインフレームに代表される垂直型分散システムである。垂直型分散システムでは基本的にはクライアントホストからサーバホストヘ処理を依頼し、サーバホストはその処理を実行し、クライアントホストはその処理結果をサーバから受け取る。
【0005】
このような垂直型の分散システムでは次に示すような問題点がある。
【0006】
(1)クライアントホストが多数のサーバホストヘ接続されている場合、サーバホストへの過負荷が原因で処理全体のスループットが低下する。
【0007】
(2)処理を依頼するたびにネットワーク経由での通信を行なうため、ネットワークトラフィックが増大する。
【0008】
第2の形態は、水平型分散システムである。水平型分散システムでは、必要なデータをサーバホストに存在するデータベースマネジメントシステム(DMBS)などへ要求し、それから得られた情報に対する処理はクライアントホストで行うようにする。これにより、上記垂直型分散システムの問題点(1)、(2)をある程度克服できる。
【0009】
ただし、このシステムでは次のような問題点が挙げられる。
【0010】
(3)クライアントホストにある程度の処理能力やリソースが必要となる。
【0011】
(4)クライアントホストとデータベースマネンジメントシステムが密接に関わっているため、データベースマネンジメントシステムの変更等に対処するためのシステムの柔軟性が低い。
【0012】
(5)クライアントホスト毎にアプリケーションプログラム管理を行なわなければならない。
【0013】
第3の形態は、2次記憶(HDDなど)を持たないネットワークコンピュータ(NC)や、モバイル環境向けのモバイルネットワークコンピュータ(MNC)などによって構成される分散ネットワークシステムである。なお、分散ネットワークシステムでは、通常のパーソナルコンピュータ(PC)やワークステーション(WS)も当然に端末となりうる。この分散ネットワークシステムでは、クライアントがサーバヘ処理を要求するとその処理を実行するサーバコンポーネントがクライアントホストヘ送られてきて、その処理をクライアントホスト上で実行する。近年のJavaアプレットがこれに相当する。
【0014】
このシステムでは、水平分散システムの(5)の問題点が克服される。ただし、(3)の問題点は逆に強調されてしまう。クライアントホストが処理能力の高いパーソナルコンピュータやワークステーションの場合であればまだしも、ネットワークコンピュータやモバイルネットワークコンピュータはそれらに比べれば処理能力が低いためである。またそれに伴い、次のような問題点もある。
【0015】
(6)サーバが低負荷な場合であれば、クライアント側で処理を実行するよりもサーバ側で処理を実行するほうが、処理全体のスループットが向上する。
【0016】
また、これらの問題点の他に、上記3つの形態のシステムにおいて、共通に次の問題点がある。
【0017】
(7)ソフトウェアの構造(処理コンポーネントの実行位置)が静的に決められているので、動的に変動するネットワーク環境に対して柔軟性に欠ける。
【0018】
(8)システム設計(どのホストにどの処理を実行させるかを決定する)が難しく、また柔軟性に欠けるため、後からの変更や新しい仕様の追加においても、問題が発生する可能性がある。
【0019】
なお、分散環境における負荷分散システムやモバイル環境向けのエージェントシステムでは、ネットワーク上での処理コンポーネントの動的な移動/配置を行い、システムの柔軟性を向上する従来例がある。しかし、このようなシステムにおいても、次のような問題点がある。
【0020】
(9)クライアントホスト側で実行する場合、通常、クライアントコンポーネントとサーバコンポーネントが別コンポーネントであるため、コンポーネント間通信が必要であり、そのためのオーバヘッドが問題となる。
【0021】
【発明が解決しようとする課題】
このように従来の分散システムでは、特定の処理を提供するコンポーネントの実行場所はそのシステムの開発者によって静的に決められてる。したがって、あるコンポーネントは必ずクライアントホスト側で実行され、またある別のコンポーネントは必ずサーバホスト側で実行されることになる。
【0022】
また、従来技術では、形態1、形態2、形態3と進むにつれて問題点が少なくなっているように見えるが必ずしもそうではない。つまり、ネットワークシステムでは、コンピュータ環境が動的に変化するものであり、このコンピュータ環境の動的変化と、上記コンポーネント実行場所の固定性とが相俟って処理効率の向上を容易に行えないものとなっている。
【0023】
したがって、上記いずれ形態の分散システムをとったとしても、環境の動的変化のため、常に理想的な状態で処理を行えるとは限らず、そのシステム本来の機能を発揮できない。例えば、あるサーバに非常に多くのクライアントが接続し、サーバの負荷が大きくなるために、垂直型システムから水平型又は分散ネットワークシステムに変更したとしても、分散化が進みすぎて逆にサーバが低負荷となり、ある処理はサーバ側で処理を実行するほうが、処理全体のスループットが向上するということになりかねない。
【0024】
このようなコンピュータ環境の動的な変化に対応しつつ、処理のスループットを向上させるためには、処理を行うコンポーネントの実行位置を動的に変更できる仕組みを作ることが望ましい。
【0025】
また、システムのスケーラビリティを考慮した種々のネットワークシステムの開発においても、実行位置は静的に決められているよりも動的に変化可能であることが好ましい。
【0026】
処理の実行位置を動的に決定するためには、処理を実装したプログラム(実行可能な形式にされたもの)を対象とするコンピュータ全てに予めインストールしておくことが必要である。これにより、処理の実行位置をこれらのコンピュータの中から実行時に選択して、そのコンピュータに処理を実行させることが可能でなる。フォールトトレランスや負荷分散の目的でこのような分散システムを構築することが可能である。
【0027】
しかし、全てのコンピュータに対するプログラムのインストールや保守管理は非常に大変であり、現実的ではない。
【0028】
また、処理の実行位置を処理の実行後に切り替えるものとしてモバイルエージェントと呼ばれるものがある。これは分散システム上の指定されたコンピュータを対象とし、それらを巡回しながら処理を行なうものである。具体的には、あるコンピュータで処理を行ない、その終了後に別のコンピュータに移り、同様の処理を行なう。以降、これを指定された全てのコンピュータ上で行なうよう繰り返す。このような分散システムは、主に情報収集やシステム監視などの目的で利用される。
【0029】
しかし、モバイルエージェントでは、基本的に、処理に関係するプログラムが1つのまとまりとなって、その全てが対象となるコンピュータへ移動し(配送され)、動作する。そのため、特定のコンピュータの資源を利用するような構造をモバイルエージェント自身が持つことができない。
【0030】
さらに、上述の第3の形態でも説明したJavaアプレットのように、処理プログラムを提供するサーバホストから処理を要求したクライアントホストへ処理プログラムを配信し、クライアントホスト側で実行するようなシステムもある。これにより、処理プログラムは一箇所にのみインストールすればよく、処理プログラムの保守管理やインストール作業が容易になる。
【0031】
しかし、このシステムでも、処理の実行場所は静的に決まっており、分散システムの構成(処理を分散システム内のどのコンピュータで実行するか)を柔軟に変更することができない。そのため、負荷分散などの目的には使えない。
【0032】
さらに、上記した各従来例では、モバイルエージェントを除き、基本的に、一度実行した場所を途中で変更することはできない。また、モバイルエージェントの場合は通常、一連の移動−処理が終了するまで、処理を依頼したクライアントとの接続を切断する。すなわち、常時接続されているわけではないため、処理中に何らかの指示をクライアント側から与えることが難しい。
【0033】
本発明は、このような実情を考慮してなされたもので、クライアントが要求した処理の実行位置をクライアント側にするか、サーバ側にするかを動的に変更し、システム構成を柔軟に変化させることが可能な分散システムを提供することを目的とする。
【0034】
【課題を解決するための手段】
前記課題を解決し目的を達成するために、本発明は以下に示す手段を用いている。
【0035】
(1)本発明の分散システムは、クライアントとサーバからなる分散システムにおいて、
前記クライアントは処理の要求を発するアプリケーション基本部分と、コンポーネントローダとを具備し、
前記サーバは前記アプリケーション基本部分が要求する処理を実行するサーバコンポーネントを管理する管理手段と、前記アプリケーション基本部分からの要求を受け取り、当該処理を実行するサーバコンポーネントを前記クライアント又は前記サーバのいずれで実行するかを決定する実行位置決定手段と、前記アプリケーション基本部分から要求された処理を実行するサーバコンポーネントを前記管理手段から取得し、取得した当該サーバコンポーネントを前記実行位置決定手段における決定結果に従って処理するサーバコンポーネント引渡手段とを具備し、前記サーバコンポーネントは、要求される処理を実装しているサーバコンポーネント本体と、前記サーバと通信を行うクライアント側アダプタ、前記クライアントと通信を行うサーバ側アダプタとを具備し、
前記サーバコンポーネント引渡手段は、
クライアントで実行すると決定した場合、サーバコンポーネント本体をクライアントのコンポーネントローダへ送り、コンポーネントローダにサーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成させる手段と、
サーバで実行すると決定した場合、管理手段から指定されたサーバコンポーネントのクライアント側アダプタとサーバコンポーネント本体を受け取り、サーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成し、サーバ側アダプタについてのオブジェクトを生成し、処理の要求を発したクライアントのコンポーネントローダへクライアント側アダプタを送り、コンポーネントローダにクライアント側アダプタを実行可能なスタブオブジェクトを生成させる手段とを具備し、
クライアントで実行すると決定した場合、クライアントアプリケーション基本部分にサーバコンポーネント本体を利用して処理を実行させ、
サーバで実行すると決定した場合、クライアントアプリーション基本部分にスタブオブジェクト、サーバ側アダプタを通してサーバホスト上に生成されたサーバコンポーネント本体にアクセスし処理を実行させる分散システム。
【0036】
これによれば、処理の実行位置を動的に変更し、システム構成を柔軟に変化させることができる。
【0039】
(2)本発明の分散システムは、上記(1)に記載した分散システムであって、かつ前記サーバ及び前記クライアントの負荷情報、前記サーバ及び前記クライアントの処理能力に関する情報、前記サーバ及び前記クライアントを接続するネットワークの転送速度、又は前記サーバコンポーネントのサイズ情報、又は前記サーバコンポーネントの計算量情報のうち、少なくとも1つ以上を取得し、前記実行位置決定手段に提供するネットワークモニタ手段をさらに具備し、前記実行位置決定手段は、前記ネットワークモニタ手段から提供された情報に基づいて前記サーバコンポーネントの実行位置を決定するものである。
【0040】
これによれば、クライアントからの処理要求を、処理結果が速く得られるようにサーバコンポーネントの実行位置を切り替えることができ、スループットの向上につながる。
【0041】
(4)本発明の分散システムは、上記(2)に記載した分散システムであって、かつ前記サーバは前記クライアントのユーザ情報又は前記アプリケーション基本部分の識別情報に基づき、当該アプリケーション基本部分の発する処理要求を受け付けるか否かを判定するアクセス制御監視手段を具備し、前記実行位置決定手段は、前記アクセス制御監視手段の判定結果に基づき、前記サーバコンポーネントを実行させるか否かをも決定するものである。
【0042】
これによれば、クライアントのユーザ情報やクライアントホスト情報によりサーバコンポーネントへのアクセスを制御することが可能である。
【0043】
(5)本発明の分散システムは、上記(2)に記載した分散システムであって、かつ前記サーバコンポーネントは、要求される処理を実装しているサーバコンポーネント本体と、前記サーバと通信を行うクライアント側アダプタ、前記クライアントと通信を行うサーバ側アダプタと、前記サーバコンポーネント本体と前記クライアント側アダプタとの共通のインターフェースを定義する共通インターフェースとを具備するものである。
【0044】
これによれば、サーバコンポーネント本体は1つですむので、サーバコンポーネント開発者は同一のプログラムを一度だけ実装すればよい。さらに、サーバコンポーネント本体とクライアント側アダプタが共通のインターフェースを実装しているため、クライアントから両者へ一様にアクセスすることができる。サーバコンポーネント本体をクライアントホスト側で実行する場合は、クライアントホストアプリケーション基本部分とサーバコンポーネント本体の間に通信のためのアダプタを使用しないため、処理要求におけるオーバーヘッドが無い。
【0045】
(6)本発明の分散システムは、上記(5)に記載した分散システムであって、かつ前記サーバコンポーネントは、クライアントリソースへアクセスするクライアントリソースアクセス部と、サーバリソースへアクセスするサーバリソースアクセス部と、サーバコンポーネント本体がクライアント側で実行される場合に、サーバリソースアクセス部と通信するためのサーバリソースアクセス用クライアント側アダプタ及びサーバリソースアクセス用サーバ側アダプタとをさらに具備するものである。
【0046】
これにより、処理本体は移動可能であり、かつクライアントホスト上のリソースやサーバホスト上のリソースへアクセスするような移動可能な処理コンポーネントを開発可能となる。
【0047】
(7)本発明の分散システムは、上記(5)に記載した分散システムであって、かつ前記サーバコンポーネントは、クライアントリソースへアクセスするクライアントリソースアクセス部と、サーバリソースへアクセスするサーバリソースアクセス部と、サーバコンポーネント本体がクライアント側で実行される場合に、サーバリソースアクセス部と通信するためのサーバリソースアクセス用クライアント側アダプタ及びサーバリソースアクセス用サーバ側アダプタと、サーバコンポーネント本体がサーバ側で実行される場合に、クライアントリソースアクセス部と通信するためのクライアントリソースアクセス用クライアント側アダプタ及びクライアントリソースアクセス用サーバ側アダプタとをさらに具備するものである。
【0048】
これにより、処理本体は移動可能であり、かつクライアントホスト上のリソースやサーバホスト上のリソースへアクセスするような移動可能な処理コンポーネントを開発可能となる。さらに、処理をサーバコンポーネント本体に集中させることが可能となり、サーバコンポーネントの開発が容易になる。
【0049】
(8)本発明のサーバコンポーネント生成装置は、処理の要求を発するアプリケーション基本部分を有するクライアントと、前記アプリケーション基本部分が要求する処理を実行するサーバコンポーネントを管理する管理手段と、前記アプリケーション基本部分からの要求を受け取り、当該処理を実行するサーバコンポーネントを前記クライアント又は前記サーバのいずれで実行するかを決定する実行位置決定手段と、前記アプリケーション基本部分から要求された処理を実行するサーバコンポーネントを前記管理手段から取得し、取得した当該サーバコンポーネントを前記実行位置決定手段における決定結果に従って前記クライアント又は前記サーバに引き渡すサーバコンポーネント引渡手段とを有するサーバとを具備する分散システムに用いられるサーバコンポーネントを生成するサーバコンポーネント生成装置であって、サーバコンポーネントの複数のテンプレートを提供するテンプレート提供手段と、前記サーバコンポーネントに関する情報を提供する情報提供手段と、前記テンプレートを組み合わせ、また、テンプレートに前記情報を当てはめることでサーバコンポーネントを生成するプログラム生成手段と、を具備するものである。
【0050】
(9)本発明の分散システムは、クライアントから要求される処理の実行位置を、実行前に任意のコンピュータに決定し、処理を実行するサーバコンポーネントを管理する管理手段から当該処理を実行するサーバコンポーネントを取得し、取得した当該サーバコンポーネントを決定したコンピュータに引き渡し、決定したコンピュータから処理結果を受け取り、クライアントへ引き渡すメーンサーバを具備するものである。
【0051】
(10)本発明の分散システムは、上記(9)に記載した分散システムであって、かつ前記メインサーバは、一度実行位置を決定し、決定したコンピュータで実行しているサーバコンポーネントの実行位置を他の計算機に変更するものである。
【0052】
(11)本発明のクライアントとサーバからなる分散システムを制御するプログラムを記録するコンピュータ読取り可能な記録媒体は、前記クライアントのアプリケーション基本部分が要求する処理のサーバコンポーネントを管理する管理手段と、前記アプリケーション基本部分からの要求を受け取り、前記サーバコンポーネントを前記クライアント又は前記サーバのいずれで実行するかを決定する実行位置決定手段と、前記サーバコンポーネントを前記管理手段から取得し、取得した当該サーバコンポーネントを前記実行位置決定手段における決定結果に従って前記クライアント又は前記サーバに引き渡すサーバコンポーネント引渡手段とを実行するプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0053】
(12)本発明のクライアントとサーバからなり、前記クライアント上のアプリケーション基本部分が要求する処理をクライアントで実行させるかサーバで実行させるかを動的に変更可能とする分散システムを制御するプログラムを記録するコンピュータ読取り可能な記録媒体は、前記クライアント上のアプリケーション基本部分が要求する処理をクライアント又はサーバいずれにおいても実行可能とするサーバコンポーネント手段と、このサーバコンポーネント手段をサーバで実行させる場合に、前記アプリケーション基本部分と間の通信を確保するための通信処理手段とを実行するプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0054】
【発明の実施の形態】
以下、図面を参照して本発明による分散システムの実施形態を説明する。
【0055】
(第1実施形態)
図1は本発明の第1実施形態に係る分散システムのハードウエア構成例を示すブロック図である。
【0056】
この分散システムは、クライアントホスト1とサーバホスト2とがネットワーク3を介して接続されて構成されている。クライアントホスト1とはクライアントアプリケーションプログラムが存在し、処理を行う要求を発するホストマシンを指し、サーバホスト2とはクライアントからの要求を受けて、処理を実行するホストマシンを指す。複数のホストマシンが存在する場合、クライアントホスト以外のホストマシンは全てサーバホストとなり得る。クライアントホスト1としては、パーソナルコンピュータ、ワークステーション、ネットワークコンピュータ(NC)あるいはモバイルネットワークコンピュータ(MNC)等が用いられ、サーバホスト2としては、パーソナルコンピュータ、ワークステーション、大型コンピュータ(メインフレーム)等が用いられる。
【0057】
ネットワーク3としては、高速なLANや低速な公衆回線、無線LAN等が用いられる。したがって、このネットワークシステムは、LAN,WAN,VPN(バーチャルプライベートネットワーク),インターネット等として構成される。なお、本システムでは、クライアントホスト1とサーバホスト2とは常時接続されている必要はない。
【0058】
サーバホスト2は、ハードディスク(HDD)等からなる記憶装置4と接続され、当該記憶装置4には多数の処理プログラムであるサーバコンポーネント5が格納されて、一種のデータベースをなしている。このデータベースをコンポーネントリポジトリ(Component Repository)ともいう。なお、記憶装置4は、図1に示すように、SCSI等によって直接サーバホスト2と接続されていてもよいし、記憶装置管理サーバを搭載する別ホストを介してサーバホスト2と接続されていてもよい。
【0059】
サーバコンポーネント5については後述するが、簡単にいえばクライアントホスト1が要求する処理を実行するプロセス、あるいはプロセス群である。本実施形態は、このサーバコンポーネント5における要求処理部分をサーバ側とクライアント側の何れで実行させるかを自動的に決定し、さらに、その決定に従って実際に処理を実行できる状態を作り上げることを主たる目的としている。
【0060】
次に、この分散システムにおけるシステム論理構成(ソフトウェアリソース)について説明する。
【0061】
図2は本実施形態の分散システムにおけるソフトウェア論理構成を示す図である。
【0062】
同図において、中央の破線より左側がクライアントホスト1側、右側がサーバホスト2側を示している。サーバコンポーネント5はクライアントホスト1、サーバホスト2の何れのホストマシンででも実行できるので、ここでは同図のように破線上に配置した。
【0063】
クライアントホスト1には、クライアントアプリケーション基本部分11、コンポーネントローダ12、コンポーネントキャッシュ13及びクライアントホスト1にて実行するように決定されたサーバコンポーネント5が設けられる。
【0064】
一方、サーバホスト2には、コンポーネントサーバ14、実行位置決定部15、コンポーネントマネージャ16、アクセス制御監視部17、ネットワークモニタ18及びサーバホスト2にて実行するように決定されたサーバコンポーネント5が設けられる。なお、ネットワークモニタ18は、ネットワークシステム上の他のホストに設けられる場合もあり、その場合にはサーバホスト2はネットワーク3を介して当該ネットワークモニタ18から必要な情報を得る。コンポーネントマネージャ16には記憶装置4が接続される。
【0065】
クライアントアプリケーション基本部分11からコンポーネントローダ12を介してコンポーネントサーバ14へ処理プロセスであるサーバコンポーネント5を要求する。コンポーネントサーバ14では要求されたサーバコンポーネント5をサーバホスト2、クライアントホスト1のどちらで動作させるかを決定する。
【0066】
上記各部について具体的に説明する前に、クライアントホスト1が要求する処理、及びその処理実現のためにサーバコンポーネント5がどのようになっているのかについて説明する。
【0067】
クライアントホスト1は、その使用者の要求に応じて種々の処理を実現する。多くの場合、アプリケーションプログラムは、単一の処理のみから構成されるのではなく、複数の処理からなっている。したがって、これを最も基本的な部分と、その他の各処理の部分に分けることができる。
【0068】
図3は本実施形態のアプリケーションプログラムの構成例を示す図である。
【0069】
本実施形態のシステムでは、同図(a)に示すようにアプリケーションプログラムがクライアントアプリケーション基本部分11と、サーバコンポーネント5とに分割されている。なお、サーバコンポーネント5は複数個あってもよい。
【0070】
ここで、クライアントアプリケーション基本部分11は、アプリケーションプログラムの最も基本となる部分で、アプリケーションプログラムの起動と最小限の機能、サーバコンポーネント5のリクエスト発行、サーバコンポーネント5を利用した処理結果の表示等を行う。したがって、この基本部分11は図2に示すように、クライアントホスト1に置かれる。一方、サーバコンポーネント5は、そのアプリケーションプログラムにおける実体的な処理の部分である。
【0071】
図3(b)では、具体例として、アプリケーションプログラムが画像処理ソフトウエアであったときの構成を示す。この例では、クライアントアプリケーション基本部分11は画像処理アプリケーション基本部分11aであり、サーバコンポーネント5として平滑化処理用コンポーネント5aが設けられている。
【0072】
本実施形態は、クライアント側で動作する処理プロセスと、サーバ側で動作する処理プロセスとを二重に開発することを避けるために、サーバコンポーネントの開発者は同様の処理ロジックを一度だけ実装すればよい(すなわち、同じような実装を複数箇所に分散させない)ように構成されている。また、クライアントはサーバコンポーネントの実行位置に依存すること無く、処理を実行できるようにするために、サーバ側で動作する場合とクライアント側で動作する場合とで、クライアント側から見たサーバコンポーネントのインターフェース(サーバコンポーネントへのアクセス方法、より具体的にはメソッド名、引数の型と数、返り値の型;シグネチャと呼ばれる)を一致させている。さらに、処理をサーバ側で実行する場合は、サーバコンポーネントとクライアントの間で何らかの通信手段を用いて分散オブジェクト間通信を行う必要がある。また、GUIを表示したり(基本的には常にクライアント側へ表示)、サーバ側にあるデータベースマネジメントシステムへアクセスしたりする場合、すなわち固有のホストリソースへアクセスするようなサーバコンポーネントも考えられる。また、クライアント側のアプリケーションプログラムと非同期に通信を行う可能性もある。
【0073】
このような要求を実現するために、本発明の移動可能なサーバコンポーネントは幾つかの要素に分けて構成する。
【0074】
図4は第1実施形態におけるサーバコンポーネント5の構成例を示す図である。
【0075】
同図に示すように、サーバコンポーネント5は、サーバコンポーネント本体21、クライアント側アダプタ22、サーバ側アダプタ24からなり、クライアント側アダプタ22とサーバ側アダプタ24とは分散オブジェクト間通信23により接続される。このうちサーバコンポーネント本体21及びクライアント側アダプタ22には、共通インタフェース25が実装される。また、サーバ側アダプタ24にはインターフェースが実装される場合もある。なお、サーバホスト2の記憶装置4には、上記のうち分散オブジェクト間通信23を除く各部分に対応するファイルがサーバコンポーネント5として格納されている。
【0076】
ここで、サーバコンポーネント本体21は、クライアントアプリケーション基本部分11が本来要求する処理を実行する部分であり、アプリケーションにおける実体的な処理部分である。すなわちサーバコンポーネント本体21には、そのサーバコンポーネント5が提供する処理が実装されている。処理をクライアント側で実行する場合には、この本体21がクライアント側へ送られ、実行可能な状態にされた後、クライアント側からの処理を受け付ける。この場合、コンポーネント本体21がクライアント側から直接呼出されるために、アダプタ22等を通すオーバーヘッドは存在しない。これに対し、サーバ側で処理を実行する場合は、本体21とそれに接続するサーバ側アダプタ24がサーバ側で実行可能な状態にされる。クライアントホスト1へはクライアント側アダプタ22が送られる。このクライアント側アダプタ22がクライアント側で実行可能な状態にされ、サーバ側アダプタ24との接続を行い通信の準備を行う。クライアントホスト1はクライアントアダプタ22、サーバ側アダプタ24を通してコンポーネント本体21の処理を実行させる。すなわち、両アダプタ22、24は分散オブジェクト間通信を用いて処理の呼出しをリレーするだけの部品である。このため、サーバコンポーネント本体21は1つのみでよく、クライアント側で動作する処理プロセスと、サーバ側で動作する処理プロセスとを二重に開発することを避けることができる。
【0077】
共通インタフェース25の定義はそのサーバコンポーネントに処理を実行させるためのアクセス方式(メソッド(関数)名、引数の型や数、返り値)を定義している。クライアント側アダプタ22(リモート接続用スタブ)は、サーバコンポーネント本体21へのリモートの接続を行うためのスタブである。なお、以下特に断らないが、サーバコンポーネント本体21及びクライアント側アダプタ22には、共通インタフェース25が必ず実装される。これにより、クライアントアプリケーション基本部11からは共通インタフェース定義で決められているアクセス方式に従って、直接にアクセスする相手がサーバコンポーネント本体21、又はクライアント側アダプタ22のどちらであっても、一様にアクセスすることができるようになる。このため、クライアントホストはサーバコンポーネントの実行位置に依存すること無く、処理を実行できる。
【0078】
分散オブジェクト間通信23としては、どのような技術を用いてもよい。例えば、CORBA、JavaRMI、PDO等を用いることができる。これらの実装の差異は両ホストのアダプタで吸収される。これにより、特定のオブジェクト間通信技術に依存すること無く、本システムを実装できる。また、通信の実装を変更する場合の対処も容易になる。
【0079】
図4に示す各構成は、その全てが常に使用されるのではなく、サーバコンポーネント本体21がクライアントホスト1又はサーバホスト2の何れで実行されるかにより、その組み合わせが動的に変更されるものである。
【0080】
図5はサーバコンポーネント本体21がクライアントホスト1で実行される場合と、サーバホスト2で実行される場合の構成を示す図である。
【0081】
同図(a)には、サーバコンポーネント本体21がクライアントホスト1で実行される場合を示す。この場合には、共通インターフェース25及びサーバコンポーネント本体21がクライアントホスト1内に設けられ、クライアントアプリケーション基本部分11、共通インターフェース25及びサーバコンポーネント本体21がサーバコンポーネント5を構成する。クライアントアプリケーション基本部分11は、共通インターフェース25を介してサーバコンポーネント本体21に要求を出す。
【0082】
同図(b)には、サーバコンポーネント本体21がサーバホスト2で実行される場合を示す。この場合には、共通インターフェース25が実装されているクライアント側アダプタ22、サーバ側アダプタ24及び共通インターフェース25実装のサーバコンポーネント本体21がサーバコンポーネント5を構成する。クライアント側アダプタ22とサーバ側アダプタ24とは分散オブジェクト間通信23により接続される。クライアントアプリケーション基本部分11は、各部25,22,23,24,25を介してサーバホスト2に設けられたサーバコンポーネント本体21に要求を出す。
【0083】
なお、記憶装置4に当初格納され、また、コンポーネントマネージャ16に管理されているサーバコンポーネント5の当初状態は図4に示した通りである。この当初状態のサーバコンポーネント5の各要素が記憶装置4から取り出され、図5(a),(b)に示されたようにクライアントホスト1及びサーバホスト2上で処理実行機能として構成された場合も、これらは全体としてサーバコンポーネント5である。ただし、その構成要素及び構成要素のホスト1,2での配置は状況によって異なることになる。
【0084】
さて、図2に示した各部12,13,14,15,16,17,18,4は、図5に示すような動的に変更し得るサーバコンポーネント5の実行位置,具体的にはサーバコンポーネント本体21の配置位置を決定し、図5(a)、(b)の何れかの状態を作るための処理を行うものである。なお、コンポーネントキャッシュ13はコンポーネントローダ12に、実行位置決定部15及びアクセス制御監視部17はコンポーネントサーバ14に本来含まれるものであるが、後の動作説明の都合上、図2ではこれらを独立した手段として示している。以下、これらの構成について説明する。
【0085】
図6はコンポーネントローダ12の構成例を示す図である。
【0086】
コンポーネントローダ12は、クライアントアプリケーション基本部分11から生じるサーバコンポーネント5のリクエストに応じてサーバコンポーネント本体21もしくはそれへ接続するためのクライアント側アダプタ22(リモート接続用スタブ)を受け取る。なお、以下特に断らない限りは、サーバコンポーネント本体21又はクライアント側アダプタ22には、共通インタフェース25が実装される、または既に実装されているものとする。
【0087】
このコンポーネントローダ12には、その機能を実現させるために、インスタンス生成部31、コンポーネント復号化部32、コンポーネント解凍部33及びコンポーネントキャッシュ13が設けられる。なお、コンポーネントキャッシュ13は図2に示すものと同じである。
【0088】
コンポーネントキャッシュ13は、コンポーネントサーバ14からクライアントホスト1へダウンロードされたサーバコンポーネント5を一時的に保管しておき、二重ロードの防止に使用される。
【0089】
図7はコンポーネントサーバ14の構成例を示す図である。
【0090】
コンポーネントサーバ14は、コンポーネントローダ12から要求があったサーバコンポーネント5に対し、それの実行位置を実行位置決定部15によって決定し、それに応じたサーバコンポーネント本体21もしくはクライアント側アダプタ22等を準備し、コンポーネントローダ12へ返す。また、サーバホスト2側でサーバコンポーネント本体21を実行する場合には、サーバホスト2上に必要なサーバコンポーネント本体21等を生成する。
【0091】
コンポーネントサーバ14には、その機能を実現させるために、実行位置決定部15、インスタンス生成部36、アクセス制御監視部17、コンポーネント暗号化部37及びコンポーネント圧縮部38が設けられている。なお、実行位置決定部15及びアクセス制御監視部17は図2に示すものと同じである。
【0092】
実行位置決定部15は、クライアント/サーバの両ホスト情報やネットワーク接続に関する情報、要求されたサーバコンポーネント5の情報に基づいて、そのサーバコンポーネント5をクライアント/サーバのどちらのホスト側で動作させるべきかを判断する。
【0093】
アクセス制御部17は、ユーザ認証部ともいい、要求があったサーバコンポーネント5に対して現在のクライアントホスト1(もしくはその使用者)が当該サーバコンポーネント5を使用可能かどうかを調べる。
【0094】
図8はコンポーネントマネージャ16の構成例を示す図である。
【0095】
コンポーネントマネージャ16は、記憶装置4とアクセス可能に構成され、サーバコンポーネント5やその情報について管理を行う。具体的にはサーバコンポーネント5の登録/削除、検索などである。
【0096】
コンポーネントマネージャ16には、その機能を実現させるために、コンポーネント抽出部41、コンポーネント情報抽出部42及びコンポーネント登録管理部43が設けられている。
【0097】
ネットワークモニタ18は、サーバホスト2及びクライアントホスト1の負荷情報、サーバホスト2及びクライアントホスト1の処理能力に関する情報、ネットワークの転送速度、又はサーバコンポーネント本体21のサイズ情報、又はサーバコンポーネント本体21の計算量情報を取得し、実行位置決定部15に提供する。
【0098】
次に、以上のように構成された本発明の実施の形態に係る分散システムの動作について説明する。
【0099】
(システム起動)
本分散システムでは、クライアントホスト1においてクライアントアプリケーション基本部分11の起動等をいかに行うかについては特に制限していない。例えばクライアントホスト1を起動した時点で、クライアントアプリケーション基本部分11がクライアントホスト1に既に存在していてもよく、また最初は存在せず、クライアントホスト1のユーザのリクエストによってサーバホスト2からダウンロードされアプリケーションプログラムとして起動されもよい。以下、本実施形態では既にクライアントホスト1にクライアントアプリケーション基本部分11が存在し、アプリケーションプログラムとして起動されていることとして説明を進める。
【0100】
ここでは、図3(b)に示すように画像処理アプリケーションプログラムを例に説明する。画像処理アプリケーションプログラムは図3(b)に示すような画像処理アプリケーション基本部分11aと平滑化処理用コンポーネント5aの2つに分割されているものとする。
【0101】
画像処理アプリケーション基本部分11aは画像の表示、平滑化処理用コンポーネント5aの呼び出し/利用を行う。平滑化処理用コンポーネント5aは与えられた画像データやパラメータを基に平滑化を行う。
【0102】
次に図9,図10及び図11により図2のソフトウェア構成において、いかにサーバコンポーネント5が呼び出されるかについて説明し、また、その処理の流れを図12〜図15を用いて説明する。
【0103】
図9はサーバコンポーネント5への処理要求から実行位置の決定までの処理を示す。
【0104】
図10はサーバコンポーネント5をクライアントホスト1側で実行させる場合の実行位置決定から実行までの処理を示す。
【0105】
図11はサーバコンポーネント5をサーバホスト2側で実行させる場合の実行位置決定から実行までの処理を示す。
【0106】
図12はサーバコンポーネント5への処理要求から処理実行までの処理全体を示す流れ図である。
【0107】
図13は図12におけるリモートでサーバ本体21を使用するための処理を示す流れ図である。
【0108】
図14は図12におけるコンポーネントローダ12がコンポーネントを受け取る処理を示す流れ図である。
【0109】
図15は図12におけるコンポーネントキャッシュ13に存在するコンポーネントを使用するための処理を示す流れ図である。
【0110】
(サーバコンポーネント要求から実行位置の決定まで)
この処理を図9及び図12を用いて説明する。
【0111】
(1)クライアントアプリケーションプログラムのユーザはクライアントアプリケーション基本部分11を通じて希望するサーバコンポーネント5の提供する処理の実行を命ずる(図9の信号a)。
【0112】
(2)クライアントアプリケーション基本部分11はコンポーネントローダ12に対して指定されたサーバコンポーネント5の要求を行う(図9の信号b,図12のステップST1)。
【0113】
(3)コンポーネントローダ12は要求のあったサーバコンポーネント5がコンポーネントキャッシュ13に既にロードされているかどうかを確認し(図9の信号c,図12のステップST2)、まだロードしていなければ、リモートのサーバホスト2に存在するコンポーネントサーバ14と通信を行い、指定されたサーバコンポーネント5の要求を行う(図9の信号d,図12のステップST3)。その際、クライアントホスト1のロードアベレージやメモリ残量、スワップの可否などの情報(クライアントホスト情報)を生成し、コンポーネントサーバ14へ通知する(図9の信号d’)。なお、既にロードしているサーバコンポーネント5であった場合は後述する(図12のステップST10,図15)。
【0114】
(4)コンポーネントサーバ5はサーバホスト2の情報(サーバホスト情報)や接続しているネットワークに関する情報をネットワークモニタ18から収集する(図9の信号e)。ネットワークモニタ18は、例えば回線その使用量、トラフィック等に基づくその時点でのネットワーク情報や、ネットワークカードのIDでわかる回線速度等の機器性能を調べることで上記ネットワークに関する情報を収集する。また、当該情報はシステム管理者が事前に設定したものでもよい。
【0115】
コンポーネントサーバ5は、実行位置決定部15に対して収集されたネットワーク情報を通知するとともに、指定されたサーバコンポーネント5をクライアント/サーバのどちらのホストで実行すべきかを問い合わせる(図9の信号f)。
【0116】
(5)実行位置決定部15は先ず、アクセス制御監視部17により指定されたサーバコンポーネント5について、その要求してきたクライアントホスト1(もしくはそのユーザ)によるそのサーバコンポーネント5の使用の可否や使用上の制限などがあるか否かを調べる(図9の信号g)。アクセス制御監視部17は、使用上の制限でクライアント側もしくはサーバ側での実行が強制される場合にはその旨をコンポーネントサーバ14へ通知する。この場合は、クライアントホスト1(もしくはそのユーザ)は当該サーバコンポーネント5の使用資格を有しない場合であるので、以下の処理は行われない。
【0117】
(6)次に、使用可能であった場合に、実行位置決定部15はコンポーネントサーバ14から渡された両ホストの情報、ネットワーク情報に加え、コンポーネントマネージャ16から指定されたサーバコンポーネント5に関する情報(サーバコンポーネント情報)を入手し、これらの情報を基に、指定されたサーバコンポーネント5がクライアント/サーバのどちらのホストで動作すべきかを決定する(図9の信号h,図12のステップST4)。なお、決定アルゴリズムとしては種々のものが考えられるが、その例については後述する。その後、決定した実行位置をコンポーネントサーバ14へ通知する(図9の信号i,図12のステップST5)。
【0118】
以上の処理を画像処理アプリケーションプログラムの例に適合させて説明すると、次のようになる。先ず画像処理アプリケーション基本部分11aが画像を表示している状態で、ユーザが画像処理アプリケーション基本部分11aに対して平滑化処理を命じる。すると、画像処理アプリケーション基本部分11aはコンポーネントローダ12に対して平滑化処理用コンポーネント5aの要求を行う。コンポーネントローダ12はクライアントホスト情報を入手後、コンポーネントサーバ14へ平滑化処理用コンポーネント5aを要求する。コンポーネントサーバ14はサーバホスト情報、ネットワーク情報を収集し、実行位置決定部15に対して平滑化処理用コンポーネント5aの実行位置を問い合わせる。実行位置決定部15はコンポーネントマネージャ16から、平滑化処理用コンポーネント5aのコンポーネント情報を入手後、各情報を基に実行位置を決定し、コンポーネントサーバ14へ通知する。
【0119】
次に、実行位置決定部15における実行位置の決定アルゴリズムについて説明する。
【0120】
スループット向上を目的にした場合、クライアント/サーバの両ホストの情報、ネットワークの転送速度、サーバコンポーネントに関する情報を用いて判断する。すなわち、クライアントホスト1でサーバコンポーネント本体21を実行した場合と、サーバホスト2でサーバコンポーネント本体21を実行した場合とで、それぞれで必要と考えられる処理時間を計算(予想)し、処理時間が小さくなるほうでサーバコンポーネント本体21を実行するように判断する。
【0121】
画像処理アプリケーションプログラムの例では、ユーザ要求から平滑化対象となる画像データのデータサイズ(転送量)が渡されるとすると、例えば、処理の予想時間は以下の計算式により計算することにする。
【0122】
T=hpt(hw,cp,cc)+hst(hm,cs,ds,hsc)+ntt(ds,ts) …(1)
Tは処理予想時間、関数hptはそのホストの現在の負荷hwと計算能力cp及びサーバコンポーネントの計算量ccから得られる処理時間を返す関数、関数hstはメモリ残量hm、コンポーネントサイズcs、処理データサイズds及びスワップに必要なコストhscから計算されるスワップが生じた場合のそれに要する時間を返す関数、関数nttは処理データサイズ(サーバホスト側で実行する場合;返り値も同サイズである場合は2倍にしておく)もしくはコンポーネントサイズ(クライアント側で実行する場合)ds及びネットワークの転送速度tsから計算される転送に要する時間を返す関数である。上記Tを両ホストで実行した場合を計算し、値が小さいほうで処理を実行することにする。
【0123】
この他の判断手法として、従量制ネットワークにおいて課金を最も少なくするようにデータの転送量で実行位置を判断したり、コンポーネント開発者の意志や、クライアントホストの環境による必然性などから、ある条件においては定位置で実行するなどの判断を行うことが可能である。もちろん、スループットを向上させる場合にも、他の値を用いて計算することもあると考えられる。
【0124】
(クライアント側で実行すると決定した場合の処理)
次に、サーバコンポーネント5をクライアントホスト1側で動作させることを決定した場合の一連の処理を、図10及び図12並びに図14を用いて説明する。
【0125】
(1)実行位置決定部15からの決定通知(図9の信号i)を受けたコンポーネントサーバ14は、コンポーネントマネージャ16から指定されたサーバコンポーネント本体21(実行可能なオブジェクトのデータ)を記憶装置4から受け取る(図10の信号j)。
【0126】
(2)コンポーネントサーバ14は、サーバホスト2から要求を発したコンポーネントローダ12へ、サーバコンポーネント本体21をサーバコンポーネント5として送る(図10の信号k,図12のステップST6)。
【0127】
(3)クライアントホスト1上のコンポーネントローダ12は、得られたサーバコンポーネント本体21から実行可能なサーバコンポーネントオブジェクトを生成し(図10の信号l,図12のステップST7,図14のステップST12)、クライアントアプリケーション基本部分11にそのポインタを渡す(図10の信号m,図12のステップST7,図14のステップST13)。これによりクライアントアプリケーション基本部分11は、サーバコンポーネント本体21にその処理を実行させることができるようになる。なお、サーバコンポーネント本体21には共通インターフェース25が実装されている。また、同一のサーバコンポーネントの二重ロード防止のため、コンポーネントローダ12は、受け取ったサーバコンポーネント5を、その受け取りと同時にコンポーネントキャッシュ13に保存する(図10の信号n,図12のステップST7,図14のステップST11)。
【0128】
(4)クライアントアプリケーション基本部分11は、渡されたサーバコンポーネント本体21を利用し、ユーザが指定した処理を実行する(図10の信号o,図12のステップST8)。
【0129】
以上の処理を画像処理アプリケーションプログラムの例に適合させて説明すると、以下のようになる。
【0130】
先ず、コンポーネントサーバ14が平滑処理用コンポーネント5aの本体のバイト列をコンポーネントマネージャ16を介して記憶装置4から受け取り、それをコンポーネントローダ12へ送る。コンポーネントローダ12は受け取ったバイト列を基に実行可能なオブジェクト(サーバコンポーネント21)を生成し、そのポインタを画像処理アプリケーション基本部11aへ渡す。画像処理アプリケーション基本部11aは受け取った平滑化処理用コンポーネント5aのオブジェクトの平滑化処理メソッドを呼出すことで、平滑化処理を行う。
【0131】
(サーバ側で実行すると決定した場合の処理)
次に、サーバコンポーネント5をサーバホスト2側で動作させることを決定した場合の一連の処理を、図11及び図12並びに図13,図14を用いて説明する。
【0132】
(1)実行位置決定部15からの決定通知(図9の信号i)を受けたコンポーネントサーバ14は、コンポーネントマネージャ16から指定されたサーバコンポーネント5のクライアント側アダプタ22(リモート接続用スタブ)とサーバコンポーネント本体21等を受け取る(図11の信号p)。
【0133】
(2)コンポーネントサーバ14は、サーバホスト2上でサーバコンポーネント本体21から実行可能なサーバコンポーネントオブジェクトを生成する(図11の信号q,図12のステップST9,図13のステップST21)。
【0134】
(3)コンポーネントサーバ14は、使用する分散オブジェクト間通信技術(Java,CORVA等)に応じた準備を行う(図11の信号r,図12のステップST9,図13のステップST22)。このために、サーバ側アダプタ24についてのオブジェクトを生成し、分散オブジェクト間通信が可能となる処理を行う。
【0135】
(4)次に、コンポーネントサーバ14は、サーバホスト2から要求を発したコンポーネントローダ12へクライアント側アダプタ22をサーバコンポーネント5として送る(図11の信号s,図12のステップST9,図13のステップST23)。また二重ロード防止のため、クライアントホスト1のコンポーネントローダ12は、その受け取り同時にこのサーバコンポーネント5をコンポーネントキャッシュ13に保存する(図11の信号t,図12のステップST7,図14のステップST11)。
【0136】
(5)コンポーネントローダ12は、受け取ったクライアント側アダプタ22を実行可能なスタブオブジェクトを生成する(図11の信号u,図12のステップST7,図14のステップST12)。
【0137】
(6)コンポーネントローダ12は、生成したスタブオブジェクトのポインタをクライアントアプリーション基本部分11に引き渡す(図11の信号v,図12のステップST7,図14のステップST13)。
【0138】
(7)こうしてクライアントアプリーション基本部分11は、クライアント側アダプタ22であるスタブオブジェクトを通し、サーバホスト2上に生成されたリモートのサーバコンポーネント本体21にアクセスし、処理を実行する(図11の信号w,図12のステップST8)。
【0139】
以上の処理を画像処理アプリケーションプログラムの例に適合させて説明すると、以下のようになる。
【0140】
先ず、コンポーネントサーバ14が平滑化処理用コンポーネントのスタブ22と本体21のバイト列をコンポーネントマネージャ16から受け取る。サーバホスト側で平滑化処理を行う本体21からオブジェクト21,25を生成し、リモートの呼び出しを受け付けられるよう、既存の分散オブジェクト間通信技術を用いて、サーバオブジェクトとして登録する。また、スタブ22はそのままコンポーネントローダ12へ送られる。コンポーネントローダ12は受け取ったスタブ22からオブジェクト22,25を生成する。生成されたスタブオブジェクト22,25はその生成/初期化の段階でサーバホスト上の本体21,25と接続を行う。生成されたスタブ22,25は画像処理アプリケーション基本部分11aへ渡される。画像処理アプリケーション基本部分11aはこのスタブ22,25を介して平滑化処理を行うリモートのオブジェクト5a(21,25)へアクセスし、処理を行う。
【0141】
(コンポーネントキャッシュにサーバコンポーネントがある場合の処理)
一度、クライアントホスト1側でサーバコンポーネント本体21、もしくはクライアント側アダプタ22を生成した後は、そのクライアントプロセスが終了するまで、もしくはサーバホスト2からロードしたオブジェクトを破棄するまで、そのオブジェクトは何度でも再利用することは可能である。すなわち図12のステップST2でステップST10に進む場合である。この場合は処理のたびにサーバホスト2からサーバコンポーネント5を再ロードする必要はない。
【0142】
具体的には次の手順に従う。
【0143】
(1)クライアントアプリケーション基本部分11がサーバコンポーネント5の要求をコンポーネントローダ12へ送る(図9の信号b,図12のステップST1)。
【0144】
(2)コンポーネントローダ12は指定されたサーバコンポーネント5が既にロードされているかをコンポーネントキャッシュ13に問い合わせる(図9の信号c,図12のステップST2,ST10,図15のステップST31)。
【0145】
(3)既にロードされていた場合は、その情報を基にオブジェクトを生成し(図10の信号lまたは図11の信号u,図12のステップST10,図15のステップST32)、クライアントアプリケーション基本部分11へ返す(図10の信号mまたは図11の信号v,図12のステップST10,図15のステップST33)。
【0146】
(4)クライアントアプリケーション基本部分11は返されたオブジェクトを利用して所望の処理を行う(図10の信号oまたは図11の信号w,図12のステップST8)。
【0147】
上述したように、本発明の第1の実施の形態に係る分散システムは、クライアントアプリケーション基本部分11が要求する処理を実行するサーバコンポーネント本体21と、分散オブジェクト間通信23により互いに接続されるクライアント側アダプタ22、サーバ側アダプタ24とからなるサーバコンポーネント5を設け、クライアントアプリケーション基本部分11の要求に応じて実行位置決定部15がクライアント/サーバのいずれのホストでサーバコンポーネント本体21を処理するかを判断して、その判断結果に応じたホストでサーバコンポーネント本体21による処理を実行するようにしたので、処理の実行場所を動的に切り替えることが可能になり、システムの柔軟性を向上させることができる。
【0148】
また、実行位置決定部15は、ネットワークモニタ18からのハードウエアやネットワーク状況等の情報に基づき実行位置を決定するので、クライアントホスト1からの処理要求に対し、処理結果が速く得られるようにサーバコンポーネント5の実行位置を切り替えることができる。これにより、スループットを向上させることができる。
【0149】
さらに、アクセス制御監視部17を設け、クライアントのユーザ情報やクライアントホスト情報に基づいて、要求を行うクライアントアプリケーション基本部分11に要求権限があるか否かを判断することができ、サーバコンポーネント5へのアクセスを制御することができる。
【0150】
また、要求される処理の実装はサーバコンポーネント本体21に対してのみ、すなわち1か所に行われるので、サーバコンポーネント開発者は同一の実装を2重に行なう必要が無くなる。つまり、要求処理の動的変更システムを構築する上で、サーバホスト側実行用,クライアントホスト側実行用を分けてプログラムを開発する必要をなくすことができる。
【0151】
また、サーバコンポーネント本体21とクライアント側アダプタ24が共通のインタフェース25を実装しているため、クライアントホスト1から両者に対して一様にアクセスすることができる。したがって、プログラム(プロセス)構成を簡易なものとし、その分高速化を図ることもできる。
【0152】
さらに、サーバコンポーネント本体21をクライアントホスト側で実行する場合は、クライアントアプリケーション基本部分11とサーバコンポーネント本体21の間に通信のためのアダプタが不要であるので、処理要求におけるオーバーヘッドをなくすことができる。
【0153】
なお、本実施形態では、クライアントホスト1とサーバホスト2が一つづつある場合を例にとって説明したが、サーバ側ではクラスタ,すなわちネットワーク内にサーバホストが複数存在するようなマルチサーバ環境において負荷分散や集中管理などを行うための仮想システム等を利用することで、実際には複数のホストを実行位置の対象とすることができる。
【0154】
なお、ここでサーバホストと呼んでいるのはクライアントホスト以外のホストを指している。すなわち、本実施形態の場合、クライアントアプリケーション基本部分11が存在して、処理の要求を発するホストがクライアントホスト1であり、クライアントホスト以外でその処理を実行するホストのことをサーバホスト2と呼ぶ。従って、一般に、端末として呼ばれるクライアントホストは本実施形態のクライアントホストとは必ずしも対応しない。
【0155】
なお、本実施形態では、実行位置の決定を自動で行う場合を説明したが、予め実行位置の設定をしておくことで、事実上サーバコンポーネント本体21の実行位置の設定を手動で行うこともできる。また、これらの両方を混在させることも可能である。
【0156】
なお、上記各効果は、その機能構成が重複する部分については以下の各実施形態あるいは各実施形態においても同様に奏されるものである。
【0157】
(第2実施形態)
本実施形態は第1実施形態におけるサーバコンポーネント5の構成に改良を加えるものであり、その他の部分は第1実施形態と同様である。したがって、図1〜図15と同一部分には同一符号を付してその詳細説明を省略する。
【0158】
すなわち、図4に示した第1実施形態のサーバコンポーネント5は、発明を実現するための基本的な構成である。しかし、かかる基本的なコンポーネント構成によっては、場合により必要な当該サーバコンポーネント本体21が果たすべき機能を実現できないことがある。第1実施形態では実現できないことは、ホストリソースへアクセスするコンポーネントと、クライアント側のアプリケーションプログラムと非同期に通信するコンポーネント(コンポーネントからクライアント側のアプリケーションプログラムへ通信する)である。
【0159】
ホストリソースへアクセスするサーバコンポーネント5としては次の2つがある。1つはクライアントホストのリソース(画面表示(GUI)やローカルのファイルシステム等)へアクセスするサーバコンポーネントであり、もう1つはサーバホスト2やさらにそのバックに存在するリソース(サーバ側のファイルシステムやデータベース等)へアクセスするサーバコンポーネントである。
【0160】
例えばGUIを表示するサーバコンポーネント5であれば、サーバコンポーネント本体21がサーバホスト2にあろうとクライアントホスト1にあろうと、GUIはクライアントホスト1に表示しなければならない。このような問題を解決するためには、クライアントリソースへアクセスする部分はサーバコンポーネント本体21の位置に関わらず、クライアントホスト1側へ移動させなければならない。
【0161】
また、例えばサーバホスト2側のデータベースマネンジメントシステムへ接続しているようなサーバコンポーネント5であれば、たとえサーバコンポーネント本体21がクライアントホスト1ヘ送られた場合でも、データベースマネンジメントシステムとやり取りする部分はサーバホスト2ヘ残ってデータベースマネンジメントシステムとやり取りができる状態を保たなければならない。
【0162】
このような条件を考えると上記した場合のサーバコンポーネント本体は、本来の機能実行部分(第1実施形態のサーバコンポーネント本体21)と、クライアントリソースにアクセスする部分及び/又はサーバ(もしくはそれ以降の)リソースヘアクセスする部分とに分割した構成とする必要がある。この点を考慮して本実施形態では、サーバコンポーネント5を図16に示すような構成としている。
【0163】
図16は本発明の第2実施の形態におけるサーバコンポーネント5の構成例を示す図である。
【0164】
このサーバコンポーネント5は、図4に示した構成に加えて、クライアントリソース対応部51と、サーバリソース対応部52が付加される。
【0165】
ここで、クライアントリソース対応部51は、クライアントリソースアクセス部53からなる。一方、サーバリソース対応部52は、サーバリソースアクセス用クライアント側アダプタ54と、サーバリソースアクセス用サーバ側アダプタ56と、サーバリソースアクセス部57とからなり、サーバリソースアクセス用クライアント側アダプタ54とサーバリソースアクセス用サーバ側アダプタ56とは分散オブジェクト間通信55を介して接続される。なお、サーバリソースアクセス用クライアント側アダプタ54及びサーバリソースアクセス部57にはサーバリソースアクセス部共通インタフェース58が実装される。
【0166】
クライアントリソースアクセス部53は、クライアントホスト1のリソースにアクセスするための処理を行う。サーバリソースアクセス部57は、サーバホスト2のリソースにアクセスするための処理を行う。サーバリソースアクセス用クライアント側アダプタ54及びサーバリソースアクセス用サーバ側アダプタ56は、分散オブジェクト間通信55を行うためのアダプタである。
【0167】
このように第2実施形態では、サーバコンポーネント本体5をクライアントリソースにアクセスする部分(クライアントアプリケーションへの非同期通信も含む)と、サーバリソースにアクセスする部分と、どちらでも動作可能な部分に3分割されている。
【0168】
本実施形態では、記憶装置4に格納されるサーバコンポーネント5は、図16に示すようなものとなるが、図2に示す各処理は第1実施形態の場合と同様である。図2に示す各部は、クライアントホスト側、サーバホスト側のいずれかでサーバコンポーネント本体21を実行するにあたって、本実施形態でサーバコンポーネント5に新たに付加された部分の移動やその対応するオブジェクトの発生が必要となる点でのみ異なる。
【0169】
次に、以上のように構成された本発明の実施の形態に係る分散システムの動作について説明する。
【0170】
(サーバ側で処理を行う場合)
図17はサーバコンポーネント本体21をサーバホスト2側で動作させる場合のサーバコンポーネント5の構成を示す図である。
【0171】
サーバコンポーネント本体21をサーバホスト2側で動作させる場合には、クライアントホスト1側ヘはクライアント側アダプタ22とクライアントリソースアクセス部57がコンポーネントサーバ14によって送られる。クライアントリソースアクセス部57はクライアントホスト1側でコンポーネントローダ12によりインスタンス化された後、コンポーネントローダ12からサーバコンポーネント本体21へ参照渡し(ポインタの引き渡し)される。
【0172】
サーバホスト2側ではサーバコンポーネント本体21が直接サーバリソースアクセス部57を保持し、やりとりを行うこととなる。
【0173】
なお、パフォーマンスを考慮して、クライアント側アダプタ22が直接クライアントリソースアクセス部53とやり取りする場合も考えられる。
【0174】
(クライアント側で処理を行う場合)
図18はサーバコンポーネント本体をクライアントホスト1側で動作させる場合のサーバコンポーネントの構成を示す図である。
【0175】
次に、サーバコンポーネント本体21をクライアントホスト1側で動作させる場合には、クライアントホスト1側へはサーバコンポーネント本体21とクライアントリソースアクセス部53、サーバリソースアクセス用クライアント側アダプタ54がコンポーネントサーバ14によって送られる。
【0176】
このときクライアントホスト1側で生成されたサーバコンポーネント本体21はクライアントリソースを直接所持する。また、サーバリソースアクセス部57はサーバホスト2側に残る必要がある。そのため、サーバコンポーネント本体21とサーバリソースアクセス部57の間を分散オブジェクト間通信55を行うために、図5(b)の場合におけるサーバコンポーネント5の構成と似たような構造を設ける。すなわち、図18に示すように、サーバリソースアクセス用のアダプタ54,56をサーバ側/クライアント側のホストに用意し使用する。
【0177】
サーバコンポーネント本体21からみた場合、サーバリソースアクセス用クライアント側アダプタ54とサーバリソースアクセス部57は一様の手順でアクセスできるべきであるので、それぞれはサーバリソースアクセス用の共通インタフェース58を実装することにし、サーバコンポーネント5はこれら要素をサーバリソースアクセス用共通インタフェースの型として保持することとする。
【0178】
また同様に、クライアントリソースアクセス部53はサーバコンポーネント本体21とクライアント側アダプタ22を一様にアクセスできるようにするため、これらを共通インタフェースの型として保持することにする。
【0179】
これらの所有関係は、各要素がコンポーネントローダ12やサーバコンポーネント14により、実行可能な状態にされる際の初期化によって実現される。このようにして図17又は図18に示す構成により、各ホスト1,2のリソースへアクセスするできるサーバコンポーネント5が実現される。
【0180】
上述したように、本発明の第2実施形態に係る分散システムは、第1実施形態と同様な構成に加えて、サーバコンポーネント5に、クライアントリソースアクセス部53、サーバリソースアクセス用クライアント側アダプタ54、分散オブジェクト間通信55、サーバリソースアクセス用サーバ側アダプタ56及びサーバリソースアクセス部57を設け、サーバコンポーネント本体21がクライアント/サーバいずれの側のホストにあるときでも、クライアント/サーバのリソースにアクセスできるようにしたので、第1実施形態と同様な効果が得られるとともに、アプリケーション基本部分11に依頼される形式の処理のみでなく、GUIやデータベースアクセス等、クライアント/サーバのリソースにアクセスしないと実行できないような処理もサーバコンポーネント5により実現することができる。
【0181】
なお、上記の構成においても分散オブジェクト間通信については種々の技術を適用することができる。JavaとRMIを用いる場合には分散オブジェクト間通信のサーバとなるオブジェクトはjava.rmi.Remoteを継承する必要がある。
【0182】
また、本実施形態で示したクライアントリソース対応部51、サーバリソース対応部52についてはそのコンポーネントにおいて必要な場合にのみ基本部分へ付加すればよい。これらが不要な場合はそれぞれ省略できる。
【0183】
(第3実施形態)
本実施形態は第2実施形態におけるサーバコンポーネント5の構成に改良を加えるものであり、その他の部分は第2実施形態と同様である。したがって、図1〜図18と同一部分には同一符号を付してその詳細説明を省略する。
【0184】
第2実施形態によれば、各ホスト1,2のリソースヘアクセスするようなサーバコンボーネントも実現可能となる。しかし、これを実現するためには、クライアントホスト1からサーバホスト2への参照渡し(ポインタの引き渡し)ができることが必要である。参照渡しができないような分散環境では別の手段(コンポーネント構成)を考えなければならない。そうしなければ、図17の場合にサーバコンボーネン卜本体21からクライアントリソースアクセス部53ヘメッセージを送ることができず、実現可能な処理の種類が限定される。
【0185】
本実施形態は、このような事情を考慮してサーバコンポーネント5の構成を改良したものである。
【0186】
図19は本発明の第3実施形態におけるサーバコンポーネント5の構成例を示す図である。
【0187】
このサーバコンポーネント5は、クライアントリソース対応部51の構成に変更が加えられる以外は、図16に示す第2実施形態のサーバコンポーネント5と同様に構成されている。
【0188】
ここで、クライアントリソース対応部51は、第2実施形態と同様なクライアントリソースアクセス部53と、クライアントリソースアクセス用クライアント側アダプタ61と、クライアントリソースアクセス用サーバ側アダプタ63とからなり、クライアントリソースアクセス用のクライアント側アダプタ61とサーバ側アダプタ63とは分散オブジェクト間通信62により接続される。なお、クライアントリソースアクセス用サーバ側アダプタ63及びクライアントリソースアクセス部53にはクライアントリソースアクセス部共通インタフェース64が実装される。
【0189】
クライアントリソースアクセス部53は、第2実施形態と同様にクライアントホスト1のリソースにアクセスするための処理を行う。クライアントリソースアクセス用クライアント側アダプタ61及びクライアントリソースアクセス用サーバ側アダプタ63は、分散オブジェクト間通信62を行うためのアダプタである。
【0190】
次に、以上のように構成された本発明の第3実施形態に係る分散システムの動作について説明する。
【0191】
図20はサーバコンポーネント本体をサーバホスト2側で動作させる場合のサーバコンポーネントの構成を示す図である。
【0192】
このようなサーバコンポーネント構成を生成する手続きは、第1及び第2実施形態の場合と同様である。ただし、本実施形態の場合は、クライアントリソースアクセス部53からサーバコンポーネント本体21への参照渡しは行われない。
【0193】
つまり、クライアントリソースアクセス部53はサーバコンポーネント本体21と両アダプタ61,63を介し分散環オブジェクト間通信62を介してのみ関連する。したがって、たとえクライアントリソースアクセス部53からサーバコンポーネント本体21に参照渡しができなくても、両者間の通信が実現される。
【0194】
また、サーバコンポーネント本体21をクライアントホスト1側で動作させる場合には、ホスト1,2間での参照渡しの問題は生じない。したがって、サーバコンポーネント5の構成は、第2実施形態における図18の場合と同じになる。
【0195】
上述したように、本発明の第3実施形態に係る分散システムは、第1実施形態と同様な構成に加えて、クライアントリソースアクセス用クライアント側アダプタ61、分散オブジェクト間通信62及びクライアントリソースアクセス用サーバ側アダプタ63を設けたので、第1実施形態と同様な効果が得られる他に、サーバコンポーネント本体21がサーバホスト2側にある場合に、分散オブジェクト間通信62でたとえ参照渡しができなくても、サーバコンポーネント本体21〜クライアントアクセスリソース部53間で通信を行うことができ、クライアントリソースにアクセスすることができる。したがって、サーバコンポーネント5を利用するシステムの適用範囲が一層向上する。
【0196】
このような構成にすることで、参照渡しできない場合にクライアントリソースアクセス部53に設けられるべき処理をも、サーバコンポーネント本体21に集中させることが可能になるため、サーバコンポーネント5の開発容易性が一層向上する。
【0197】
(第4実施形態)
図21(a)は、図4に示した基本的なサーバコンポーネント5を、図3(b)に示すような画像処理アプリケーションプログラムに適用した場合の例である。この例は、プログラミング言語としては仮想言語Jを用い、通信は仮想分散オブジェクト技術J RMIを用いる。
【0198】
(第5実施形態)
図21(b)は、画像処理アプリケーションプログラムに限らず一般のアプリケーションプログラムに適用した例である。第4実施形態と異なり、プログラミング言語としてはJavaを用い、通信は分散オブジェクト間通信技術Java
RMIを用いる。
【0199】
(第6実施形態)
図21(c)は、図16に示した第2実施形態の(サーバ/クライアントへのリソースアクセスを可能とした)サーバコンポーネント5に対応するものである。この例は、プログラミング言語としてはJavaを用い、通信は分散オブジェクト間通信技術Java RMIを用いる。
【0200】
(第7実施形態)
上記各実施形態では、サーバコンポーネント5を使用してサーバコンポーネント本体21の実行位置をクライアントホスト1〜サーバホスト2間で動的に変更できる分散システム並びにそのシステムで使用されるサーバコンポーネント5の構成について説明してきた。しかし、ソフトウエア開発者がサーバコンポーネント5を作成するに当たっては多数の構成要素(ファイル)を開発する必要がある。
【0201】
本実施形態では、このサーバコンポーネント5の各ファイルを自動生成することで開発者の負担を少なくする技術について説明する。ここでは、生成するサーバコンポーネント5としては、図21(b)に示す第5実施形態を例にとって説明する。なお、本実施形態においても、上記各実施形態の各図におけるものと同一な構成部分については同一符号を付し、説明を省略する。
【0202】
図21(b)の場合、サーバコンポーネント5の構成要素として、共通インターフェース25、クライアント側アダプタ22、サーバ側アダプタ24、サーバコンポーネント本体21及びRMI用インタフェース24aの5つのクラスファイルを作成し、記憶装置4に登録する必要がある。
【0203】
図22は本発明の第7実施形態に係るサーバコンポーネント自動生成システムの構成例を示すブロック図である。
【0204】
このサーバコンポーネント自動生成システムは、開発用計算機71に、情報提供部72、テンプレート提供部73、クラスファイル自動生成部74、クラスファイル部75、本体処理内容作成部76及び本体処理内容提供部77が設けられて構成されている。
【0205】
情報提供部72は、クラス名やメゾット名等のサーバコンポーネント5に関する各情報を格納し、これをクラスファイル自動生成部24に入力するようになっている。
【0206】
テンプレート提供部73は、例えば図23〜図27に示す共通インターフェース25、クライアント側アダプタ22、サーバ側アダプタ24、サーバコンポーネント本体21及びRMI用インタフェース24aの5つのクラス/インターフェースに対応するテンプレートを保持し、そのテンプレートをクラスファイル自動生成部24に提供する。なお、図23〜図27は、そのテンプレートを基に作成されたクラス/インタフェースの例である。
【0207】
図23は本実施形態におけるJavaによる共通インタフェースの一例を示す図である。
【0208】
図24は本実施形態におけるJavaによるサーバコンポーネント本体21の一例を示す図である。
【0209】
図25は本実施形態におけるJavaによるサーバ側アダプタクラスの一例を示す図である。
【0210】
図26は本実施形態におけるJavaによるサーバ側アダプタクラスのRMI用インタフェースの一例を示す図である。
【0211】
図27は本実施形態におけるJavaによるクライアント側アダプタの一例を示す図である。
【0212】
クラスファイル自動生成部74は、情報提供部72及びテンプレート提供部73からの提供情報に基づき、上記5つの各クラスファイルを生成し、クラスファイル部75に出力する。この時点で出力されるクラスファイルには、サーバコンポーネント本体21の実体的な処理内容(処理ロジック)は実装されていない。
【0213】
本体処理内容作成部76は、この実体的な処理内容,すなわち本体処理内容を作成するための処理部である。
【0214】
本体処理内容提供部77は、本体処理内容作成部76で作成された本体処理内容を、クラスファイル部75の各クラスファイルのうち、サーバコンポーネント本体21に対応するものに実装する。
【0215】
また、図示しない登録手段は、こうして作成された各クラスファイルをサーバコンポーネント5の構成要素として、記憶装置4に登録する。
【0216】
次に、以上のように構成された本発明の実施の形態に係るサーバコンポーネント自動生成システムの動作について説明する。
【0217】
先ず、図22及び図23〜図27を用いて本実施形態の概念的な動作を説明する。
【0218】
サーバコンボーネント本体21の本体処理内容を除くと他のクラス/インタフェースは単にメソッドコールをリレーしているだけであるため、サーバコンポーネント本体21以外のクラス/インタフェースは以下のようにすることで自動生成することが可能である。
【0219】
クラス名については予め定めた命名規約に従ってサーバコンボーネント本体21のクラス名から自動的に決定することができる。
【0220】
また、メソッドについては両アダプタ22,23は基本的に中継するだけの存在であるので、クライアント側アダプタ22はサーバ側アダプタ23のメソッド、サーバ側アダプタ23はサーバコンボーネント本体21のメソッドを呼出すようにする。ここで注意しなければならないことは返り値についてである。void以外で宣言されたメソッドについては,中継メソッドの結果をreturn(リターン)するように定義する必要がある。void宣言されたメソッドについては特になにもリターンする必要はない。
【0221】
なお、1つのサーバコンボーネント5が複数のメソッドを提供することは可能である。
【0222】
以上により、サーバコンボーネント5のサーバコンボーネント本体21のクラス名及びメソッドに関する情報が情報提供部72から与えられ、さらに図23〜図27に示した各リストL−1〜L−5に対応する各テンプレートがテンプレート提供部73から与えられることによって、クラスファイル自動生成部74は上記5つのクラス全てを自動生成することが可能となる。
【0223】
図22はこの概念を図で表したものでもある。例えば図23〜図27に示す例では、クラス名がFoo、メソッドは1つで、メソッド名がfooMethod、引数の型がchar、引数名がc,返り値の型がintである。
【0224】
ただし,本来の処理ロジックである本体処理内容は当然開発者がコーディングすることになる。このため、開発用計算機71には、本体処理内容作成部76が設けられている。さらに本体処理内容提供部77によってその作成された本体処理内容がサーバコンポーネント本体21のクラスファイルに実装される。
【0225】
最終的には、上記で作成したものすべてが、コンポーネントマネージャ16(ハードウエア的には記憶装置4)へ登録される。この際、必要に応じてコンポーネント情報やアクセス制御のための情報等が併せて登録される。
【0226】
次に、流れ図を用いて上記Javaを用いた場合のサーバコンポーネント5の各要素の自動生成について、より具体的に説明する。
【0227】
図23〜図27のリストは本発明の自動生成装置を通して得られる結果であり、図28、図29のリストはテンプレートと呼ばれているリストである。図23〜図27のリストは、クラス名Foo、メソッド名fooMethod等の条件を本発明の自動生成装置に入力し、それらが図28、図29のテンプレートに埋め込めれて生成される。
【0228】
図28はテンプレート提供部が提供するテンプレートに対応するリストLC−1(コンポーネント本体のクラス定義)、LC−2(コンポーネント本体のメソッド定義)、LC−3(共通インターフェースのインターフェース定義)、LC−4(共通インターフェースのメソッド定義)、LC−5(サーバ側アダプタのクラス定義)、LC−6(返り値の型が非voidの場合のサーバ側アダプタのメソッド定義)、LC−7(返り値の型がvoidの場合のサーバ側アダプタのメソッド定義)を示す図である。
【0229】
図29はテンプレート提供部が提供するテンプレートに対応するリストLC−8(サーバ側アダプタのRMIインターフェースのインターフェース定義)、LC−9(サーバ側アダプタのRMIインターフェースのメソッド定義)、LC−10(クライアント側アダプタのクラス定義)、LC−11(返り値の型が非voidの場合のクライアント側アダプタのメソッド定義)、LC−12(返り値の型がvoidの場合のクライアント側アダプタのメソッド定義)を示す図である。
【0230】
サーバコンポーネント5を生成する際に、先ず、情報提供部72によって以下に示す情報がクラスファイル自動生成部74に与えられる。
【0231】
・サーバコンポーネント名
・メソッド名
・返り値の型
・引数の型と引数名
また、クラスファイル自動生成部74は、図28及び図29に示す各クラス/インタフェースのテンプレート(スケルトンともいう)から目的のファイル作成に対応するテンプレートを呼び出す。さらに上記情報提供部72からの情報によって、テンプレート内の[ ]で囲まれた部分の情報を置きかえることで、サーバコンポーネント本体21等のクラスファイルを自動生成する。これを繰り返すことで全ファイルを生成する。以下、このクラスファイル自動生成部74による処理を図30〜図34の流れ図を用いて具体的に説明する。
【0232】
図30はクラスファイル自動生成の全体の処理流れを示す流れ図である。
【0233】
図31はサーバコンポーネント本体21のスケルトン生成を示す流れ図である。
【0234】
図32は共通インタフェースの自動生成を示す流れ図である。
【0235】
図33はサーバ側アダプタクラスの自動生成を示す流れ図である。
【0236】
図34はアダプタクラスの定義へ中継用メゾットを埋め込む処理を示す流れ図である。
【0237】
全体的な処理の流れを図30により説明すると、先ず、情報提供部72からの情報によりサーバコンポーネント名が調べられ(ステップST41)、次にサーバコンポーネント本体21のスケルトンファイルが作成される(ステップST42)。次に共通インターフェース25のファイルが作成され(ステップST43)、続けてサーバ側アダプタ用インタフェース24aのファイルが作成される(ステップST44)。そしてサーバ側アダプタクラスのファイルが作成され(ステップST45)、クライアント側アダプタクラスのファイルが作成されて(ステップST46)、これらの各ファイルがクラスファイル部75に出力される。
【0238】
また、図31に示すように、サーバコンポーネント本体21のスケルトン生成においては、先ず、図28のリストLC−1(コンポーネント本体のクラス定義)がテンプレート提供部73から呼び出されて、情報提供部72からの情報によりテンプレート[ ]部分について情報置き換えが行われる(ステップST51)。次に、図28のリストLC−2(コンポーネント本体のメソッド定義)が呼び出され、同様に情報置き換えが全メゾットについて行われる(ステップST52,ST53)。すべてのメゾットの情報置き換えが終了すればサーバコンポーネント本体21のスケルトン生成が完了する(ステップST53)。
【0239】
次に、図32に示すように、共通インタフェースの自動生成においては、先ず、図28のリストLC−3(共通インターフェースのインターフェース定義)が呼び出され、情報置き換えが行われる(ステップST61)。次に、図28のリストLC−4(共通インターフェースのメソッド定義)が呼び出され、情報置き換えが全メゾットについて行われる(ステップST62,ST63)。すべてのメゾットの情報置き換えが終了すれば共通インタフェースの自動生成が完了する(ステップST63)。
【0240】
次に、図33に示すように、サーバ側アダプタクラスの自動生成においては、先ず、図28のリストLC−5(サーバ側アダプタのクラス定義)が呼び出され、情報置き換えが行われる(ステップST71)。次に、サーバ側アダプタのメゾット定義のリスト(図28のリストLC−6(返り値の型が非voidの場合のサーバ側アダプタのメソッド定義)もしくはLC−7(返り値の型がvoidの場合のサーバ側アダプタのメソッド定義))が呼び出され、情報置き換えが全メゾットについて行われる(ステップST72,ST73)。すべてのメゾットの情報置き換えが終了すればサーバ側アダプタクラスの自動生成が完了する(ステップST73)。なお、ステップST72の処理はさらに具体的には、図34に示される。すなわち、先ず、返り値の型が情報提供部72からの情報により調べられ(ステップST81)、返り値がvoid以外の場合には図28のリストLC−6が呼び出されて情報置き換えが行われ(ステップST82)、voidの場合には図28のリストLC−7が呼び出されて情報置き換えが行われる(ステップST83)。
【0241】
以上のようにして、クラスファイル自動生成部74によるファイル生成がなされる。
【0242】
なお、クライアント側アダプタクラスの生成については、図33及び図34に示すサーバ側アダプタクラスの場合と同様であるので、説明を省略する。
【0243】
また、上記処理において、サーバコンポーネント名については、キャピタルレター形式(単語の先頭が大文字で残りが小文字、複数の単語がつながる場合は、各単語の先頭を大文字にして繋げたもの)で、メソッド名と引数名については最初が小文宇で始まるキャピタルレター形式で記述されているとする。また[サーバコンポーネント名(小文字)]とはサーバコンポーネント名を全て小文宇で表記したものである。[返り値のデフオルト値]その型の任意のデフォルトの値である。
【0244】
上述したように、本発明の第7実施形態に係るサーバコンポーネント自動生成システムは、クラスファイル自動生成部74により、テンプレート提供部73からのテンプレートを組み合わせ、また情報提供部72からの情報を当てはめてクラスファイルを生成するようにしたので、サーバコンポーント5の構成要素を自動的に生成することができる。
【0245】
したがって、たとえサーバコンポーネント5に多くの構成要素があっても、本発明を利用することで各構成要素のほどんどが自動生成され、開発者の負担が軽減される。このため開発者が実際にプログラムしなければならないのはアプリケーションプログラム要求処理の実装に関する部分(本体処理内容)のみとなる。
【0246】
(第8実施形態)
第7実施形態では、図21(b)の場合、すなわち図4に示す基本的なサーバコンポーネント5をJava RMIで構成させる場合のクラスファイル自動生成について説明した。次に、第8実施形態として、図21(c)の場合、すなわち図16に示すサーバコンポーネント5をJava RMIで構成させる場合のサーバコンポーネント5の各要素の自動生成について説明する。なお、図19に示すサーバコンポーネントについても本実施形態及び第7実施形態で示す技術を応用して各構成要素、クラスファイルの自動生成を行うことができる。
【0247】
図35は第8実施形態におけるサーバコンポーネント自動生成システムの構成例を示すブロック図であり、図22と同一部分には同一符号を付してその説明を省略する。
【0248】
この自動生成システムは、開発用計算機71Aに、情報提供部72A、テンプレート提供部73A、クラスファイル自動生成部74A、クラスファイル部75、本体処理内容作成部76及び本体処理内容提供部77が設けられて構成されている。
【0249】
情報提供部72Aは、サーバコンポーネント5機能の拡張に伴って提供する情報が増えた以外は、図22と同様に構成されている。
【0250】
テンプレート提供部73Aは、サーバコンポーネント5機能の拡張に伴って提供するテンプレート数が増えた以外は、図22と同様に構成されている。
【0251】
クラスファイル自動生成部74Aは、図22のクラスファイル自動生成部74と同様な考え方で図21(c)に示す12個のクラス/インターフェースを生成する。なお、具体的な処理は図57〜図64に示す。
【0252】
また、図36〜図47に自動生成される12個のクラス/インターフェースの一例をリストLL−1(Javaによる共通インターフェースの例)、LL−2(Javaによるサーバコンポーネント本体の例)、LL−3(Javaによるサーバ側アダプタクラスの例)、LL−4(サーバ側アダプタクラスのRMIインターフェースの例)、LL−5(クライアント側アダプタの例)、LL−6(サーバ側リソースアクセス部共通インターフェースの例)、LL−7(サーバ側リソースアクセス部の例)、LL−8(サーバ側リソースアクセス用サーバ側アダプタのRMI用インターフェースの例)、LL−9(サーバ側リソースアクセス用サーバ側アダプタの例)、LL−10(サーバ側リソースアクセス用クライアント側アダプタの例)、LL−11(クライアント側リソースアクセス部のRMI用インターフェースの例)、LL−12(クライアント側リソースアクセス部の例)として示す。
【0253】
さらに、図48〜図56にテンプレート提供部73Aが提供する各テンプレート(スケルトン)のリストC−1(コンポーネント本体のクラス定義)、C−2(C−1用クライアント側での実行用初期化メソッド)、C−3(C−2用クライアント側リソースアクセス部生成部)、C−4(C−2用サーバ側リソースアクセス部生成部)、C−5(C−1用サーバ側での実行用初期化メソッド)、C−6(C−1用クライアントリソース部設定メソッド)、C−7(C−1,C−60,C−b0用メソッド定義)、C−8(C−1用クライアント側リソースアクセス部用属性)、C−9(C−1用サーバ側リソースアクセス部用属性)、C−a(C−1用クライアントアプリケーション設定メソッド)、C−10(共通インターフェースのインターフェース定義)、C−11(C−10,C−50用のメソッド定義)、C−12(C−10,C−a0用クライアントアプリケーション設定メソッド)、C−20(サーバ側アダプタのRMI用インターフェース定義)、C−21(C−20用中継用メソッド定義)、C−22(C−20用クライアントリソースアクセス部設定メソッド)、C−30(サーバ側アダプタのクラス定義)、C−31(C−30用クライアント側リソースアクセス部設定メソッド)、C−32(返り値の型が非voidの場合のC−30,C−80用サーバ側アダプタの中継用メソッド定義)、C−33(返り値の型がvoidの場合のC−30,C−80用サーバ側アダプタの中継用メソッド定義)、C−34(C−30用サーバ初期化)、C−40(クライアント側アダプタのクラス定義)、C−41(C−40用クライアント側リソースアクセス部用属性)、C−42(C−40用クライアント側リソースアクセス部生成)、C−43(C−40用クライアント側アダプタの本体への設定部)、C−44(C−40用クライアントアプリケーション設定部)、C−45(返り値の型が非voidの場合のC−40,C−90用クライアント側アダプタの中継用メソッド定義)、C−46(返り値の型がvoidの場合のC−40,C−90用クライアント側アダプタの中継用メソッド定義)、C−50(サーバ側リソースアクセス部共通インターフェース定義)、C−60(サーバ側リソースアクセス部のクラス定義)、C−70(サーバ側リソースアクセス用サーバ側アダプタのRMIインターフェース定義)、C−80(サーバ側リソースアクセス用サーバ側アダプタのクラス定義)、C−90(サーバ側リソースアクセス用クライアント側アダプタのクラス定義)、C−a0(クライアント側リソースアクセス部のRMI用インターフェース定義)、C−a1(C−a0用クライアントアプリケーション設定メソッド)、C−b0(クライアント側リソースアクセス部のクラス定義)、C−b1(C−b0用クライアントアプリケーション用属性)、C−b2(C−b0用クライアントアプリケーション設定メソッド)を示す。なお、図57〜図64の流れ図に示されるリスト番号は、この図48〜図56のものに対応する。
【0254】
次に、この12個のクラス/インターフェースを自動生成する処理について説明する。
【0255】
サーバコンポーネント5を生成する際には、情報提供部72Aからクラスファイル自動生成部74Aへ以下に示す情報が与えられる。
【0256】
1. サーバコンポーネント名
2. サーバ側リソースへアクセスするか?
3. クライアント側リソースへアクセスするか?
4. コンポーネント本体がクライアントアプリケーションプログラムを呼出すか?
5. メソッド名(必要に応じて上記1,2,3の各部へ振り分ける)
・ 返り値の型
・ 引数の型と引数名
これらの情報を基に、以下に示す各クラス、インタフェースのテンプレート(スケルトン)の[ ]でくくられた部分を与えられた情報に置きかえたり、オプション部を付加したりすることによって、それぞれが自動生成される。なお、サーバコンポーネント名については、キャピタルレター形式で、メソッド名と引数名については最初が小文字で始まるキャピタルレター形式で記述されていることとする。また[サーバコンポーネント名(小文字)]とはサーバコンポーネント名を全て小文字で表記したものである。[返り値のデフォルト値]はその型の任意のデフォルトの値である。
【0257】
具体的にはクラスファイル自動生成部74Aの処理を示す図57〜図64の流れ図に従う。
【0258】
なお、これらの流れ図のうち、サーバ側アダプタのRMI用インタフェースとクライアント側リソースアクセス部のRMI用インタフェースは共通インタフェースに、サーバ側リソースアクセス部とサーバ側リソースアクセス用サーバ側アダプタのRMIインタフェースはサーバ側リソースアクセス共通インタフェースに、サーバ側リソースアクセス用サーバ側アダプタとクライアント側リソースアクセス部はサーバ側アダプタに、サーバ側リソースアクセス用クライアント側アダプタはクライアント側アダプタに類似している(条件の違いや挿入リスト、挿入箇所は前述もしくは後述の通り)ので、これらの流れ図は省略する。
【0259】
また、クライアント側アダプタクラス、サーバ側リソースアクセス部の各クラス/インタフェース、クライアント側リソースアクセス部のクラス/インタフェースについては、サーバ側アダプタクラスの流れ図と類似しているので、省略する。また各流れ図中の分岐におけるQ1,Q2,Q3はそれぞれ以下のことを意味する。
【0260】
Q1:サーバ側リソースヘアクセスするか?
Q2:クライアント側リソースヘアクセスするか?
Q3:コンポーネント本体がクライアントアプリケーションプログラムを呼出すか?
以下、各構成要素の生成について具体的に説明する。
【0261】
先ず、サーバコンポーネント本体21のソースでは先ず、リストC−1(図48)が用意される。次にいずれかのオプション設定がある場合 (上記2,3,4)、リストC−2(図48)がリストC−1(図48)の該当場所へ挿入される。挿入場所の記述は、“//<<リストC−n>>”と書かれてある場所でこの場合、その場所にリストC−nを挿入する。次に上記3(クライアント側リソースへアクセスする)または上記4(コンポーネント本体がクライアントアプリケーションプログラムを呼出す)の場合、リストC−3(図48)をリストC−2(図48)へ、リストリストC−6(図49)とリストC−8(図49)をリストC−1(図48)へ挿入する。上記2(サーバ側リソースヘアクセスする)の場合、リストC−4(図48)をリストC−2(図48)へ、リストC−5(図49)とリストC−9(図49)をリストC−1(図48)へ挿入する。さらに上記4の場合にはリストC−a(図49)をリストC−1(図48)へ挿入する。あとは必要な分だけ(サーバコンポーネント本体21が提供するメソッドの数だけ)リストC−7(図49)をリストC−1(図48)へ挿入する。
【0262】
次に、共通インタフェース25のソースは先ず、リストC−10(図50)が用意される。次にリストC−11(図50)を必要な分だけ挿入する。上記4の場合はリストC−1(図48)2をリストC−10(図50)へ挿入する。
【0263】
次に、サーバ側アダプタ24のRMI用インタフェース24aは先ず、リストC−20(図50)が用意される。次に必要な数だけリストC−21(図50)をリストC−20(図50)へ挿入する。また、上記3または4の場合、リストC−20(図50)にリストC−22(図50)を挿入する。
【0264】
次に、サーバ側アダプタ24のソースは先ず、リストC−30(図51)が用意される。次に上記3及び4の場合、リストC−31(図51)とリストC−34(図51)をリストC−30(図51)へ挿入する。あとは、必要な分だけリストC−32(図51)もしくはリストC−33(図51)をリストC−30(図51)へ挿入する。
【0265】
次に、クライアント側アダプタ22のソースは先ず、リストC−40(図52)を用意する。上記3及び4の場合、リストC−41(図52)とリストC−42(図52)、リストC−43(図53)をリストC−40(図52)へ挿入する。また上記4の場合はリストC−44(図53)をリストC−40(図52)へ挿入する。あとは必要な数だけリストC−45(図53)もしくはリストC−46(図53)を挿入する。
【0266】
次に、サーバ側リソースアクセス部共通インタフェース58のソースは上記2の場合に作成する。先ずリストC−50(図54)を用意する。次に必要な数だけリストC−11(図50)をC−50(図54)に挿入する。
【0267】
次に、サーバ側リソースアクセス部57のソースは上記2の場合に作成する。先ずリストリストC−60(図54)を用意する。次に必要な数だけリストC−7(図49)をリストC−60(図54)に挿入する。
【0268】
次に、サーバ側リソースアクセス用サーバ側アダプタ56のRMIインタフェース56aのソースは上記2の場合に作成する。先ずリストC−70(図54)を用意する。次に必要な数だけリストC−21(図50)をリストC−70(図54)に挿入する。
【0269】
次に、サーバ側リソースアクセス用サーバ側アダプタ56のソースは上記2の場合に作成する。またリストC−80(図54)を用意する。次に必要な数だけリストC−32、C−33(図51)をリストC−80(図54)に挿入する。
【0270】
次に、サーバ側リソースアクセス用クライアント側アダプタ54のソースは上記2の場合に作成する。先ずリストC−90(図55)を用意する。次に必要な数だけリストC−45、C−46(図53)をリストC−90(図55)に挿入する。
【0271】
次に、クライアント側リソースアクセス部53のRMI用インタフェース53aのソースは上記3もしくは4の場合に作成する。先ずリストC−a0(図55)を用意する。次に必要な数だけリストC−21(図50)をリストC−a0(図55)へ挿入する。上記4の場合はリストC−a1(図55)をリストC−a0(図55)へ挿入する。
【0272】
次に、クライアント側リソースアクセス部53のソースは上記3もしくは4の場合に作成する。先ずリストC−b0(図56)を用意する。次に必要な数だけリストC−32(図51)をリストC−b0(図56)へ挿入する。上記4の場合はリストC−b1,C−b2(図56)をリストC−a0(図55)へ挿入する。
【0273】
以上により、生成された各クラス/インタフェースにおいて、コンポーネント開発者はリストC−7(図49)が挿入された部分を本体内容提供部77により実装することでサーバコンポーネント5を開発することができる。
【0274】
また、本実施形態での記述はJava言語を対象としたが、分散オブジェクト間通信にCORBAを用いたり、言語としてC++を使用した場合でも少ない変更で対処することが可能である。
【0275】
(第9実施形態)
上記した実施形態によれば、Javaアプレットでは処理の実行位置は必ずクライアント側であるという静的なシステム構造であったものを、実行時に処理の実行位置をサーバ側にするか、クライアント側にするかを決定できるような動的なシステム構造を持つことのできる分散システムが構築可能である。しかし、上記した実施形態では、サーバコンポーネントを提供するサーバとなるコンピュータは1つであり、クライアントとなるコンピュータとサーバとなるコンピュータ以外のネットワーク内の他のコンピュータを処理を実行する場所(サーバ)として用いることはできない。そこで、サーバ処理の実装をネットワーク内の任意のコンピュータで動作させることができる実施形態を次に説明する。
【0276】
本実施形態では、サーバコンポーネントの保守管理やインストール作業の軽減の観点から、サーバコンポーネントを扱うのは1つのサーバホストとなるコンピュータにする。
【0277】
他のコンピュータ(サブサーバホストと呼ぶ)上で実行する場合にはこのサーバホストからサーバコンポーネントを配送し実行する。そのため、サブサーバホストではサーバホストから送られてくる処理コンポーネントを受け取り実行可能な状態にし、その他必要な準備を行なう。
【0278】
配送されるサーバコンポーネントは特定のコンピュータ資源でもアクセスできるように、サーバコンポーネントを基本部、クライアント側リソースアクセス部、サーバ側リソースアクセス部から構成する。
【0279】
また実行場所を決定し、そこへサーバコンポーネントを配信し、処理を行なった後、さらにそこから実行場所を変更可能とするため、実行位置指示部やクライアント側アプリケーションプログラムのコールバック用インタフェースを設ける。
【0280】
図65はこのような原理に基づく第9実施形態の分散システムの構成(ハードウェア構成、及びソフトウェアリソース)を示す。
【0281】
本システムは、クライアントホスト150とメインサーバホスト120、サブサーバホスト130とがネットワークを介して接続されて構成されている。
【0282】
メインサーバホスト120はサーバコンポーネント110と接続される。サーバコンポーネント110は図4に示すような基本部分111と、図6、図19等に示すクライアント側リソースアクセス部112とサーバ側リソースアクセス部113と、サーバコンポーネント情報114とからなる。
【0283】
クライアントホスト150は、クライアント用コンポーネントローダ152、コールバック用インターフェース151とからなり、入力装置180、ディスプレイ190が接続される。
【0284】
メインサーバホスト120は、コンポーネントマネージャ121、コンポーネントサーバ122、実行位置決定部123とからなり、コンポーネントサーバ122はクライアント用コンポーネントローダ152、コールバック用インターフェース151に接続される。
【0285】
サブサーバホスト103は、サブサーバ用コンポーネントローダ131を有し、サブサーバ用コンポーネントローダ131はコンポーネントサーバ122に接続される。
【0286】
入力装置170、ディスプレイ160が接続される実行位置指示部140が実行位置決定部123に接続される。
【0287】
アプリケーションユーザは入力装置180とディスプレイ190を介してクライアントホスト150を操作する。クライアントホスト150はユーザの要求に応じた処理を行なうサーバコンポーネント110をメインサーバホスト120に対して要求する。具体的には、クライアントホスト150内のクライアント用コンポーネントローダ152を介してメインサーバホスト120内のコンポーネントサーバ122に対してサーバコンポーネント110の要求を行なう。その際、コンポーネントサーバ122に対してコールバック用インタフェース118を渡しておく。
【0288】
コンポーネントサーバ122はコンポーネントマネージャ121に指定されたサーバコンポーネント110を要求し、それを受け取る。また、コンポーネントサーバ122は指定されたサーバコンポーネント110を実行するコンピュータを実行位置決定部123を用いて決定する。
【0289】
メインサーバホスト120でサーバコンポーネント110を実行する場合は、サーバコンポーネント110の基本部112をコンポーネントサーバ122が実行可能な状態に(インスタンス生成)し、初期化等の準備を行なう。
【0290】
サブサーバホスト103でサーバコンポーネント110を実行する場合は、コンポーネントサーバ122はサーバコンポーネント110の基本部112をサブサーバ用コンポーネントローダ131に配送する。サブサーバ用コンポーネントローダ131は必要なクラスをコンポーネントサーバ122から受け取り、それをインスタンス生成し、初期化等の準備を行なう。
【0291】
クライアントホスト150側でサーバコンポーネント110を実行する場合は、コンポーネントサーバ122はサーバコンポーネント110の基本部112をクライアントホスト150のクライアント用コンポーネントローダ152に配送する。クライアント用コンポーネントローダ152は必要なクラスをコンポーネントサーバ122から受け取りそれをインスタンス生成し、初期化等の準備を行なう。
【0292】
クライアントホスト150は上記のいづれかの場合でインスタンス生成されたサーバコンポーネント110の基本部112に対してネットワーク経由もしくはインプロセスで接続し、それを利用し処理を実行する。
【0293】
なお、サーバコンポーネント110がクライアント側リソースアクセス部112を有する場合は、コンポーネントサーバ122がこれをクライアントホスト150のクライアント用コンポーネントローダ152に配送する。クライアント用コンポーネントローダ152はそれをインスタンス生成し、サーバコンポーネント110の基本部112に設定する。サーバコンポーネント110がサーバ側リソースアクセス部113を有する場合は、サーバコンポーネント情報114に記載される「サーバ側リソースアクセス部113を実行するコンピュータ」上のサブサーバホスト103のサブサーバ用コンポーネントローダ131にサーバ側リソースアクセス部113を配送する。サブサーバ用コンポーネントローダ131はそれをインスタンス生成し、サーバコンポーネント110の基本部112に設定する。サーバ側リソースアクセス部113をメインサーバホスト120で動作させる場合はコンポーネントサーバ122がインスタンス生成し、サーバコンポーネント110の基本部112に設定する。
【0294】
実行位置の決定(指示)についてはシステム管理者が入力装置170、ディスプレイ160を介して実行位置指示部140に指示する。実行位置指示部140は実行位置決定部123に対してシステム管理者の指示を伝達する。実行位置決定部123は以後の実行位置判定においてこの情報を基に実行位置を判定する。また、実行位置決定部123はコンポーネントサーバ122から依頼された実行位置を決定後、その内容を実行位置指示部140にも伝える。この情報を基に、実行位置指示部140はディスプレイ160に現在実行中のサーバコンポーネント110とその実行位置とを表示する。
【0295】
システム管理者はこの情報を基に、現在実行中のコンポーネントに対して、入力装置170を介して次の実行位置を指定することもできる。システム管理者が指示した「次の実行場所」の情報が実行位置指示部140から実行位置決定部123へ伝わると、実行位置決定部123はさらにコンポーネントサーバ122にその内容を伝え、サーバコンポーネント110の再配置を行なう処理を行なう。具体的には現在実行中のサーバコンポーネント110を一旦終了し、新たに指示された場所にサーバコンポーネント110を配送し、インスタンス生成等を行なう。そして、コンポーネントサーバ122はサーバコンポーネント110の再配置があったことをコールバック用インタフェース118を用いてクライアントホスト150に伝え、新しい場所を指示する。クライアントホスト150はその情報を基に新たなサーバコンポーネント110に対して再接続等の初期化処理を行なう。
【0296】
このような第9実施形態によれば、上に述べた実施形態の効果に加えて、サーバ処理の実装をネットワーク内の任意のコンピュータで動作させることができるとともに、サーバ処理の実装において、特定のコンピュータ上での動作も可能にすることができる効果を有する。
【0297】
(第10実施形態)
図66は本発明の分散システムの第10実施形態の物理構成を示すブロック図、図67は第10実施形態の論理構成を示すブロック図である。ここでは、デーベースへアクセスし、簡単な処理を行なうアプリケーションプログラムを例として示してある。
【0298】
図66に示すように、第10実施形態の分散システムにおいては、ネットワーク310に接続されたメインサーバマシン330にメインサーバホスト120が、サブサーバマシン(B)350にサブサーバホスト230が、サブサーバマシン(B)350にサブサーバホスト230とデータベース400が、管理者用マシン320に実行位置指示部240が、クライアントマシン360にデータベースアクセス用クライアントホスト250がそれぞれインストールされている。ここで、インストールの意味は、プログラムを計算機に組み込み、実行するための準備をすることである。
【0299】
図67に示すように、分散システムはデータベースアクセス用サーバコンポーネント210、メインサーバホスト220、サブサーバホスト230、実行位置指示部240、データベースアクセス用クライアントホスト250、データベース400から構成される。さらにサーバコンポーネント210はデータベース(DB)アクセス基本部211とクライアント側リソースアクセス部212、サーバ側リソースアクセス部213、サーバコンポーネント情報214から構成され、クライアント側リソースアクセス部212はさらにGUI212aを含む。なお、クライアント側リソースアクセス部212とサーバ側リソースアクセス部213は必ず設ける必要は無く、省略可能な場合もある。
【0300】
サーバコンポーネント情報214の一例を図68に示す。ここでは、コンポーネント名、サーバ側リソースアクセス部の実行場所、クライアント側リソースアクセス部の有無がサーバコンポーネント情報214となっている。
【0301】
メインサーバホスト220はコンポーネントマネージャ221、コンポーネントサーバ222、実行位置決定部223から構成される。
【0302】
サブサーバホスト230はサブサーバ用コンポーネントローダ231を含む。
【0303】
実行位置表示部240はGUI241を含む。
【0304】
データベースアクセス用クライアントホスト250はクライアント用コンポーネントローダ252、コールバック用インタフェース253、GUI250から構成される。
【0305】
このように構成される本実施形態の分散システムの動作として、サーバコンポーネント210の実行位置の決定、配置、実行並びに、実行後の再配置について、図67に示すデータベースアクセスアプリケーションプログラムの実行順に合わせて説明する。なお、ここで例としてあげるデータベースアクセスアプリケーションプログラムは図69に示すような簡単な売り上げ管理データベースへアクセスして、ある特定の購入者の合計購入金額を表示するようなアプリケーションプログラムとする。
【0306】
このアプリケーションプログラムのクライアントホスト250のGUI253を図70に示す。
【0307】
図71は、本実施形態におけるサーバコンポーネント210の実行位置の決定、配置、実行、再配置の一連の流れを示す。実行位置決定は、アプリケーションプログラムのユーザがデータベースアクセスを行なうため、クライアントホスト250からメインサーバホスト220に対してサーバコンポーネント210を要求し、それに対して実行位置決定部223が実行位置を判定することである。配置は、決定した実行位置に応じたサーバコンポーネント210の配送、インスタンス生成、準備からクライアントホスト250との接続処理である。実行は、実際のデータベースアクセス処理である。再配置は、管理者によるサーバコンポーネント210の実行後の再配置である。なお、このデータベースアクセスアプリケーションプログラムはあくまで説明の便宜上のものであり、本発明はどのようなアプリケーションプログラムにも適用可能である。
【0308】
(1)[実行位置決定]サーバコンポーネント210の要求までの流れ
データベースアプリケーションプログラムのユーザは、先ず検索したい購入者の名前を購入者名入力部610に入力する(ステップST102)。次に検索ボタン506を押す(ステップST104)。クライアントホスト250は既にサーバコンポーネント210を使える状態にあるかどうかを調べる(ステップST106)。もし既に使える状態であれば、それを利用して検索等の処理を行ない(ステップST114)、結果を表示する(ステップST16)。
【0309】
そうでなければ、クライアントホスト250はコンポーネントサーバ222へサーバコンポーネント210の要求を行なう(ステップST108)。コンポーネントサーバ222は実行位置決定部223に依頼し、クライアントホスト250がコンポーネントサーバ220へ要求したサーバコンポーネント210の実行位置を決定する(ステップST110)。
【0310】
(2)[配置]実行位置決定後からサーバコンポーネント210が使用可能になるまでの流れ
実行位置決定後からサーバコンポーネント210が使用可能になるまでの一連の流れを図72を参照して説明する。また、この処理の時にサーバコンポーネント210が有するサーバコンポーネント情報214の一例を図73に示す。サーバコンポーネント情報214は、コンポーネント名としてはサーバコンポーネント210、サーバ側リソースアクセス部の実行場所としてはサブサーバマシン(B)350、クライアント側リソースアクセス部の有無としては有りが格納される。
【0311】
コンポーネントサーバ222は要求されたサーバコンポーネント210の実行位置を決定するために、先ずコンポーネントマネージャ221を介してサーバコンポーネント210のサーバコンポーネント情報214を参照し、DBアクセス基本部211を動作させるコンピュータが指定されているかどうかを調査する。この情報はオプションであり、無い場合もある。本実施形態では特に指定していない。
【0312】
次に、実行位置決定部223に実行位置を尋ねる。本実施形態ではサブサーバマシン(A)340であるとする。なお、サーバコンポーネント情報214にサーバコンポーネント基本部(データベースアクセス基本部211)の実行位置が指定されている場合で、実行位置決定部223の決定結果と指定場所が異なる場合、どちらを実行場所とするかはそのシステムが任意に決定できる。例えば、サーバコンポーネント情報214の情報を優先することにするように設定できる。
【0313】
図72では、サーバコンポーネント210の実行位置の判定(ステップST120)の結果、すなわちDBアクセス基本部211の実行位置はサブサーバホスト230となったとするので、コンポーネントサーバ222はコンポーネントマネージャ221からDBアクセス基本部211を受け取り、それをサブサーバマシン(A)340のサブサーバ用コンポーネントローダ231に配送する(ステップST128)。サブサーバ用コンポーネントローダ231は受け取ったDBアクセス基本部211をインスタンス生成し、初期化(初期値の設定やクライアントホスト250からの接続を受けるための準備)を行なう(ステップST130)。そして、コンポーネントサーバ222はクライアント用コンポーネントローダ252に対して、要求されたサーバコンポーネント210をサブサーバマシン(A)340で動作させたことを通知する。クライアントホスト250はその情報を基にサブサーバマシン(A)340で動作しているDBアクセス基本部211に対して接続を行なう。
【0314】
サーバコンポーネント情報214より、サーバコンポーネント210はクライアント側リソースアクセス部212を持っていることがわかるので(ステップST132)、コンポーネントサーバ222はクライアント側リソースアクセス部212をクライアントホスト250のクライアント用コンポーネントローダ252に送る(ステップST134)。クライアント用コンポーネントローダ252は受け取ったクライアント側リソースアクセス部212をインスタンス生成し、初期化を行なう(ステップST136)。そしてそれをサブサーバマシン(A)340で実行しているDBアクセス基本部211に設定する(ステップST138)。
【0315】
同じく、サーバコンポーネント情報214より“サーバ側リソースアクセス部213の実行場所”が指定されていることから、サーバコンポーネント210はサーバ側リソースアクセス部213も持っていることがわかるので(ステップST140)、コンポーネントサーバ222はサーバ側リソースアクセス部213を動作させるべきコンピュータをサーバコンポーネント情報214から調べる(ステップST142)。なお、“サーバ側リソースアクセス部213の実行場所”が指定されていない場合は、そのサーバコンポーネント210はサーバ側リソースアクセス部213を持たないことを示す。この例では、サブサーバホスト230で動作させるので、コンポーネントサーバ222はサーバ側リソースアクセス部213をサブサーバホスト230のサブサーバホスト230のサブサーバ用コンポーネントローダ231へ送る(ステップST146)。サーバ側リソースアクセス部213を受け取ったサブサーバ用コンポーネントローダ231はそれをインスタンス生成し、初期化を行なう(ステップST148)。そしてそれをサブサーバマシン(A)340で実行しているDBアクセス基本部211に設定する。
【0316】
以上の一連の流れにより、本実施形態のデータベースアクセスに必要なシステム構成(クライアント−サーバ間の関係)が全て成立する。
【0317】
(3)[実行]実際のデータベースアクセス処理の流れ
本発明とは直接関係しないが、本実施形態のデータベースアクセスについて、図74を参照して説明する。
【0318】
クライアントホスト250は購入者名入力部に入力された購入者名をDBアクセス基本部211へ送る(ステップST160)。DBアクセス基本部211はサーバ側リソースアクセス部213に購入者名を渡し、データベースにアクセスするよう命ずる(ステップST162)。サーバ側リソースアクセス部213は渡された購入者名を含むデータをデータベースから得、その結果をDBアクセス基本部211へ返す(ステップST164)。DBアクセス基本部211ではその結果の値段の値を合計する。そしてその値をクライアントホスト250へ返す(ステップST166)。結果を受け取ったクライアントホスト250はGUIの合計購入金額表示部にその結果を表示する(ステップST168)。
【0319】
(4)[再配置]管理者によるサーバコンポーネント210の実行後の再配置コンポーネントサーバ222はDBアクセス基本部211をインスタンス化もしくは他のコンポーネントローダへ配信する際に、該当するサーバコンポーネント210(DBアクセス基本部211)とそれを実行した場所を実行位置決定部223に知らせる。実行位置決定部223はこのような情報をリストとして保持し、必要に応じて実行位置指示部240に伝え、GUIを用いて表示する。本実施形態におけるGUIを図75に示す。
【0320】
この動作を図76に示すフローチャートを参照して説明する。
【0321】
GUIは図75に示すように実行位置決定部223が保持している現在実行中のサーバコンポーネント210に関する情報を表示するため、サーバコンポーネント名表示部と現在の実行場所表示部、再配置場所指定部、再配置実行ボタン、終了ボタンを有している。サーバコンポーネント名表示部と再配置場所指定部はそれぞれプルダウンメニューのようになっており、各部の右側のボタンを押すと選択可能な候補のリストが表示され、システム管理者はこの表示の中から選ぶことになる。サーバコンポーネント名表示部でサーバコンポーネント210を指定すると現在の実行場所表示部に選択されたサーバコンポーネント210が動作している場所が表示される(ステップST170)。この情報は実行位置決定部223が保持している。
【0322】
次にシステム管理者がGUIの再配置場所指定部にて再配置先としてメインサーバホスト220マシンを指定する(ステップST172)。なお再配置場所として選択可能な項目に関するデータは実行位置決定部223が保存しており、この実施形態の場合はメインサーバマシン330、サブサーバマシン(A)340、サブサーバマシン(B)230、クライアントマシン360が選択対象となる。これらのデータはシステム起動時にメインサーバホスト220やサブサーバホスト230、クライアントホスト250の間のやりとりによって収集される。例えば、メインサーバホスト220は起動した際に、ネットワーク内に存在するサブサーバホスト230を探して、見つかったものを実行位置決定部223に知らせる。サブサーバホスト230は起動した際にメインサーバホスト220に連絡し、コンポーネントを介して実行位置決定部223に知らせる。クライアントホスト250はサーバコンポーネント210をメインサーバホスト220に要求する際にコンポーネントサーバ222を介して実行位置決定部223に知らせる。
【0323】
そしてシステム管理者が再配置ボタンを押すと指定したサーバコンポーネント210と再配置先(メインサーバホスト220)の情報が実行位置指定部から実行位置決定部223へ送られる(ステップST174)。実行位置決定部223はその内容をコンポーネントサーバ222に伝え(ステップST176)、再配置処理を開始する(ステップST178)。
【0324】
システム管理者がサーバコンポーネント210をサブサーバマシン(A)340からメインサーバマシン330へ再配置する例を図77に示す。基本的には上記(2)の「実行位置決定後からサーバコンポーネント210が使用可能になるまで」とほとんど同じ処理となるので、ここでは簡単に説明する。
【0325】
再配置先がメインマシンであるのでDBアクセス基本部211をコンポーネントサーバ222がインスタンス生成し、初期化等を行なう(ステップST204)。再配置が発生したことをクライアントホスト250へ伝え、これまで動作させていたサーバコンポーネント210を破棄する(ステップST212)。破棄する対象が他のサブサーバホスト230やクライアントである場合はそれを破棄するように伝達し、伝達された側が破棄を行なう。
【0326】
サーバコンポーネント210はクライアント側リソースアクセス部212を持つのでその準備を行なう(ステップST214〜ST220)。また、同じくサーバコンポーネント210はサーバ側リソースアクセス部213を持つので、その準備を行なう(ステップST222〜ST232)。
【0327】
以上により再配置が終了する。
【0328】
再配置終了後は継続して上記(3)に示したデータベースアクセス処理を継続できる。
【0329】
第10実施形態によれば、上に述べた実施形態の効果に加えて、実行後のサーバ処理の実行位置を変更(再配置)することができる。
【0330】
本発明は、上述した各実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々に変形することが可能である。例えば、実施形態に記載した手法は、コンピュータに実行させることができるプログラム(ソフトウエア手段)として、例えば磁気ディスク(フロッピーディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記録媒体に格納し、また通信媒体により伝送して頒布することもできる。なお、媒体側に格納されるプログラムには、コンピュータに実行させるソフトウエア手段(実行プログラムのみならずテーブルやデータ構造も含む)をコンピュータ内に構成させる設定プログラムをも含むものである。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、また場合により設定プログラムによりソフトウエア手段を構築し、このソフトウエア手段によって動作が制御されることにより上述した処理を実行する。
【0331】
【実施例】
次に、本発明の分散システムの具体例を実施例として次に説明する。
【0332】
(第1実施例)
本発明の分散システムは、画像処理アプリケーションプログラムに応用することができる。
【0333】
画像処理アプリケーションプログラムにおいては、処理を行うためのデータ転送量(引数や返り値)は大きいが、処理自体は単純な繰り返しが多いため、サーバコンポーネント本体のサイズが小さくできる場合が多い。したがって、画像処理アプリケーションプログラムでは、クライアント/サーバの両ホストの計算能力やネットワークの状態によって、より速く処理結果が得られるような実行位置が変わってくるからである。したがって、本システムを画像処理アプリケーションプログラムに適用すればスループットが向上する。
【0334】
サーバコンポーネントへの具体的な適用例としては、実施例で示したように画像の平滑化処理がある。
【0335】
(第2実施例)
本発明の分散システムは、モバイル環境でのコンポーネントビジネスへ利用することができる。
【0336】
コンポーネントの流通においてネットワークの利用は最も有効な手段の一つであると考えられる。本分散システムをインフラとして用いた場合には、有効なコンポーネント販売システムを構築できる。
【0337】
このような利用形態の場合はどちらかといえば、LANのような常時接続されたネットワーク環境よりも、むしろモバイル環境や公衆回線を通した一般家庭のインターネット接続などが対象となりやすいと考えられる。
【0338】
ユーザ(クライアントホスト1側)はコンポーネントを提供するコンポーネントプロバイダに接続し、必要なコンポーネントの購入を行なう。その際、「試しに試用してから、購入を考えたい」というユーザに対しては、サーバコンポーネント本体をサーバホスト2側でのみ動作させるようにする。必要に応じて、使用回数や使用時間などについて制限を設ける。その制限機構は、例えばクライアント側アダプタ22に設けておけばよい。そして、購入することになったユーザに対してはサーバコンポーネント本体をクライアントホスト1側ヘダウンロードし、クライアントホスト1側のローカルのディスクへ保存できるようにする。
【0339】
コンポーネント開発者はサーバコンポーネントを、どちらの状況で利用されるかを意識せずに開発できるため、上述した自動生成技術と相俟って、上記のような使い方をしてもコンポーネント開発者へかかる負担は従来のコンポーネント開発と変わらない。
【0340】
また、このような利用の場合には、サーバコンポーネント本体に相当するものは処理プロセスだけでなく、各種データなどの場合も考えられる。例えば、戦略シミュレーションゲームにおける新しいマップコンポーネントの提供や、ニュースコンポーネント(ヘッドラインはクライアントヘ、本文はコンポーネント本体として扱う)、リリースされた新曲コンポーネント(クライアントへ最初送られるのは一部のパートのみ、もしくは音質の低い(サンプリングが荒い)もの)などが考えられる。
【0341】
一例として、ニュースコンポーネントの販売が考えられる。ニュースコンポーネントの販売システムでは、クライアント側アダプタ22がヘッドラインや要約などの簡単な情報のみを提供するようにする。そしてコンポーネント本体21でニュースの詳細な内容や写真などを提供する。このシステムではサーバ側アダプタ24はほとんど機能する必要はない。例えば、一部の音声情報などのサーバコンポーネント本体にある情報も、クライアント側アダプタ22から利用するような場合には必要となる。
【0342】
クライアントホスト150からは、対象とするニュースコンポーネントを試し見する際は、クライアント側アダプタ22を介して参照できる簡単な内容のみを見ることができ、実際にそれを購入し本体を手元にダウンロードした時点で詳細な情報を参照できるようになる。
【0343】
この以外は、PUSH技術(プッシュ技術)などのソフトウェア配信と組み合わせることで、より幅広いサービスの提供が可能となる。
【0344】
(第3実施例)
本分散システムは、分散コンポーネント開発システムへ利用することができる。
【0345】
ネットワークを介して使用されることが前提となるアプリケーション/コンポーネントの開発においても、本システムをインフラとして用いることで、効率よく開発が行なえるようになると考えられる。
【0346】
例えばコンポーネントの開発者はβ版の段階のものを、サーバホスト2側でのみ動作させるという条件をつけて、コンポーネントをシステムに登録する。β版はサーバホスト2側でのみ実行できるので、エラーログの収集が容易でり、またクライアントホスト1側も比較的安全である。もちろん、βテストを行なえるクライアントのユーザの限定も行なえる。完成したコンポーネントはそのまま条件(サーバホスト2側でのみ実行可能とした条件)を変更することで、それ以降は通常のコンポーネントとして配布することができる。そのため、試験などの段階で特別なスタブなどを作成しなくても済むため、開発効率の面で有効であると考えられる。
【0347】
(第4実施例)
本分散システムは、実行環境の違いを吸収可能なシステム関発へ利用することができる。
【0348】
Javaのような日進月歩な言語環境などでは、バージョンの違いによってAPIが追加・変更されたりし、実行環境ごとに差が生じる可能性も考えられる。このような実行環境の違いを吸収するのにも本システムは有効であると考えられる。
【0349】
例えばサーバホストと第1のクライアントホストと第2のクライアントホストがネットワークで接続されている場合に、第1のクライアントホストでは、全てのJavaAPIがサポートされるが、第2のクライアントホストでは、Javaの拡張APIがサポートされていないとする。
【0350】
ここで、クライアントから要求される処理コンポーネントがある拡張APIを必要としている場合、第1のクライアントから処理要求が発生すると、クライアント/サーバのいずれのホストでも実行可能であるので、例えば負荷が少ないほうのホストで処理を実行することができる。しかし、第2のクライアントから要求が発せられた場合には、クライアントホスト側でその処理を実行することはできないので、必ずサーバホスト側で動作させるようにする。
【0351】
したがって、このようにすれば実行環境の違いがある場合においても処理を柔軟に実行できるようになる。これを応用すれば、例えば組み込み/マイコン系などで使用される制限された実行環境においても有効に利用できると考えられる。
【0352】
(第5実施例)
本分散システムは、通常DBシステムに適用すればネットワークトラフィックを削減できることが考えられる。
【0353】
通常の業務アプリケーションプログラムを考えた場合、データベースとなるサーバホストやクライアントホストが多数存在し、そのネットワークの物理的な構成も様々な形態を取ることになる。
【0354】
例えばLANが2つのセグメントから構成され、サーバコンポーネントを提供するコンポーネントサーバがLANの第2セグメント上にあり、提供されるコンポーネントは特定のDBへアクセスするような処理コンポーネントであり、クライアントはそれを利用する、という場合を考える。
【0355】
この場合で、例えば第1セグメント上にある第1クライアントが、第1セグメント上のDBサーバへアクセスするためのコンポーネントを要求した場合、それを第2セグメント上のコンポーネントサーバで実行する場合と、第1セグメント上の第1クライアントで実行する場合では、ネットワークトラフィックの観点から後者のほうが良いと考えられる。
【0356】
通常このような分散型の業務システムを構築する場合、システム全体を設計する段階でこのような物理的な構成を考慮に入れることが考えられるが、クライアントホストやDBを頻繁に追加、削除したりしてネットワーク構成などを変更しなければならなくなった場合に、対応が難しい。しかしながら、本クライアントシステムをベースに分散型業務システムを構築していれば、コンポーネントの実行位置の変更だけでネットワーク構成の変更にも対応でき、最適な分散システムを継続して使用することができるようになると考えられる。
【0357】
【発明の効果】
以上説明したように、本発明の分散システムによれば、2つ以上のコンピュータが接続されるネットワーク環境下において、以下のことが可能となる。
【0358】
(1)処理の実行本体をサーバで管理してその実行位置を決定するようにしたので、処理プロセスの実行位置を動的に変更してシステム構成を柔軟に変化させることが可能となる。
【0359】
(2)サーバコンポーネントの開発者は処理ロジックをサーバ側の処理を1箇所(サーバホスト)のみに実装すればよいので、クライアント側で動作する処理プロセスとサーバ側で動作する処理プロセスを別々に二重に開発する必要が無いとともに、処理ロジックの保守管理やインストール作業が軽減できる。
【0360】
(3)サーバコンポーネントを基本部、クライアント側リソースアクセス部、サーバ側リソースアクセス部から構成したので、特定の計算機資源でもサーバコンポーネントをアクセスすることができる。
【0361】
(4)メインサーバ以外に複数のサブサーバがあり、サブサーバで実行する場合は、メインサーバからサブサーバへサーバコンポーネントを配送し、サブサーバではそれを受け取り、実行可能な状態にする。
【0362】
(5)実行位置を決定し、そこへサーバコンポーネントを配信し、処理を行った後、さらにそこから実行位置を変更(再配置)できる。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係る分散システムのハードウエア構成例を示すブロック図。
【図2】第1実施形態の分散システムにおけるソフトウェア論理構成を示す図。
【図3】第1実施形態のアプリケーションプログラムの構成例を示す図。
【図4】第1実施形態におけるサーバコンポーネントの構成例を示す図。
【図5】サーバコンポーネント本体がクライアントホストで実行される場合と、サーバホストで実行される場合の構成を示す図。
【図6】コンポーネントローダの構成例を示す図。
【図7】コンポーネントサーバの構成例を示す図。
【図8】コンポーネントマネージャの構成例を示す図。
【図9】サーバコンポーネントへの処理要求から実行位置の決定までを示す図。
【図10】サーバコンポーネントをクライアントホスト側で実行させる場合にその実行位置決定から実行までについて示す図。
【図11】サーバコンポーネントをサーバホスト側で実行させる場合にその実行位置決定から実行までについて示す図。
【図12】サーバコンポーネントへの処理要求から処理実行までの処理全体を示す流れ図。
【図13】図12におけるリモートでサーバ本体を使用するための処理を示す流れ図。
【図14】図12におけるコンポーネントローダのコンポーネントを受け取る処理を示す流れ図。
【図15】図12におけるキャッシュに存在するコンポーネントを使用するための処理を示す流れ図。
【図16】本発明の第2実施形態におけるサーバコンポーネントの構成例を示す図。
【図17】サーバコンポーネント本体をサーバホスト側で動作させる場合のサーバコンポーネントの構成を示す図。
【図18】サーバコンポーネント本体をクライアントホスト側で動作させる場合のサーバコンポーネントの構成を示す図。
【図19】本発明の第3実施形態におけるサーバコンポーネントの構成例を示す図。
【図20】サーバコンポーネント本体をサーバホスト側で動作させる場合のサーバコンポーネントの構成を示す図。
【図21】特定のプログラミング言語でサーバコンポーネントを開発した時の様子を示す図。
【図22】本発明の第7実施形態に係るサーバコンポーネント自動生成システムの構成例を示すブロック図。
【図23】同実施形態におけるJavaによる共通インタフェースの一例を示す図。
【図24】同実施形態におけるJavaによるサーバコンポーネント本体の一例を示す図。
【図25】同実施形態におけるJavaによるサーバ側アダプタクラスの一例を示す図。
【図26】同実施形態におけるJavaによるサーバ側アダプタクラスのRMI用インタフェースの一例を示す図。
【図27】同実施形態におけるJavaによるクライアント側アダプタの一例を示す図。
【図28】テンプレート提供部が提供するテンプレートに対応するリストLC−1〜LC7を示す図。
【図29】テンプレート提供部が提供するテンプレートに対応するリストLC−8〜LC12を示す図。
【図30】クラスファイル自動生成の全体の処理流れを示す流れ図。
【図31】サーバコンポーネント本体のスケルトン生成を示す流れ図。
【図32】共通インタフェースの自動生成を示す流れ図。
【図33】サーバ側アダプタクラスの自動生成を示す流れ図。
【図34】アダプタクラスの定義へ中継用メゾットを埋め込む処理を示す流れ図。
【図35】本発明の第8実施形態におけるサーバコンポーネント自動生成システムの構成例を示すブロック図。
【図36】同実施形態におけるJavaによる共通インタフェースの一例を示す図。
【図37】同実施形態におけるJavaによるサーバコンポーネント本体の一例を示す図。
【図38】同実施形態におけるJavaによるサーバアダプタクラスの一例を示す図。
【図39】同実施形態におけるJavaによるサーバアダプタクラスのRMI用インタフェースの一例を示す図。
【図40】同実施形態におけるJavaによるクライアント側アダプタの一例を示す図。
【図41】同実施形態におけるJavaによるサーバ側リソースアクセス部共通インタフェースの一例を示す図。
【図42】同実施形態におけるJavaによるサーバ側リソースアクセス部の一例を示す図。
【図43】同実施形態におけるJavaによるRMI用インタフェースの一例を示す図。
【図44】同実施形態におけるJavaによるサーバ側リソースアクセス用サーバ側アダプタの一例を示す図。
【図45】同実施形態におけるJavaによるサーバ側リソースアクセス用クライアント側アダプタの一例を示す図。
【図46】同実施形態におけるJavaによるクライアント側リソースアクセス部のRMI用インタフェースの一例を示す図。
【図47】同実施形態におけるJavaによるクライアント側リソースアクセス部の一例を示す図。
【図48】テンプレート提供部が提供するテンプレートに対応するリストC−1〜C−4を示す図。
【図49】テンプレート提供部が提供するテンプレートに対応するリストC−5〜C−9,C−aを示す図。
【図50】テンプレート提供部が提供するテンプレートに対応するリストC−10〜C−22を示す図。
【図51】テンプレート提供部が提供するテンプレートに対応するリストC−30〜C−34を示す図。
【図52】テンプレート提供部が提供するテンプレートに対応するリストC−40〜C−42を示す図。
【図53】テンプレート提供部が提供するテンプレートに対応するリストC−43〜C−46を示す図。
【図54】テンプレート提供部が提供するテンプレートに対応するリストC−50〜C−80を示す図。
【図55】テンプレート提供部が提供するテンプレートに対応するリストC−90,C−a0,C−a1を示す図。
【図56】テンプレート提供部が提供するテンプレートに対応するリストC−b0〜C−b2を示す図。
【図57】自動生成の全体の処理を示す流れ図。
【図58】サーバ側リソースアクセス部の各ファイルの作成処理を示す流れ図。
【図59】サーバコンポーネント本体のスケルトン生成処理を示す流れ図。
【図60】共通インタフェースの自動生成処理を示す流れ図。
【図61】サーバ側アダプタクラスの自動生成処理を示す流れ図。
【図62】中継用メソッド定義の作成処理を示す流れ図。
【図63】クライアント側アダプタファイルの自動生成処理を示す流れ図。
【図64】サーバ側リソースアクセス部の共通インタフェースファイルの自動生成処理を示す流れ図。
【図65】本発明の第9実施形態に係る分散システムのハードウエア構成例を示すブロック図。
【図66】本発明の第10実施形態に係る分散システムの物理構成例を示すブロック図。
【図67】第10実施形態に係る分散システムの論理構成例を示すブロック図。
【図68】サーバコンポーネント情報の一例を示す図。
【図69】データベースアプリケーションプログラムが対象とするデータベースの一例を示す図。
【図70】データベースアプリケーションプログラムのクライアントホストのGUIの一例を示す図。
【図71】第10実施形態の全体の動作を示すフローチャート。
【図72】サーバコンポーネントを動的に配置する際の動作を示すフローチャート。
【図73】サーバコンポーネントを動的に配置する際のサーバコンポーネント情報の一例を示す図。
【図74】データベースアクセスの際の動作を示すフローチャート。
【図75】コンポーネントマネージャのGUIの一例を示す図。
【図76】再配置の全体の流れを示すフローチャート。
【図77】図76の再配置処理の詳細なフローチャート。
【符号の説明】
1…クライアントホスト
2…サーバホスト
3…ネットワーク
4…記憶装置
5…サーバコンポーネント
11…クライアントホスト基本部分
12…コンポーネントローダ
13…コンポーネントキャッシュ
14…コンポーネントサーバ
15…実行位置決定部
16…コンポーネントマネージャ
17…アクセス制御監視部
18…ネットワークモニタ
21…サーバコンポーネント本体
22…クライアント側アダプタ
23…分散オブジェクト間通信
24…サーバ側アダプタ
25…共通インタフェース
31…インスタンス生成部
32…コンポーネント復号化部
33…コンポーネント解凍部
36…インスタンス生成部
37…コンポーネント暗号化部
38…コンポーネント圧縮部
41…コンポーネント抽出部
42…コンポーネント情報抽出部
43…コンポーネント登録管理部
51…クライアントリソース対応部
52…サーバリソース対応部
53…クライアントリソースアクセス部
54…サーバリソースアクセス用クライアント側アダプタ
55…分散オブジェクト間通信
56…サーバリソースアクセス用サーバ側アダプタ
57…サーバリソースアクセス部
58…サーバリソースアクセス部共通インタフェース
61…クライアントリソースアクセス用クライアント側アダプタ
62…分散オブジェクト間通信
63…クライアントリソースアクセス用サーバ側アダプタ
64…クライアントリソースアクセス部共通インタフェース
71…開発用計算機
72…情報提供部
73…テンプレート提供部
74…クラスファイル自動生成部
75…クラスファイル部
76…本体処理内容作成部
77…本体処理内容提供部

Claims (9)

  1. クライアントとサーバからなる分散システムにおいて、
    前記クライアントは処理の要求を発するアプリケーション基本部分と、コンポーネントローダとを具備し、
    前記サーバは前記アプリケーション基本部分が要求する処理を実行するサーバコンポーネントを管理する管理手段と、前記アプリケーション基本部分からの要求を受け取り、当該処理を実行するサーバコンポーネントを前記クライアント又は前記サーバのいずれで実行するかを決定する実行位置決定手段と、前記アプリケーション基本部分から要求された処理を実行するサーバコンポーネントを前記管理手段から取得し、取得した当該サーバコンポーネントを前記実行位置決定手段における決定結果に従って処理するサーバコンポーネント引渡手段とを具備し、前記サーバコンポーネントは、要求される処理を実装しているサーバコンポーネント本体と、前記サーバと通信を行うクライアント側アダプタ、前記クライアントと通信を行うサーバ側アダプタとを具備し、
    前記サーバコンポーネント引渡手段は、
    クライアントで実行すると決定した場合、サーバコンポーネント本体をクライアントのコンポーネントローダへ送り、コンポーネントローダにサーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成させる手段と、
    サーバで実行すると決定した場合、管理手段から指定されたサーバコンポーネントのクライアント側アダプタとサーバコンポーネント本体を受け取り、サーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成し、サーバ側アダプタについてのオブジェクトを生成し、処理の要求を発したクライアントのコンポーネントローダへクライアント側アダプタを送り、コンポーネントローダにクライアント側アダプタを実行可能なスタブオブジェクトを生成させる手段とを具備し、
    クライアントで実行すると決定した場合、クライアントアプリケーション基本部分にサーバコンポーネント本体を利用して処理を実行させ、
    サーバで実行すると決定した場合、クライアントアプリーション基本部分にスタブオブジェクト、サーバ側アダプタを通してサーバホスト上に生成されたサーバコンポーネント本体にアクセスし処理を実行させる分散システム。
  2. 前記サーバ及び前記クライアントの負荷情報、前記サーバ及び前記クライアントの処理能力に関する情報、前記サーバ及び前記クライアントを接続するネットワークの転送速度、又は前記サーバコンポーネントのサイズ情報、又は前記サーバコンポーネントの計算量情報のうち、少なくとも1つ以上を取得し、前記実行位置決定手段に提供するネットワークモニタ手段をさらに具備し、
    前記実行位置決定手段は、前記ネットワークモニタ手段から提供された情報に基づいて前記サーバコンポーネントの実行位置を決定する請求項1記載の分散システム。
  3. 前記サーバは前記クライアントのユーザ情報又は前記アプリケーション基本部分の識別情報に基づき、当該アプリケーション基本部分の発する処理要求を受け付けるか否かを判定するアクセス制御監視手段を具備し、
    前記実行位置決定手段は、前記アクセス制御監視手段の判定結果に基づき、前記サーバコンポーネントを実行させるか否かをも決定する請求項1記載の分散システム。
  4. 前記サーバコンポーネントは、前記サーバコンポーネント本体と前記クライアント側アダプタとの共通のインターフェースを定義する共通インターフェースをさらに具備する請求項1記載の分散システム。
  5. 前記サーバコンポーネントは、クライアントリソースへアクセスするクライアントリソースアクセス部と、
    サーバリソースへアクセスするサーバリソースアクセス部と、
    サーバコンポーネント本体がクライアント側で実行される場合に、サーバリソースアクセス部と通信するためのサーバリソースアクセス用クライアント側アダプタ及びサーバリソースアクセス用サーバ側アダプタとをさらに具備する請求項1記載の分散システム。
  6. 前記サーバコンポーネントは、クライアントリソースへアクセスするクライアントリソースアクセス部と、サーバリソースへアクセスするサーバリソースアクセス部と、サーバコンポーネント本体がクライアント側で実行される場合に、サーバリソースアクセス部と通信するためのサーバリソースアクセス用クライアント側アダプタ及びサーバリソースアクセス用サーバ側アダプタと、サーバコンポーネント本体がサーバ側で実行される場合に、クライアントリソースアクセス部と通信するためのクライアントリソースアクセス用クライアント側アダプタ及びクライアントリソースアクセス用サーバ側アダプタとをさらに具備する請求項1記載の分散システム。
  7. 請求項1記載の分散システムに用いられるサーバコンポーネントを生成するサーバコンポーネント生成装置であって、
    サーバコンポーネントの複数のテンプレートを提供するテンプレート提供手段と、
    前記サーバコンポーネントに関する情報を提供する情報提供手段と、
    前記テンプレートを組み合わせ、また、テンプレートに前記情報を当てはめることでサーバコンポーネントを生成するプログラム生成手段と、
    を具備するサーバコンポーネント生成装置。
  8. 処理の要求を発するアプリケーション基本部分と、コンポーネントローダとを具備するクライアントと、
    前記アプリケーション基本部分が要求する処理を実行するサーバコンポーネントを管理する管理手段と、前記アプリケーション基本部分からの要求を受け取り、当該処理を実行するサーバコンポーネントを前記クライアント又は前記サーバのいずれで実行するかを決定する実行位置決定手段と、前記アプリケーション基本部分から要求された処理を実行するサーバコンポーネントを前記管理手段から取得し、取得した当該サーバコンポーネントを前記実行位置決定手段における決定結果に従って処理するサーバコンポーネント引渡手段とを具備し、前記サーバコンポーネントは、要求される処理を実装しているサーバコンポーネント本体と、前記サーバと通信を行うクライアント側アダプタ、前記クライアントと通信を行うサーバ側アダプタとを具備するサーバとからなる分散システムの制御方法において、
    クライアントで実行すると決定した場合、サーバコンポーネント本体をクライアントのコンポーネントローダへ送り、コンポーネントローダにサーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成させるステップと、
    サーバで実行すると決定した場合、管理手段から指定されたサーバコンポーネントのクライアント側アダプタとサーバコンポーネント本体を受け取り、サーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成し、サーバ側アダプタについてのオブジェクトを生成し、処理の要求を発したクライアントのコンポーネントローダへクライアント側アダプタを送り、コンポーネントローダにクライアント側アダプタを実行可能なスタブオブジェクトを生成させるステップとを具備し、
    クライアントで実行すると決定した場合、クライアントアプリケーション基本部分にサーバコンポーネント本体を利用して処理を実行させ、
    サーバで実行すると決定した場合、クライアントアプリーション基本部分にスタブオブジェクト、サーバ側アダプタを通してサーバホスト上に生成されたサーバコンポーネント本体にアクセスし処理を実行させる分散システムの制御方法。
  9. コンピュータを動作させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体において、
    前記プログラムは、処理の要求を発するアプリケーション基本部分とコンポーネントローダとを具備するクライアントと共に分散システムを構成するサーバコンピュータを
    前記アプリケーション基本部分が要求する処理を実行するサーバコンポーネントを管理する管理手段と、
    前記アプリケーション基本部分からの要求を受け取り、当該処理を実行するサーバコンポーネントを前記クライアント又は前記サーバのいずれで実行するかを決定する実行位置決定手段と、
    前記アプリケーション基本部分から要求された処理を実行するサーバコンポーネントを 前記管理手段から取得し、取得した当該サーバコンポーネントを前記実行位置決定手段における決定結果に従って処理するサーバコンポーネント引渡手段として機能させ、
    前記サーバコンポーネントは、要求される処理を実装しているサーバコンポーネント本体と、前記サーバと通信を行うクライアント側アダプタ、前記クライアントと通信を行うサーバ側アダプタとを具備し、
    前記サーバコンポーネント引渡手段は、
    クライアントで実行すると決定した場合、サーバコンポーネント本体をクライアントのコンポーネントローダへ送り、コンポーネントローダにサーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成させ、
    サーバで実行すると決定した場合、管理手段から指定されたサーバコンポーネントのクライアント側アダプタとサーバコンポーネント本体を受け取り、サーバコンポーネント本体から実行可能なサーバコンポーネントオブジェクトを生成し、サーバ側アダプタについてのオブジェクトを生成し、処理の要求を発したクライアントのコンポーネントローダへクライアント側アダプタを送り、コンポーネントローダにクライアント側アダプタを実行可能なスタブオブジェクトを生成させ、クライアントアプリーション基本部分にスタブオブジェクト、サーバ側アダプタを通してサーバホスト上に生成されたサーバコンポーネント本体にアクセスし、処理を実行させることを特徴とする記録媒体。
JP24361498A 1998-08-28 1998-08-28 分散システム、その制御方法、および記憶媒体 Expired - Fee Related JP3558887B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP24361498A JP3558887B2 (ja) 1998-08-28 1998-08-28 分散システム、その制御方法、および記憶媒体
US09/383,963 US6678715B1 (en) 1998-08-28 1999-08-27 Systems and apparatus for switching execution of a process in a distributed system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24361498A JP3558887B2 (ja) 1998-08-28 1998-08-28 分散システム、その制御方法、および記憶媒体

Publications (2)

Publication Number Publication Date
JP2000076172A JP2000076172A (ja) 2000-03-14
JP3558887B2 true JP3558887B2 (ja) 2004-08-25

Family

ID=17106449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24361498A Expired - Fee Related JP3558887B2 (ja) 1998-08-28 1998-08-28 分散システム、その制御方法、および記憶媒体

Country Status (2)

Country Link
US (1) US6678715B1 (ja)
JP (1) JP3558887B2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299240B1 (en) 1992-04-10 2007-11-20 Intellisync Corporation Method for translating computer data from one record structure to another
US5684990A (en) * 1995-01-11 1997-11-04 Puma Technology, Inc. Synchronization of disparate databases
US6044381A (en) * 1997-09-11 2000-03-28 Puma Technology, Inc. Using distributed history files in synchronizing databases
US6212529B1 (en) * 1996-11-13 2001-04-03 Puma Technology, Inc. Synchronization of databases using filters
US5943676A (en) 1996-11-13 1999-08-24 Puma Technology, Inc. Synchronization of recurring records in incompatible databases
JP2000172657A (ja) * 1998-12-08 2000-06-23 Fujitsu Ltd 分散処理システム、分散処理方法、その方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体、サーバ装置およびクライアント装置
US7330815B1 (en) * 1999-10-04 2008-02-12 Globalenglish Corporation Method and system for network-based speech recognition
US6810429B1 (en) * 2000-02-03 2004-10-26 Mitsubishi Electric Research Laboratories, Inc. Enterprise integration system
FR2810755B1 (fr) * 2000-06-27 2003-01-17 Cit Alcatel Procede de gestion d'informations en java
US7302634B2 (en) * 2001-03-14 2007-11-27 Microsoft Corporation Schema-based services for identity-based data access
US7024662B2 (en) 2001-03-14 2006-04-04 Microsoft Corporation Executing dynamically assigned functions while providing services
US7359920B1 (en) 2001-04-18 2008-04-15 Intellisync Corporation Communication protocol for synchronization of personal information management databases
US20030014478A1 (en) * 2001-06-29 2003-01-16 Noble Alan C. Dynamically distributed client-server web browser
GB2377775A (en) * 2001-07-18 2003-01-22 Ibm Distributing programs to processing units in a network using information on the capabilities of the units
EP1321853A3 (en) * 2001-12-10 2009-12-23 Sap Ag Dynamic component transfer based on resource negotiations between computer systems
US6782352B2 (en) * 2001-12-28 2004-08-24 Inventec Corporation System and method for monitoring server host operation
US8601096B2 (en) * 2002-05-14 2013-12-03 Motorola Mobility Llc Method and system for multi-modal communication
US9886309B2 (en) * 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
US7065756B2 (en) * 2002-08-22 2006-06-20 International Business Machines Corporation Optimization of portable operations in a client-server environment
JP4124331B2 (ja) * 2002-09-17 2008-07-23 株式会社日立製作所 Dbms向け仮想ボリューム作成・管理方法
US8489742B2 (en) * 2002-10-10 2013-07-16 Convergys Information Management Group, Inc. System and method for work management
US7620737B2 (en) * 2002-12-12 2009-11-17 Xerox Corporation Methods, apparatus, and program products for abstract applications/components in a ubiquitous computing environment
JP4034312B2 (ja) * 2003-03-24 2008-01-16 富士通株式会社 分散処理制御装置、分散処理制御方法および分散処理制御プログラム
JP4769515B2 (ja) 2004-09-07 2011-09-07 株式会社リコー アプリケーション実行方法、情報処理装置、画像形成装置、アプリケーション実行プログラム、記録媒体、及び情報処理システム
US7617503B2 (en) * 2004-09-15 2009-11-10 Verigy (Singapore) Pte. Ltd. Method and apparatus for determining which of two computer processes should perform a function X
JP2006178658A (ja) * 2004-12-21 2006-07-06 Fujitsu Ltd 情報処理方法及びプログラム
US8504999B2 (en) * 2006-10-05 2013-08-06 Palo Alto Research Center Incorporated System and method for transferring code to a data producer
JP5177628B2 (ja) * 2007-07-31 2013-04-03 古野電気株式会社 舶用機器のネットワークシステム用端末、及び舶用機器のネットワークシステム
US9454410B2 (en) * 2008-03-04 2016-09-27 Microsoft Technology Licensing, Llc Transparent integration of application components
WO2009119114A1 (ja) * 2008-03-27 2009-10-01 日本電気株式会社 シンクライアントシステムおよびその制御方法
US8578056B1 (en) * 2008-03-31 2013-11-05 Symantec Corporation Optimized application streaming for just in time compiled components
JP2010191482A (ja) * 2009-02-13 2010-09-02 Fujitsu Ltd クライアントサーバシステム、クライアント装置および業務処理振分プログラム
WO2010150704A1 (ja) * 2009-06-22 2010-12-29 日本電気株式会社 処理ノード選択システム、情報処理ノード、処理実行方法およびプログラム
JP2011070278A (ja) * 2009-09-24 2011-04-07 Nec Personal Products Co Ltd 遠隔操作システム、サーバ装置、クライアント装置、制御方法および制御プログラム
JP2011180816A (ja) * 2010-03-01 2011-09-15 Nec Corp 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
KR101222367B1 (ko) * 2010-08-17 2013-01-15 홍운식 모바일 기기 사용자를 위한 개인용 컴퓨터 시스템 및 그 개인용 컴퓨터 시스템의 운용방법
JP5569269B2 (ja) * 2010-09-06 2014-08-13 ソニー株式会社 端末装置、情報処理システム、依頼先選択方法、及びプログラム
WO2014050606A1 (ja) * 2012-09-26 2014-04-03 富士フイルム株式会社 医用画像管理システム並びに医用画像管理方法及びプログラム
GB2508598A (en) * 2012-12-04 2014-06-11 Ibm Splitting the processing logic of a distributed application page between client and server
JP6244771B2 (ja) * 2013-09-24 2017-12-13 日本電気株式会社 情報処理システム、処理装置、分散処理方法、及び、プログラム
US9986044B2 (en) * 2013-10-21 2018-05-29 Huawei Technologies Co., Ltd. Multi-screen interaction method, devices, and system
US10545749B2 (en) * 2014-08-20 2020-01-28 Samsung Electronics Co., Ltd. System for cloud computing using web components
US9606817B1 (en) * 2015-06-23 2017-03-28 Symantec Corporation Systems and methods for virtualizing internet of things (IoT) devices
WO2018061066A1 (ja) * 2016-09-27 2018-04-05 三菱電機株式会社 情報提示システム
JP7251247B2 (ja) * 2018-03-29 2023-04-04 株式会社リコー 通信システム、及び通信方法
US20230049332A1 (en) * 2021-08-16 2023-02-16 Red Hat, Inc. Coordinating execution of computing operations for software applications

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06326856A (ja) * 1993-05-17 1994-11-25 Hitachi Ltd データ記録装置および方法
AU681433B2 (en) 1993-08-03 1997-08-28 Sun Microsystems, Inc. Flexible multi-platform partitioning for computer applications
JP3737560B2 (ja) * 1996-04-19 2006-01-18 松下電器産業株式会社 ネットワークにおける分散処理方法及びそのシステム
US5928323A (en) * 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US6026425A (en) * 1996-07-30 2000-02-15 Nippon Telegraph And Telephone Corporation Non-uniform system load balance method and apparatus for updating threshold of tasks according to estimated load fluctuation
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
JPH1153326A (ja) * 1997-07-30 1999-02-26 Internatl Business Mach Corp <Ibm> 分散処理システム、クライアントノード、サーバノードおよび分散処理方法
US6223205B1 (en) * 1997-10-20 2001-04-24 Mor Harchol-Balter Method and apparatus for assigning tasks in a distributed server system
US6209018B1 (en) * 1997-11-13 2001-03-27 Sun Microsystems, Inc. Service framework for a distributed object network system
US6324580B1 (en) * 1998-09-03 2001-11-27 Sun Microsystems, Inc. Load balancing for replicated services
US6314447B1 (en) * 1999-10-04 2001-11-06 Sony Corporation System uses local registry and load balancing procedure for identifying processing capabilities of a remote device to perform a processing task

Also Published As

Publication number Publication date
JP2000076172A (ja) 2000-03-14
US6678715B1 (en) 2004-01-13

Similar Documents

Publication Publication Date Title
JP3558887B2 (ja) 分散システム、その制御方法、および記憶媒体
US7668901B2 (en) Methods and system using a local proxy server to process media data for local area users
US11240287B2 (en) Method, server and system for converging desktop application and web application
JP2779587B2 (ja) コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法
US6609159B1 (en) Methods, systems, and machine readable programming for interposing front end servers between servers and clients
US5634127A (en) Methods and apparatus for implementing a message driven processor in a client-server environment
JP5087456B2 (ja) サービス提供システム及びそれを構成するユーザ収容装置
US20020082858A1 (en) Managing distribution and local execution of computing resources
US7111299B2 (en) Method and device to assist in the execution of tasks of parallel jobs
US20150169412A1 (en) Saving program execution state
US7062527B1 (en) Management and scheduling of a distributed rendering method and system
US7440971B2 (en) Context based access of files by file system to a client based on detection of related files opened by the client
US20120016915A1 (en) System and method for file copy of cloud method and disk cloning over wide area network
JP4693540B2 (ja) データベース再構成装置、およびデータベース再構成プログラム
US20100077396A1 (en) Portable storage device for supporting portable computing system and portable computing based system using the same
WO2001082224A2 (en) Distributed rendering
JP4336363B2 (ja) ビジネスプロセス実行方法、ビジネスプロセス実行システムおよびプログラム
EP0709994A2 (en) Communications management between client and server processes
CN104717249B (zh) 远程操作应用发布的方法、代理服务器和系统
WO2006043322A1 (ja) サーバ管理プログラム、サーバ管理方法、およびサーバ管理装置
CN102137122A (zh) 一种下载数据的方法及装置
CN113630468B (zh) 一种动态代理的方法
CN115242817A (zh) 数据访问处理方法、装置、设备和存储介质
JP3350962B2 (ja) データ流通システム及びその方法
JPH11149449A (ja) データベースセッション管理方法及びその装置と処理を記録した記録媒体

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040511

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040519

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090528

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees