JP2010009218A - サービスバス連携方法及びサービスバス - Google Patents

サービスバス連携方法及びサービスバス Download PDF

Info

Publication number
JP2010009218A
JP2010009218A JP2008166154A JP2008166154A JP2010009218A JP 2010009218 A JP2010009218 A JP 2010009218A JP 2008166154 A JP2008166154 A JP 2008166154A JP 2008166154 A JP2008166154 A JP 2008166154A JP 2010009218 A JP2010009218 A JP 2010009218A
Authority
JP
Japan
Prior art keywords
service
bus
service bus
node
adjacent
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.)
Granted
Application number
JP2008166154A
Other languages
English (en)
Other versions
JP5136238B2 (ja
Inventor
Kenichi Sakurai
健一 櫻井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008166154A priority Critical patent/JP5136238B2/ja
Priority to US12/417,001 priority patent/US7953918B2/en
Publication of JP2010009218A publication Critical patent/JP2010009218A/ja
Application granted granted Critical
Publication of JP5136238B2 publication Critical patent/JP5136238B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】サービスバスで、分散配置が可能となることを目的とする。
【解決手段】追加するサービスバスに接続先である既存のサービスバスのノード識別子と位置を入力して、追加するサービスバスにおける自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに既存のサービスバスのノード識別子と位置を登録し、追加するサービスバスから既存のサービスバスにバスノードテーブル更新通知を行い、バスノードテーブル更新通知により既存のサービスバスのバスノードテーブルに追加するサービスバスのノード識別子と位置を登録する。
【選択図】図4

Description

本発明は、サービスバスを連携する方法及びサービスバスに関する。
ある業務システムを構築する場合、従来は1台のサーバに全ての業務ロジックを実装することで実現してきたが、この方式で実現した場合、ソフトウェアの有効活用がほぼ不可能であり、ソフトウェア資産を利用しての他システムの構築が困難である。
そこで、ソフトウェア資産を有効活用するために、SOA(Service−Oriented Architecture)という概念が生まれた。これは、ビジネスプロセスの構成単位に合わせて構築・整理されたソフトウェア部品や機能を、ネットワーク上に公開(これを「サービス」と呼ぶ)し、これらを相互に連携させることにより、柔軟なエンタープライズ・システム、企業間ビジネスプロセス実行システムを構築しようというシステムアーキテクチャのことである。
更に、SOAで公開されたソフトウェア部品を効率良く繋ぐための基盤として、ESB(Enterprise Service Bus)に代表されるサービスバスという概念が生まれた。SOAの概念では、サービス化されたソフトウェア資産にアクセスするために、アクセス元のエンタープライズ・システム等のアプリケーションからアクセス先のプロトコルやIPアドレス等の位置を把握しておく必要があり、これを行うものがサービスバスである。
図1にサービスバスの概念を示す。同図中、アプリケーション1,2からサービス3,4にアクセスしようとした場合、アプリケーション1,2は自分のアクセスしたいプロトコルやデータ形式でサービスバス5にだけアクセスすればよく、サービス3,4のプロトコルや位置を知らなくて良いため、効率的にアプリケーション1,2が開発できる。
サービスバス5は、プロトコル変換機能、データ変換機能と、サービスバス内の共通プロトコル通信を行っており、これらの機能を実現している。
また、サービスバスは、サービスアクセスの形態により、図2(A)に示すサービスに動作する契機を与えるもの(着信先指定起動型)、図2(B)に示す複数のサービス動作に同時に契機を与えるもの(ブロードキャスト型)、図2(C)に示すサービスの動作結果を受取るもの(読込型)などをサポートでき、アプリケーションの作りやすさを追求する基盤として機能する。
図3に、従来のサービスバスの一例の構成図を示す。サービスバス10には、アプリケーション11とサービス12,13を接続するために、アプリケーション受付エンドポイントデータ15a,15bを設定する必要がある。
アプリケーション受付エンドポイントとは、アプリケーションを特定のサービスに接続するための接続ポイントであり、アプリケーション毎に設定する必要がある。アプリケーション受付エンドポイントデータ15a,15bには、アプリケーション11が使用しているプロトコル、アクセス先のサービス(ルーティング先)、サービスのタイプ(起動型、読込型等)、アプリケーション11の入出力パラメータからサービスへアクセスするための入出力パラメータへと変換するデータ等が格納されている。
一方、サービスバス10からサービス12,13にアクセスするための設定データとして、サービスエンドポイントデータ16a,16bも設定する必要がある。これはサービスバス10がサービス12,13へ接続するための接続ポイントであり、サービス毎に設定する必要がある。サービスエンドポイントデータには、サービスが使用するプロトコル、タイプ、入出力パラメータが設定されている。
アプリケーション11がサービス13にアクセスする場合、アプリケーション11用のサービスBの受付エンドポイントデータ15bを指定してアクセスする。アプリケーション受付エンドポイントデータで指定されたプロトコルスタック17bが用意されており、そこでオーダを受付けると、データ形式変換部18bが受付エンドポイントデータ15bにある入力パラメータ変換のためのデータを参照してデータ変換を行い、ルーティング先(この場合サービス13)を参照して、サービス受付部19に依頼を出す。
サービス受付部19では、サービスエンドポイントデータ16bを参照し、サービス13の宛先(IPアドレス等)を決定し、指定されたプロトコルスタック20bに入力パラメータを送信することにより、サービス13にオーダが送出される。
ところで、複数のサービスソフトをサービスバスで接続する構成は従来から知られている(特許文献1参照)。
特開2003−274068号公報
図3に示すサービスバスは、1台の物理的なサーバで動作されることを前提としている。しかし、サービスバスに接続されるアプリケーションやサービスが増えてくると、サーバの処理能力を超えるアクセスがあった場合、アクセス規制などを行う必要があり、運用性が悪くなる。
こうなった場合、複数のサービスバスに分散してアプリケーションやサービスを登録する方法がある。しかし、従来のサービスバスでは分散配置のための機構がないという問題があった。また、共通プロトコル通信をサーバ間で行えるようにするとしても、保守を行う立場から見ると、エンドポイント設定のデータが増えることにより保守が煩雑になるという問題があった。
開示のサービスバスは、分散配置が可能となる方法を提供することを目的とする。
開示の一実施態様によるサービスバス連携方法は、複数のサービスバスを連携させるサービスバス連携方法において、
追加するサービスバスに接続先である既存のサービスバスのノード識別子と位置を入力して、前記追加するサービスバスにおける自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに前記既存のサービスバスのノード識別子と位置を登録し、
前記追加するサービスバスから前記既存のサービスバスにバスノードテーブル更新通知を行い、
前記バスノードテーブル更新通知により前記既存のサービスバスのバスノードテーブルに前記追加するサービスバスのノード識別子と位置を登録する。
好ましくは、前記バスノードテーブル更新通知により前記既存のサービスバスにおけるサービスにアクセスするためのサービスバス識別子とサービス識別子とホップ数を保存するサービスルートテーブルを読み出して前記追加するサービスバスに送信し、
前記追加するサービスバスで受信した前記既存のサービスバスのバスノードテーブルに基づいて前記追加するサービスバスのサービスルートテーブルの更新を行う。
開示の一実施態様によるサービスバスは、複数のサービスバスを連携させるサービスバスシステムのサービスバスにおいて、
外部端末から入力される接続先である既存のサービスバスのノード識別子と位置を、自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに登録する第1登録手段と、
前記既存のサービスバスにバスノードテーブル更新通知を行う更新通知手段と、
受信した前記バスノードテーブル更新通知により前記バスノードテーブルに隣接する他のサービスバスのノード識別子と位置を登録する第2登録手段と、を有する。
開示のサービスバスによれば、サービスバスの分散配置が可能となる。
以下、図面に基づいて実施形態について説明する。
<サービスバスの構成>
図4は、サービスバスシステムの一実施形態の構成図を示す。同図中、サービスバス(サービスバスが動作している物理的なサーバを「ノード」と呼ぶ。)30は、オーダ受付部31,エンドポイントデータ32,プロトコルスタック33の他に、サービスバス登録部34,バスノードテーブル35,サービスルートテーブル36,サービス通知部37を有している。サービス通知部37はメモリ37aを有している。ここで、アプリケーション38はオーダ受付部31,プロトコルスタック33に接続され、保守端末39はサービスバス登録部34に接続される。
同様に、サービスバス(ノード)40は、オーダ受付部41,エンドポイントデータ42,プロトコルスタック43の他に、サービスバス登録部44,バスノードテーブル45,サービスルートテーブル46,サービス通知部47を有している。サービス通知部47はメモリ47aを有している。サービス48はオーダ受付部41,プロトコルスタック43に接続され、保守端末49はサービスバス登録部44に接続される。
ここで、保守者は、新規に設立したサービスバス30に対して、隣接するサービスバス40の登録を行うだけで済むようにしている。なお、「隣接するサービスバス」とは、「隣接して接続されているサービスバス」という意味である。
保守端末39から隣接ノード登録(サービスバス登録)を行うと、サービス通知部37,47を介して、隣接サービスバス40に必要情報が送信される仕組みである。また、従来、保守者が行っていたエンドポイントデータ32,42の登録は、保守者が行うのではなく、アプリケーション(又はサービス)38が行う(サービス登録)。なお、サービスは、広義にアプリケーションを含むものとする。これにより、サービスバス設定の保守手順の簡略化を図る。
また、サービス通知部37,47を設け、バスノードテーブル35,サービスルートテーブル36を参照、更新しながら、サービスバス30,40間の通信を行う。サービス通知部37,47は、各サービスバス30,40がどのようなトポロジで接続されているのか、どのノードにどのようなサービスが登録されているのか等の把握を行い、アプリケーションが他ノードのサービスにアクセスした場合にルーティングを行う基となるデータの交換を行う。
また、実際に他ノードのサービスにアクセス(サービスアクセス)した場合のオーダもサービス通知部37,47が送受信する。これにより、複数のサービスバスの連携を可能とする。
<サービスバス登録>
図5にサービスバス登録の動作概要を示す。保守端末39からサービスバス30に隣接するサービスバス40のノードIDとその位置(IPアドレス)が入力されると、サービスバス登録部34がそのオーダを受付け、バスノードテーブル35を参照して、要求されたサービスバス40が登録されているかどうかを確認する。登録されていないことを確認すると、サービス通知部37に隣接サービスバス40への情報通知依頼を出す。
すると、サービス通知部37は、バスノードテーブル35を更新すると同時に、隣接サービスバス40に対して、サービスバス30が追加されたことを通知するバスノードテーブル更新通知を出力し、要求元ノードID(この例では「#1」)と、要求元位置のIPアドレスを追加して隣接サービスバス40に送信する。その応答として、隣接サービスバス40から隣接サービスバス40が持つサービスルートテーブル46を受取り、自サービスバス30のサービスルートテーブル36を更新する。
バスノードテーブル35は、自サービスバス30を含む隣接サービスバス40のノードIDと位置を保存している。サービスルートテーブル36は、サービスへアクセスするために、どのノードにアクセスしたら、何ホップ(中継ノードの数)で到着できるかを管理している。
図5では、バスノードテーブル35から、ノードID=#1は自ノードであり、ノードID=#2はIPアドレスが(10.20.30.2)のノードであることが分かる。サービスルートテーブル36から、サービスID=Aは、ノードID=#1(自ノード)にあり、当然、ホップ数が0で到達できるところにあることが分かる。サービスID=Cへは、ノードID=#2にアクセスすれば、ホップ数1で到達できるところにあることが分かる。
図6は、サービスバス登録処理のフローチャートを示す。保守者からサービスバス30の登録が行われると、サービスバス登録部34経由で、サービス通知部37のサービスバス登録処理受付け(ステップS1)が起動される。
まず、その登録が自ノード(local)であるか、隣接ノード(自ノードに接続されている他ノード)であるか判断し(ステップS2)、自ノードであればバスノードテーブル35だけを更新して(ステップS3)、応答をサービスバス登録部34に返却する(ステップS4)。
隣接サービスバス40の登録であれば、自ノードの場合と同様にバスノードテーブル35を更新し(ステップS5)、その後、バスノードテーブル更新通知の要求を登録した隣接サービスバス40に送信する(ステップS6)。この要求には、要求元ノードID=#1と要求元位置のIPアドレス(10.20.30.1)が設定される。
隣接サービスバス40がその要求をサービス通知部47で受け(ステップS7)、バスノードテーブル45を更新する(ステップS8)。つまり、要求元ノードID=#1と要求元位置のIPアドレス(10.20.30.1)をバスノードテーブル45に書き込む。その後、サービスバス40のサービスルートテーブル46が読み出され(ステップS9)、サービスバス30への応答として送信される(ステップS10)。
サービスバス30では、サービスバス40のサービスルートテーブル46を受取ると(ステップS11)、サービスバス30のサービスルートテーブル36の更新処理が行われる(ステップS12)。
図7は、サービスルートテーブル更新処理のフローチャートを示す。まず、隣接サービスバス40からサービスルートテーブル46を受取る(ステップS21)。隣接サービスバス40から受取るサービスルートテーブル46は、図8(A)に示すように、サービスIDとホップ数が複数記載されている形である。
サービスバス30では、全てのホップ数に+1の演算を行い(ステップS22)、図8(B)に示す値を得る。その後、サービスバス30のサービスルートテーブル36を参照し(ステップS23)、比較・判断を行ったのち、サービスバス30のサービスルートテーブル36を更新する。
初回の隣接ノード登録であれば、サービスバス30のサービスルートテーブル36には何も登録されていない状態なので、受取ったものをサービスバス30のサービスルートテーブル36に書き込めば良いが、既にサービスバス30にサービスルートテーブル36が設定されている場合は、判断ロジックに従い、サービスバス30のサービスルートテーブ36ルを書き換える。
判断ロジックは、まず、自サービスバス30に登録されているサービスかどうかを判定する(ステップS24)。図8(C)に示すサービスバスサービスバス30の既存サービスルートテーブル36では、ノードIDが「#1」のサービスID=Aに関しては、書き換えを行わない。
次に、既に登録済のサービスかどうかを判定する(ステップS25)。今回はサービスバス40からの応答であるため、図8(C)に示すサービスバスサービスバス30の既存サービスルートテーブル36のうち、ノードIDが「#2」のものに注目する。ノードIDが「#2」となっているもののうち、サービスID=Bはホップ数2で登録されており、図8(B)に記載されているサービスID=Bで、ホップ数が2と一致する。このようなサービスに関しては更新を行わない(ステップS26,S27)。
次に、図8(C)に示すサービスバスサービスバス30の既存サービスルートテーブル36では、同一のサービスIDが無限に増えるのを防ぐため、同一サービスIDをいくつ持てるかの上限を設けている(ステップS26)。ここでは、上限値を2として説明する。
図8(C)でサービスID=Cに注目すると、まだ1つしか登録されていない。図8(B)に記載されているサービスID=Cは、追加される形で登録される(ステップS28)。また、サービスID=Dの場合、図8(C)に示すサービスバスサービスバス30の既存サービスルートテーブル36では、ノードID=#3がホップ数1、ノードID=#4がホップ数3で既に登録されており、サービスID登録の上限数(最大)は2である。
この場合、既存ホップ数と入力されたDのホップ数を比較し(ステップS27)、入力された方がホップ数が少なければ上書き更新を行う(ステップS28)。図8(B)のサービスIDが「D」のものは、ホップ数2であり、図8(C)に示すサービスバスサービスバス30の既存サービスルートテーブル36のノードID=#4の場合のホップ数3と比べて小さい。よって、このレコードを書き換える。
一方、図8(C)におけるサービスID=Fに注目すると、サービスID=Dと同様に同一サービスIDの上限値である2つ登録されており、図8(B)の「F」のホップ数4と比較すると、図8(C)に示すサービスバスサービスバス30の既存サービスルートテーブル36はノードID=#3がホップ数1で、ノードID=#4がホップ数2なので、この場合更新は行われない。
以上のように、サービスルートテーブル更新が行われるものは、ノードIDが隣接のもの「#2」で、書き換えられる。最終的に図8(D)のサービスバスサービスバス30の更新後のサービスルートテーブル36に示すように書き換えられる。
図6に戻って説明するに、サービスバス30のサービスルートテーブル36の更新処理が終わると、バスノードテーブルを参照し、今回更新した隣接サービスバス40以外に隣接ノードがなければ処理を終了する(ステップS13,S4)。
サービスバス40以外の隣接ノードが存在すれば、サービスバス40以外の隣接ノード全てに対して、今回更新したサービスルートテーブル36のレコードを送信する(ステップS14)。図8(D)の例では、3レコード更新したので3レコードを送信する。この更新したサービスルートテーブル36の送信処理は、サービス登録で詳しく説明する。
<サービス登録>
図9にサービス登録の動作概要を示す。サービスとアプリケーションとがサービスバスを利用して通信を行う場合、どちらもサービスバスに対してサービス登録を行う必要がある。
サービス48がサービス登録を行う場合、サービスID、サービスが動作するサーバ30の位置(IPアドレス)、サービスタイプ(起動型サービス/読込型サービス/アプリケーション)、プロトコル、入力パラメータ、出力パラメータをデータとしてサービスバス40(又は30)に登録する。
アプリケーション38がサービス登録を行う場合、サービスID、サービスが動作するサーバの位置(IPアドレス)、サービスタイプ(例えばアプリケーション)、プロトコルをサービスバス30(又は40)に登録する。
以下、サービスバス30にサービス登録を行う場合について説明する。サービスバス30では、オーダ受付部31がサービス登録要求を受付け、エンドポイントデータ32内のサービスエントリテーブル32aを参照して自サービスバス30に登録を要求されたサービスがないことを確認し、サービス通知部37に処理を渡す。
サービス通知部37では、エンドポイントデータ32の更新を行い、バスノードテーブル35とサービスルートテーブル36を参照しながら、登録されたサービスを他のサービスバス40へ通知を行う。
エンドポイントデータ32は、サービスエントリテーブル32a、入力パラメータテーブル32b、出力パラメータテーブル32cを有する。サービスエントリテーブル32aは、自サービスバスにどのようなサービスが登録されているかを保持するテーブルであり、サービス登録時に渡されたサービスID、サービスが動作する位置(IPアドレス)、サービスタイプ、プロトコルをサービスやアプリケーションそれぞれを1レコードとして保持する。
入力パラメータテーブル32bは、サービスにアクセスする時に渡すパラメータを保持するテーブルであり、サービス登録時に渡されたサービスID、パラメータ名と型、その有効値を全ての入力パラメータに対して保持している。
出力パラメータテーブル32cは、サービスにアクセスがあり、サービスが処理を行った後、要求元に対して返却するパラメータを保持するテーブルであり、保持するデータは入力パラメータテーブルのそれと同様である。
図10は、サービス登録処理のフローチャートを示す。オーダ受付部31からサービス通知部37に対し、サービス登録時にサービスから渡されたデータ(サービスID、サービスが動作するサーバの位置であるIPアドレス、サービスタイプ、プロトコル、入力パラメータ、出力パラメータ)が渡される(ステップS31)。まず、渡されたデータの中から、サービスID、位置、タイプ、プロトコルを抽出してサービスエントリテーブル32aに書き込む(ステップS32)。
次に、タイプがアプリケーションの場合はここで処理を終えるが、それ以外の場合(ステップS33)、つまり、起動型サービス又は読込型サービスの場合には渡されたデータの中から、入力パラメータ、出力パラメータを抽出して、それぞれ入力パラメータテーブル32b、出力パラメータテーブル32cに書き込む(ステップS34)。
次に、サービスルートテーブル36の更新を行う(ステップS35)。サービスルートテーブル36は、ノードID、サービスID、ホップ数を要素として持つが、ノードIDは自ノードのID、サービスIDは登録されたサービスID、ホップ数は自ノードなので0が設定され、レコード追加される。
ここまでの処理が完了した時点で、隣接ノードがない場合は処理を完了するが、隣接ノードがある場合(ステップS36)、全ての隣接ノードに対して、サービスルートテーブル更新を通知するため、自ノード(要求元)のノードID、追加したサービス(更新分)のサービスIDとホップ数を通知する(ステップS37)。
隣接サービスバス40はサービスルートテーブル更新通知を受取ると(ステップS38)、図7に示すサービスルートテーブル更新処理に従い、サービスバス40のサービスルートテーブル46の更新が行われる(ステップS39)。
ここで、何も更新が行われなかった場合(ステップS40)、サービスバス40が保持している全てのサービスルートテーブル46(サービスIDとホップ数)を自ノードのノードID「#2」と共に、サービスバス30に対して返却する(ステップS43)。これは、アプリケーションが他の遠隔サービスバスが保有しているサービスにアクセスする場合にどのノードにアクセスしたら良いかの判断に使用される。詳細についてはサービスアクセスにおいて後述する。
一方、サービスルートテーブル46の更新を行った場合、サービスバス40に隣接ノードがあれば(ステップS41)、サービスルートテーブル更新を通知するため、自ノード(要求元)のノードID、追加したサービス(更新分)のサービスIDとホップ数を、サービスバス40の隣接ノードに対して送信する(ステップS42)。このとき通知される情報は、サービスバス30がサービスバス40に通知した情報と同じ項目であるが、要求元ノードIDは、サービスバス40となるし、ホップ数も+1されている。ただし、例外として、通知が無限循環を防ぐために、要求元のサービスバス30に対しては送信しない。図10では、ノード「#3」とノード「#4」に対してのみ通知を行う。
ノード「#3」やノード「#4」においても、サービスバス40と同じ処理を行うことになる。これを繰り返すことにより、ネットワーク全体にサービスが新たに追加されたことが通知できる。
隣接ノード「#3,#4」に対してサービスルートテーブル更新通知が完了すると、要求元のサービスバス30に対してサービスバス40が今回更新を行わなかったサービスルートテーブル36のレコード全て(保持分)を送る(ステップS43)。その応答をサービスバス30が受取ると、サービスサービスバス40の処理と同様に、サービスバス30のサービスルートテーブル更新処理が行われる(ステップS44)。
<サービスアクセス>
アプリケーションがサービスにアクセスするには、アプリケーションとサービスが共にサービスバスのサービス登録を行っていることを前提としている。また、アプリケーションが、どこサービスバスに接続されているサービスにどのようなアクセスルートで通信するのかを確立のために、アプリケーションは、アクセス開始要求を行って、アクセスルートを確立した後に、実際にアクセスを実行するステップを踏むことになる。
図11にアプリケーションがサービスにアクセスするためのルート確立を行うアクセス開始動作の概要を示す。
アプリケーション38はアクセス開始要求をサービスバス30に送る。このとき、アプリケーション38からは、要求元のサービスIDと、アクセス先のサービスIDをデータとして通知する。オーダ受付部31でこの要求の受付を行い、受取った要求元サービスIDとサービスバス30が保有しているサービスエントリテーブル32aから、要求元のサービス(アプリケーション38)がこのサービスバス30に登録されているものかどうかの判断を行う。もし登録されていないものであれば、要求は受付けられない。
サービスバス30に登録されているアプリケーション38からの要求であれば、サービス通知部37に対してアクセス開始の通知を渡し、サービス通知部37が他のノード(例えば40)のサービス通知部47と通信を行って、アクセスルートの確立を行う。詳細は後述する。
アクセスルートの確立が完了すると、サービス通知部37のメモリ37aはルート情報を保持することになる。ルート情報は、要求元サービスIDとアクセス先サービスIDをキーとして、どのノードを通過するかを順番に記した複数のノードIDを要素として持つ。
図12は、アクセス開始処理のフローチャートを示す。サービスバス30に接続されているアプリケーション38からのアクセス開始要求をオーダ受付部31が受取り、サービス通知部37がアクセス開始処理を行う(ステップS51)。
まず、サービスルートテーブル36を参照して(ステップS52)、アクセス先のサービスIDが自ノードに接続されているサービスかどうかを判定する(ステップS53)。これは、ホップ数が0かどうかで判定する。また、アクセス先サービスIDが他ノードである場合には、サービスルートテーブル36のノードIDをキーとして、バスノードテーブル35の同じノードIDを参照し、該当ノードの位置も取得しておく。
次に、アクセス先が自ノードか他ノードかで処理が分かれる。アクセス先が自ノードの場合、ルート情報としてノードIDに自ノードのみが書き込まれ、メモリ37aに保存しておく(ステップS54)。更に、サービスエントリテーブル32aを参照し、アクセス先サービスの位置、タイプ、プロトコルを取得する。入力パラメータテーブル32b、出力パラメータテーブル32cを参照し、アクセス先サービスの入出力情報も取得する。読み出した情報は、サービス通知部37のメモリ37aに保存(キャッシュ作成)しておく(ステップS55)。
これは、実際にアクセス実行を行った際、データベースにアクセスをしないで、高速に処理を行うためである。ここまで実施すると、オーダ受付部31に対して処理結果が返送され、自ノードに登録されているサービスへのアクセス開始処理が終了する。
一方、アクセス先が他ノードの場合、サービスルートテーブル36を参照して、最初は最も少ないホップ数で到達できるノード(図11,図12の例ではサービスバス40)に対してアクセス開始要求を出す(ステップS56)。この他ノードへのアクセス開始要求のデータとして、ルート情報を通知する。ルート情報には、要求元サービスID(A)、アクセス先サービスID(B)と、最初の隣接ノードへの送信時は自ノードのノードID=#2のみが設定されている。
このアクセス開始要求をサービスバス40のサービス通知部47が受取ると(ステップS57)、サービスバス30と同じようにサービスルートテーブル46を参照して(ステップS58)、自サービスバス40に接続されているサービスかを判定する(ステップS59)。
判定の結果、他ノードにあるサービスの場合は、サービスバス30と同様に初回は最小ホップ数で到達できるノードID=#3に対して、ルート情報と共にアクセス開始要求を出す(ステップS60)。このときのルート情報のノードIDには、「#1」と「#2」が記載されている。
一方、自ノードに接続されているサービスであると判定された場合は、サービスバス30で自ノードにサービスが接続されている場合と同様に、サービスエントリテーブルを参照し、サービスエントリ情報(アクセス先サービスの位置、タイプ、プロトコル)を取得する。入力パラメータテーブル、出力パラメータテーブルを参照し、アクセス先サービスの入出力情報も取得する(ステップS61)。そして、ルート情報をメモリ47a上に保存する(ステップS62)。
サービスバス30の自ノード接続サービスとは異なり、ルート情報のノードIDには「#1」と「#2」が記載されて書き込まれる。そして、これら収集したサービスエントリ情報、入出力パラメータ情報、ルート情報を要求元のノードID=#1のサービスバス30に送信する(ステップS63)。
サービスバス30でこれらの応答情報を受取ると(ステップS64)、処理が正常に終了したかを判定し(ステップS64)、異常終了していた場合には、2番目にホップ数の少ないルートで到達できる隣接ノードに対してアクセス開始要求を出し(ステップS56)、サービスバス40で説明した処理と同じ処理が隣接ノードで行われる。
処理が正常終了していた場合は、自ノードにサービスが接続されている場合と同様に、サービスバス40から受取ったルート情報をメモリ37aに書き込み(ステップS54)、サービスバス40から受取った入出力パラメータ情報のキャッシュも作成する(ステップS55)。ここまで完了すると、オーダ受付部31に対して処理結果が返送される。
なお、サービスバス40でノード「#3」からの応答情報を受取った場合(ステップS66)、サービスバス30と同様に、処理が正常に終了したかを判定し(ステップS67)、異常終了していた場合には、ステップS60に進み、処理が正常終了していた場合は、ステップS62に進む。
なお、オーダ受付部31は、アプリケーション38に対して応答を返却するが、このとき、アクセス先サービスのタイプと、入出力パラメータ情報をデータとして送る。こうすることにより、実際にサービスへのアクセスをアプリケーションが行う時に、どのようなパラメータを渡し、どのような情報が処理結果として返却されるかを知ることができる。こうして、アプリケーションからサービスまでのサービスバスを経由したルートが確立できる。
図13は、ルート確立後にアプリケーションが実際にサービスにアクセスを行った場合のアクセス実行動作の概要を示す。
アプリケーション38は、自分の使いたいプロトコルで、サービスへのアクセス実行要求をサービスバス30に対して行う。そうすると、サービスバス30では、予め用意してあるプロトコルスタック33でそれを受信し、オーダをサービス通知部37に送る。
なお、アプリケーション38からは、アクセス開始時に、要求元サービスID、アクセス先サービスIDに加えて、サービスに入力するための入力パラメータを渡す。この入力パラメータは、アクセス開始時にサービスバス30からの応答による入力パラメータ情報から分かる。
サービスバス30の中のサービス通知部37がアクセス実行要求を受けると、メモリ37aのルート情報を参照しながら1つ又は複数のサービスバス30(,40)を経由して、入力パラメータをアクセス先のサービス48が接続されているサービスバス(例えば40)まで届ける。
このサービスバス40のサービス通知部47がアクセス実行要求を受けると、サービスエントリテーブル42aを参照して、アクセス先サービスが使用しているプロトコルスタック43に依頼してサービス48が動作しているサービスバス40までオーダを届ける。
図14は、アクセス実行処理のフローチャートを示す。アプリケーション38からオーダを受取ったプロトコルスタック33からサービス通知部37でアクセス実行要求を受付けると(ステップS71)、アプリケーション38から渡された入力パラメータと、サービス通知部37内の入力パラメータ情報キャッシュを比較し(ステップS72)、不正なパラメータであった場合は、要求を受付けない。ここで、入力パラメータのチェックをしているのは、不正なオーダがサービスバス30,40間に流通し、ネットワーク負荷を上げてしまうことを防止するためである。
次に、アプリケーション38から受取った要求元サービスID、アクセス先サービスIDから、サービス通知部37のメモリ37a上に持つルート情報を読込み、アクセス先までのルート(ノードID)を取得するのと同時に、バスノードテーブル35を参照して、隣接のノードIDの位置(IPアドレス)も取得する(ステップS73)。
ここで、アクセス先が自サービスバス30のサービスであれば(ステップS74)、自サービスバス30のサービスエントリテーブル32aに登録されているアクセスサービスの位置(IPアドレス)、タイプ、プロトコルを読出し、アプリケーションが指定してきた入力パラメータ、位置と共に、サービスエントリテーブル32aから読み出したプロトコルのプロトコルスタック33に依頼をかけると、プロトコルスタック33がサービスに入力パラメータと共にアクセスする(ステップS75)。
一方、アクセス先のサービスが他ノードにある場合、ルート情報に従い次のサービスバス40に対してアクセス実行処理を送信する。この時に送信するデータは、アプリケーション38から指定された要求元サービスID、アクセス先サービスID、入力情報である。
次のサービスバス40のサービス通知部47がアクセス実行処理を受付けると(ステップS76)、サービスバス30の時と同様に、メモリ47a上のルート情報と受取った要求元サービスID、アクセス先サービスIDから、アクセス先が自ノードに接続されているか、他ノードかを判定する(ステップS77,S78)。
他ノードであれば、サービスバス30と同様に次のノード「#3」にアクセス実行処理を送信する。自サービスバス40に接続されている場合、サービスバス30での自ノードに接続されたサービスの場合と同様の処理が行われ(ステップS79)、プロトコルスタック43に依頼してサービス48からの処理結果応答を受取る(ステップS80)。
処理結果は、再度ルート情報を参照し(ステップS81)、今後は要求時とは逆のルートを辿る形で要求元のサービスバス30に応答結果を送信する(ステップS82)。
この時の応答には、出力パラメータで指定してある情報が返却され、最終的に、アプリケーション38が接続されているサービスバス30まで応答が返ってきたら(ステップS83)、サービスエントリテーブル32aを参照して(ステップS84)、アプリケーション38が使用しているプロトコルスタック33に依頼をかけて(ステップS85)、出力情報(応答結果)と共に、アプリケーションに応答が返却される。
このようにして、アプリケーション38から複数のサービスバス30,40を経由してサービス48にアクセスすることが可能になる。
<複数サービスバス連携>
図15に、複数サービスバスが連携した実施形態を示す。この実施形態では、ノードID=#1のサービスバス30とノードID=#2のサービスバス40が既に接続されていて、サービスバス30には、サービスID=Aのアプリケーション71とサービスID=Bのサービス72が接続され、サービスバス40には、サービスID=Cのサービス73とサービスID=Dのサービス74がそれぞれ接続されている。
この構成に、新たにノードID=#3のサービスバス60を接続し、更に、サービスバス60にサービスID=Eのサービス75を接続し、更に、アプリケーション71からサービス73にアクセスする実施形態を説明する。
サービスバス30と40は、既に接続さているので、図示したように、バスノードテーブル35,45、サービスルートテーブル36,46、サービスエントリテーブル32a,42aは作成されているものとする。
<サービスバスの登録>
新規にサービスバス60の設定を行い、サービスバス60からサービスバス30とサービスバス40への接続設定について図16及び図17を用いて説明する。
図16は、追加のサービスバス60を既存のサービスバス30に接続するシーケンスを示す。シーケンスは既に自サービスバス60のサービスバス登録は完了しており、サービスバス30の追加を行うところから開始されている。
サービスバス60はサービスバス30の登録要求を受けると、サービスバス60のバスノードテーブルに保守者により入力されたサービスバス30の位置をレコード追加した後(ステップS91)、隣接ノードであるサービスバス30に対してバスノードテーブルの更新通知を出す(ステップS92)。このとき、要求ノードID=#3と要求元位置(10.20.30.3)をデータとして渡す。
サービスバス30がその通知を受取ると、バスノードテーブル35に受取った情報を追加し、サービスバス30の保有しているサービスルートテーブル36をサービスバス60に送り返す(ステップS93)。
サービスバス60では、図7に示すサービスルートテーブル更新処理に従って、サービスルートテーブルに何も設定されていないサービスバス60は、受取ったホップ数に+1した上で、ノードIDを「#1」として、全ての情報をサービスルートテーブルに書き込む(ステップS94)。
図17は、更に、追加のサービスバス60を既存のサービスバス40に接続するシーケンスを示す。サービスノードテーブルを更新し(ステップS95)、サービスバス40に対してバスノードテーブル更新通知を出す(ステップS96)。サービスバス40のサービスルートテーブル46をサービスバス60に送信し(ステップS97)、サービスバス60が受取るまではサービスバス30を追加した場合と同じ動作である。
すなわち、図7に示すサービスルートテーブル更新処理に従って、受取ったサービスノードテーブルのホップ数に+1した後、サービスバス60が既に持っているサービスノードテーブルを読出し、ステップS24の「自サービスバスノードのサービスか?」はNO、ステップS25の「既に登録済みのサービスか?」はNO、ステップS27の「既存ホップ数≧入力されたホップ数」はサービス72はNOであるが、ステップS26の「同一サービスID数が最大を超えているか?」はNO(ここでは最大数2としている)であるので、全てのレコードをサービスノードテーブルに追加書き込みする。
ここからは、サービスバス30を追加した時と状況が異なり、図6におけるステップS13の「他のサービスバスノードがあるか?」は、サービスバス30があるのでYESとなるので、今回追加したサービスルートテーブルをサービスバス30に対して送信する(ステップS98)。
サービスバス30はサービスルートテーブル更新通知を受取ると、図10に示すサービス登録処理に従い、サービスバス30のサービスルートテーブル36を更新する(ステップS99)。更新に際しては、図7に示すサービスルートテーブル更新処理に従う。今回の場合、サービスID=Bは、サービスバス30にとっては、自ノードのサービスなので追加されない。それ以外のサービスID=C、サービスID=Dに関しては、更新条件に合致するので、ホップ数を+1した後にサービスバス30のサービスルートテーブル36に追加される。
従って、図10のステップS40では、「更新したか?」はYESとなり、更に、ステップS41の「要求元以外の隣接サービスバスノードがあるか?」に対しても、サービスバス40があるのでYESとなる。
よって、今回サービスバス30のサービスルートテーブル36に追加した分をサービスバス40に送信することになり、サービスバス40でもサービスバス30と同様に、サービスルートテーブル36の更新が行われる。
また、サービスバス30からサービスバス60に対する応答として、サービスバス30のサービスルートテーブル36のうち、今回更新していないもの(保持分)を送ることになる(ステップS99)。サービスバス30の保持分は、サービスID=Bでホップ数0、サービスID=Cでホップ数1、サービスID=Dでホップ数1である。
サービスバス60では、これらのホップ数に+1して、既存のサービスルートテーブル36と比較する。この場合、既に登録されているものと一致するので、図7のステップS25の「既に登録済みのサービスか?」がYESとなるので、更新は行われず、また、サービスバス30から隣接ノードへのサービスルートテーブル更新通知は行われない。これで図10のステップS42のサービスルートテーブル送信(更新分のみ)が終了する(ステップS100)。
次に、サービスバス60はサービスルートテーブル送信(保持分のみ)をサービスバス40に対して送り返す処理を行う(ステップS101)。ここでのサービスバス60の保持分は、サービスID=Bでホップ数1、サービスID=Cでホップ数2、サービスID=Dでホップ数2である。
サービスバス40がこれを受取ると、サービス73,74は自ノードのサービスなので追加されない。サービスID=Bでホップ数1のみ、サービスバス40でホップ数+1されて追加更新される。サービスバス40から同様に保持分をサービスバス60に送り返すが、これらは既にサービスバス60で登録されているものなので、更新は行われない(ステップS102)。
これらを繰り返すことによって、全てのサービスバスが自律で、サービスがどこにあるのかを把握できるようになる。
<サービスの登録>
図18は、サービスバス60にサービス75を登録するシーケンスを示す。サービスを行っているサーバから、サービスバス60がサービス追加オーダを受取ると、図10に示すサービス登録処理に従い、サービスエントリテーブルにサービスEの情報が追加され(ステップS110)、タイプが起動型のサービスなので、続いて入力パラメータテーブル、出力パラメータテーブルが追加更新される(ステップS111)。
更に、サービスルートテーブルにサービスID=Eをホップ数0として追加登録すると、後は、サービスバスの登録と同様の手順で、追加分のサービスルートテーブルを隣接ノード(30と40)に対して送信する(ステップS112)。
サービスバス30とサービスバス40でも同様の論理で、送られて来たサービスルートテーブル36,46を更新し、保持分を要求元に送り返すことを繰り返す。この手順で行うことにより、全てのサービスバスに対して、サービスEが追加されたことが通知される。
<サービスへのアクセス>
図19は、アプリケーション71からサービス73にサービスアクセスを行うシーケンスを示す。アプリケーション71は、まず、アクセス開始要求をサービスバス30に送信する(ステップS120)。図12のアクセス開始処理に従い、サービスバス30のサービスルートテーブル36にサービス73はホップ数0で存在していないので、他ノードのサービスであることが分かる(ステップS121)。
すると、ホップ数1で到達できるサービスバス40にアクセスすることを決定する。そして、サービスバス30からサービスバス40に対してアクセス開始要求が送信される(ステップS122)。この時に送信されるデータは、要求元サービスID=A、アクセス先サービスID=C、ルート情報=#1である。
サービスバス40においても、図12のアクセス開始処理に従い、サービスバス40のサービスルートテーブル46にサービス73はホップ数0で存在しているので、自ノードのサービスであると判定できる。すると、サービスエントリデータテーブル、入力パラメータテーブル、出力パラメータテーブルを参照して、サービス73の情報を取得する(ステップS123)。
次に、受取ったルート情報(サービスバス30のみ)に、自ノード(サービスバス40)を加えた形で、ルート情報をメモリ47aに保存する(ステップS124)。ここまで完了したら、サービスエントリ情報、入出力パラメータ情報、ルート情報をサービスバス30に返却する。
サービスバス30では、受取ったルート情報をメモリ37aに保存し、更に、入出力パラメータ情報もメモリ37aに保存してキャッシュを作成し(ステップS125,S126)、アプリケーション71に対して応答を返却する。サービスAに応答を返却する際に、要求元サービスID=A、アクセス先サービスID=C、サービスタイプ=起動型、入力パラメータ=P1,P2,…、出力パラメータ=O1,O2,…をデータとして渡す。
次に、アプリケーション71がサービス73へのアクセス実行を行う(ステップS127)。アプリケーション71は、サービスバス30に対してアクセス実行要求を出す。このときのデータは、要求元サービスID=A、アクセス先サービスID=C、入力パラメータ=P1=XX,P2=XX…である。
サービスバス30では、アクセス実行要求を受取ると図14のアクセス実行処理に従い、入力パラメータのキャッシュとアプリケーション71が送信してきた入力パラメータの比較を行った後、メモリ37a上のルート情報を参照して、隣接するサービスバス40にアクセス開始要求を出す(ステップS129)。この情報もアプリケーション71がサービスバス30に送信したデータと同じく、要求元サービスID=A、アクセス先サービスID=C、入力パラメータ=P1=XX,P2=XX…を送信する。
サービスバス40は、この情報を受取ると図14のアクセス実行処理に従い、メモリ上のルート情報を参照し、自ノードのサービスへのアクセスであることが判定できるため、サービスエントリテーブル42aを参照して、サービス73が使用するSMTPのプロトコルスタック43に対してサービス73の位置(10.20.30.21)と入力パラメータ=P1=XX,P2=XX…を渡す(ステップS130)。
これにより、プロトコルスタック43は、サービス73に入力パラメータ=P1=XX,P2=XX…を届ける(ステップS131)。プロトコルスタック43は、サービス73からの出力パラメータ=O1=XX,O2=XX…を受取り(ステップS132)、サービスバス40のメモリ47a上のルート情報から、逆方向のサービスバス30に処理結果を返却する(ステップS133)。
サービスバス30では、サービスバス40と同様に、サービスエントリテーブル32aを参照し、アプリケーション71が使用するSOAPのプロトコルスタック33に対して応答依頼を出し、アプリケーション71に出力パラメータ=O1=XX,O2=XX…が届けられる(ステップS134)。こうして、アプリケーション71からサービス73へのアクセスが完了する。
従来のサービスバスでは、保守者がサービス毎のエンドポイントデータ登録を行い、かつ、アプリケーションとアプリケーションが接続サービスの組合せ毎にエンドポイントデータ32登録が必要であった。これは、10(通り)のサービスが接続するサービスバスでは、10のエンドポイントデータ登録が必要になり、更に、アプリケーションを10(通り)接続して、各アプリケーションが10のサービス全てに接続しようとすると、10×10=100個のエンドポイントデータの登録が必要であることを意味する。
アプリケーションやサービスが10くらいならまだ良いかもしれないが、100や1000のアプリケーションやサービスを扱うとなると、その2乗の保守手順が必要になり、とても管理しきれない。
上記実施形態では、エンドポイントデータの登録は、各アプリケーションやサービスが自律で行うことが可能となるため、エンドポイント登録に関する保守手順は不要になる。保守者は、サービスバスノードの登録を行い、接続させる隣接ノードの登録のみを行えば良いので、アプリケーションやサービスの数に依存することなく、管理するサービスのネットワークトポロジ(サーバ接続構成)のみを管理するだけで良く、従来に比較して保守手順を軽減できる。
また、従来のサービスバスでは、複数サービスバスの連携が不可能であったため、アプリケーション数やサービス数が増え、アクセス頻度が大きくなると、サーバ処理能力を超えてしまうので、複数のサーバを用意して負荷分散させるためには、サービスやアプリケーションを少数に分割してサーバに接続させる方法しかできなかった。
このようにした場合でも、1台のサーバに収容できるサービスは限られてくるので、運用形態(使うサービスを限定したアプリケーションを集める等)の違うサーバ複数を用意して分割しておくしかなかった。
上記実施形態により、複数サービスバスの連携が可能となったことで、1台に収容可能なサービス数やアプリケーション数を超えた場合には、更に1台のサービスバスを用意し、新規のサービスやアプリケーションを新規のサービスバスにだけ接続させることができ、サービスやアプリケーションの追加を容易に実施できる。更に、ビジネス的な効果としては、従来別々の事業者が運用していたサービスバスを他事業者に公開してサービスを利用できることが可能となり、事業者間でアクセスできなかったサービスに今までと同じプラットフォームからアクセスできる。こうなると、利用料を事業者間で支払うことによる新たなビジネスが生まれることになる。
(付記1)
複数のサービスバスを連携させるサービスバス連携方法において、
追加するサービスバスに接続先である既存のサービスバスのノード識別子と位置を入力して、前記追加するサービスバスにおける自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに前記既存のサービスバスのノード識別子と位置を登録し、
前記追加するサービスバスから前記既存のサービスバスにバスノードテーブル更新通知を行い、
前記バスノードテーブル更新通知により前記既存のサービスバスのバスノードテーブルに前記追加するサービスバスのノード識別子と位置を登録する
ことを特徴とするサービスバス連携方法。
(付記2)
付記1記載のサービスバス連携方法において、
前記バスノードテーブル更新通知により前記既存のサービスバスにおけるサービスにアクセスするためのサービスバス識別子とサービス識別子とホップ数を保存するサービスルートテーブルを読み出して前記追加するサービスバスに送信し、
前記追加するサービスバスで受信した前記既存のサービスバスのバスノードテーブルに基づいて前記追加するサービスバスのサービスルートテーブルの更新を行う
ことを特徴とするサービスバス連携方法。
(付記3)
付記2記載のサービスバス連携方法において、
任意のサービスバスに登録するサービスのサービス識別子と位置と入出力情報を入力して、前記任意のサービスバスのエンドポイントデータに前記登録するサービスのサービス識別子と位置と入出力情報を登録し、
前記任意のサービスバスのサービスルートテーブルに前記任意のサービスバスのノード識別子と前記登録するサービスのサービス識別子とホップ数を登録し、
前記サービスを登録した前記任意のサービスバスのサービスルートテーブルを隣接するサービスバスに送信し、
前記隣接するサービスバスのサービスルートテーブルに前記任意のサービスバスから送信されたサービスルートテーブルにより更新し、
前記隣接するサービスバスのサービスルートテーブルを前記任意のサービスバスに送信し、
前記任意のサービスバスのサービスルートテーブルを受信した前記隣接するサービスバスのサービスルートテーブルにより更新する
ことを特徴とするサービスバス連携方法。
(付記4)
付記3記載のサービスバス連携方法において、
前記隣接するサービスバスの更新したサービスルートテーブルを前記隣接するサービスバスに更に隣接するサービスバスに送信する、
ことを特徴とするサービスバス連携方法。
(付記5)
付記3記載のサービスバス連携方法において、
前記任意のサービスバスは、前記任意のサービスバスのサービスルートテーブルの更新分を前記隣接するサービスバスに送信し、
前記隣接するサービスバスは、前記隣接するサービスバスのサービスルートテーブルの全てを前記任意のサービスバスに送信する
ことを特徴とするサービスバス連携方法。
(付記6)
付記2又は3記載のサービスバス連携方法において、
前記サービスルートテーブルの更新は、サービス識別子が同一のものについて、自サービスバスのサービスルートテーブルのホップ数が、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値以上の場合に行う
ことを特徴とするサービスバス連携方法。
(付記7)
付記2乃至6のいずれか1項記載のサービスバス連携方法において、
アプリケーションからサービスに対するアクセス開始を入力して、前記アプリケーションが接続されたサービスバスから前記サービスが接続されたサービスバスまで隣接するサービスバスにアクセス開始要求を順に送信し、
前記アクセス開始要求の応答により、前記アプリケーションが接続されたサービスバスから前記サービスが接続されているサービスバスまでの隣接する全てのサービスバスのノード識別子をルート情報として得る
ことを特徴とするサービスバス連携方法。
(付記8)
付記7記載のサービスバス連携方法において、
前記サービスが接続されているサービスバスに格納されているエンドポイントデータから前記サービスに対応する入出力情報を得て、前記アクセス開始要求の応答として前記アプリケーションに通知する
ことを特徴とするサービスバス連携方法。
(付記9)
付記8記載のサービスバス連携方法において、
前記アプリケーションからサービスに対するアクセス実行を入力して、前記アプリケーションが接続されたサービスバスで前記ルート情報を用いて前記サービスバスまでアクセス実行要求を送信する
ことを特徴とするサービスバス連携方法。
(付記10)
複数のサービスバスを連携させるサービスバスシステムのサービスバスにおいて、
外部端末から入力される接続先である既存のサービスバスのノード識別子と位置を、自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに登録する第1登録手段と、
前記既存のサービスバスにバスノードテーブル更新通知を行う更新通知手段と、
受信した前記バスノードテーブル更新通知により前記バスノードテーブルに隣接する他のサービスバスのノード識別子と位置を登録する第2登録手段と、
を有することを特徴とするサービスバス。
(付記11)
付記10記載のサービスバスにおいて、
受信した前記バスノードテーブル更新通知によりサービスにアクセスするためのサービスバス識別子とサービス識別子とホップ数を保存するサービスルートテーブルを読み出して前記前記バスノードテーブル更新通知を送信したサービスバスに送信する第1送信手段と、
受信した前記サービスルートテーブルに基づいて自サービスバスのサービスルートテーブルを更新する第1更新手段と、
を有することを特徴とするサービスバス。
(付記12)
付記11記載のサービスバスにおいて、
任意のサービスバスに登録するサービスのサービス識別子と位置と入出力情報を入力して、前記任意のサービスバスのエンドポイントデータに前記登録するサービスのサービス識別子と位置と入出力情報を登録する第3登録手段と、
前記任意のサービスバスのサービスルートテーブルに前記任意のサービスバスのノード識別子と前記登録するサービスのサービス識別子とホップ数を登録する第4登録手段と、
前記サービスを登録した前記任意のサービスバスのサービスルートテーブルを隣接するサービスバスに送信する第2送信手段と、
前記隣接するサービスバスのサービスルートテーブルに前記任意のサービスバスから送信されたサービスルートテーブルにより更新する第2更新手段と、
前記隣接するサービスバスのサービスルートテーブルを前記任意のサービスバスに送信する第3送信手段と、
前記任意のサービスバスのサービスルートテーブルを受信した前記隣接するサービスバスのサービスルートテーブルにより更新する第3更新手段と、
を有することを特徴とするサービスバス。
(付記13)
付記12記載のサービスバスにおいて、
前記隣接するサービスバスの更新したサービスルートテーブルを前記隣接するサービスバスに更に隣接する他のサービスバスに送信する第4送信手段を
有することを特徴とするサービスバス。
(付記14)
付記13記載のサービスバスにおいて、
前記第3送信手段は、前記隣接するサービスバスのサービスルートテーブルの全てを前記任意のサービスバスに送信し、
前記第4送信手段は、前記隣接するサービスバスのサービスルートテーブルの更新分を前記更に隣接する他のサービスバスに送信する
ことを特徴とするサービスバス。
(付記15)
付記11記載のサービスバスにおいて、
前記第1更新手段は、サービス識別子が同一のものについて、自サービスバスのサービスルートテーブルのホップ数が、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値以上の場合に行う
ことを特徴とするサービスバス。
(付記16)
付記12記載のサービスバスにおいて、
前記第2更新手段は、サービス識別子が同一のものについて、自サービスバスのサービスルートテーブルのホップ数が、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値以上の場合に行う
ことを特徴とするサービスバス。
(付記17)
付記15記載のサービスバスにおいて、
前記第1更新手段は、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値が予め設定された上限数未満の場合に行う
ことを特徴とするサービスバス。
(付記18)
付記16記載のサービスバスにおいて、
前記第2更新手段は、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値が予め設定された上限数未満の場合に行う
ことを特徴とするサービスバス。
(付記19)
付記6記載のサービスバス連携方法において、
前記サービスルートテーブルの更新は、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値が予め設定された上限数未満の場合に行う
ことを特徴とするサービスバス連携方法。
サービスバスの概念を示す図である。 サービスアクセスの形態を説明するための図である。 従来のサービスバスの一例の構成図である。 サービスバスシステムの一実施形態の構成図である。 サービスバス登録の動作概要を示す図である。 サービスバス登録処理のフローチャートである。 サービスルートテーブル更新処理のフローチャートである。 サービスルートテーブルの様子を示す図である。 サービス登録の動作概要を示す図である。 サービス登録処理のフローチャートである。 アクセス開始動作の概要を示す図である。 アクセス開始処理のフローチャートである。 アクセス実行動作の概要を示す図である。 アクセス実行処理のフローチャートである。 複数サービスバスが連携した実施形態を示す図である。 ノード新規追加のシーケンスである。 ノード追加のシーケンスである。 サービス登録のシーケンスである。 サービスアクセスのシーケンスである。
符号の説明
30,40 サービスバス(ノード)
31,41 オーダ受付部
32,42 エンドポイントデータ
33,43 プロトコルスタック
34,44 サービスバス登録部
35,45 バスノードテーブル
36,46 サービスルートテーブル
37,47 サービス通知部
38 アプリケーション
39,49 保守端末
48 サービス

Claims (10)

  1. 複数のサービスバスを連携させるサービスバス連携方法において、
    追加するサービスバスに接続先である既存のサービスバスのノード識別子と位置を入力して、前記追加するサービスバスにおける自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに前記既存のサービスバスのノード識別子と位置を登録し、
    前記追加するサービスバスから前記既存のサービスバスにバスノードテーブル更新通知を行い、
    前記バスノードテーブル更新通知により前記既存のサービスバスのバスノードテーブルに前記追加するサービスバスのノード識別子と位置を登録する
    ことを特徴とするサービスバス連携方法。
  2. 請求項1記載のサービスバス連携方法において、
    前記バスノードテーブル更新通知により前記既存のサービスバスにおけるサービスにアクセスするためのサービスバス識別子とサービス識別子とホップ数を保存するサービスルートテーブルを読み出して前記追加するサービスバスに送信し、
    前記追加するサービスバスで受信した前記既存のサービスバスのバスノードテーブルに基づいて前記追加するサービスバスのサービスルートテーブルの更新を行う
    ことを特徴とするサービスバス連携方法。
  3. 請求項2記載のサービスバス連携方法において、
    任意のサービスバスに登録するサービスのサービス識別子と位置と入出力情報を入力して、前記任意のサービスバスのエンドポイントデータに前記登録するサービスのサービス識別子と位置と入出力情報を登録し、
    前記任意のサービスバスのサービスルートテーブルに前記任意のサービスバスのノード識別子と前記登録するサービスのサービス識別子とホップ数を登録し、
    前記サービスを登録した前記任意のサービスバスのサービスルートテーブルを隣接するサービスバスに送信し、
    前記隣接するサービスバスのサービスルートテーブルに前記任意のサービスバスから送信されたサービスルートテーブルにより更新し、
    前記隣接するサービスバスのサービスルートテーブルを前記任意のサービスバスに送信し、
    前記任意のサービスバスのサービスルートテーブルを受信した前記隣接するサービスバスのサービスルートテーブルにより更新する
    ことを特徴とするサービスバス連携方法。
  4. 請求項3記載のサービスバス連携方法において、
    前記隣接するサービスバスの更新したサービスルートテーブルを前記隣接するサービスバスに更に隣接する他のサービスバスに送信する、
    ことを特徴とするサービスバス連携方法。
  5. 請求項4記載のサービスバス連携方法において、
    前記隣接するサービスバスは、前記隣接するサービスバスのサービスルートテーブルの全てを前記任意のサービスバスに送信し、前記隣接するサービスバスのサービスルートテーブルの更新分を前記更に隣接する他のサービスバスに送信する
    ことを特徴とするサービスバス連携方法。
  6. 請求項2又は3記載のサービスバス連携方法において、
    前記サービスルートテーブルの更新は、サービス識別子が同一のものについて、自サービスバスのサービスルートテーブルのホップ数が、隣接したサービスバスから受信したサービスルートテーブルのホップ数に1を加算した値以上の場合に行う
    ことを特徴とするサービスバス連携方法。
  7. 請求項2乃至6のいずれか1項記載のサービスバス連携方法において、
    アプリケーションからサービスに対するアクセス開始を入力して、前記アプリケーションが接続されたサービスバスから前記サービスが接続されたサービスバスまで隣接するサービスバスにアクセス開始要求を順に送信し、
    前記アクセス開始要求の応答により、前記アプリケーションが接続されたサービスバスから前記サービスが接続されているサービスバスまでの隣接する全てのサービスバスのノード識別子をルート情報として得る
    ことを特徴とするサービスバス連携方法。
  8. 請求項7記載のサービスバス連携方法において、
    前記サービスが接続されているサービスバスに格納されているエンドポイントデータから前記サービスに対応する入出力情報を得て、前記アクセス開始要求の応答として前記アプリケーションに通知する
    ことを特徴とするサービスバス連携方法。
  9. 請求項8記載のサービスバス連携方法において、
    前記アプリケーションからサービスに対するアクセス実行を入力して、前記アプリケーションが接続されたサービスバスで前記ルート情報を用いて前記サービスバスまでアクセス実行要求を送信する
    ことを特徴とするサービスバス連携方法。
  10. 複数のサービスバスを連携させるサービスバスシステムのサービスバスにおいて、
    外部端末から入力される接続先である既存のサービスバスのノード識別子と位置を、自サービスバス及び隣接サービスバスの識別子と位置を保存するバスノードテーブルに登録する第1登録手段と、
    前記既存のサービスバスにバスノードテーブル更新通知を行う更新通知手段と、
    受信した前記バスノードテーブル更新通知により前記バスノードテーブルに隣接する他のサービスバスのノード識別子と位置を登録する第2登録手段と、
    を有することを特徴とするサービスバス。
JP2008166154A 2008-06-25 2008-06-25 サービスバス連携方法及びサービスバス Expired - Fee Related JP5136238B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008166154A JP5136238B2 (ja) 2008-06-25 2008-06-25 サービスバス連携方法及びサービスバス
US12/417,001 US7953918B2 (en) 2008-06-25 2009-04-02 Service bus linking method and service bus for linking plurality of service buses together

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008166154A JP5136238B2 (ja) 2008-06-25 2008-06-25 サービスバス連携方法及びサービスバス

Publications (2)

Publication Number Publication Date
JP2010009218A true JP2010009218A (ja) 2010-01-14
JP5136238B2 JP5136238B2 (ja) 2013-02-06

Family

ID=41448906

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008166154A Expired - Fee Related JP5136238B2 (ja) 2008-06-25 2008-06-25 サービスバス連携方法及びサービスバス

Country Status (2)

Country Link
US (1) US7953918B2 (ja)
JP (1) JP5136238B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977758B2 (en) 2012-01-27 2015-03-10 Fujitsu Limited Service bus system, service bus device, and method for assuring connection uniqueness
US8984126B2 (en) 2011-11-09 2015-03-17 Nec Corporation Service collaboration device, service collaboration method, and computer-readable recording medium
WO2015047439A1 (en) * 2013-09-28 2015-04-02 Mcafee, Inc. Service-oriented architecture
US9146781B2 (en) 2011-02-18 2015-09-29 Canon Kabushiki Kaisha Web service system, server management apparatus, and web service providing method
US9300765B2 (en) 2012-06-29 2016-03-29 International Business Machines Corporation Exchange of information between processing servers
US11418605B2 (en) 2013-09-28 2022-08-16 Musarubra Us Llc Efficient request-response routing over a data exchange layer

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019138335A1 (en) * 2018-01-09 2019-07-18 Cleartrail Technologies Private Limited Platform to control one or more systems and explore data across one or more systems
CN116248430A (zh) * 2022-12-30 2023-06-09 天翼云科技有限公司 一种数据处理方法、装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003087265A (ja) * 2001-09-12 2003-03-20 Kddi Corp サービス発見方法及び装置、並びにコンピュータプログラム
JP2006171917A (ja) * 2004-12-13 2006-06-29 Sony Internatl Europ Gmbh 無線マルチホップアドホックネットワークのためのプロトコル

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001053925A (ja) * 1999-08-10 2001-02-23 Matsushita Graphic Communication Systems Inc 通信制御装置及びシリアルバス管理装置
JP4536981B2 (ja) * 1999-08-31 2010-09-01 キヤノン株式会社 情報信号処理装置及び情報信号処理方法
US6647446B1 (en) * 2000-03-18 2003-11-11 Sony Corporation Method and system for using a new bus identifier resulting from a bus topology change
JP3663121B2 (ja) * 2000-10-30 2005-06-22 シャープ株式会社 ノード構成情報管理方法及び無線ネットワークシステム
JP2003274068A (ja) 2002-03-19 2003-09-26 Fuji Xerox Co Ltd サービス提供用ソフトウェアおよびサービス提供装置
WO2008036777A2 (en) * 2006-09-19 2008-03-27 Bea Systems, Inc. System and method for supporting service networks in a service-oriented architecture environment
US20080183479A1 (en) * 2007-01-25 2008-07-31 Masaru Iwashita Business process reconstruction method, and its program and computer
US8826266B2 (en) * 2007-11-29 2014-09-02 Red Hat, Inc. Updates of message consumers
JP5104591B2 (ja) * 2008-06-27 2012-12-19 富士通株式会社 バスシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003087265A (ja) * 2001-09-12 2003-03-20 Kddi Corp サービス発見方法及び装置、並びにコンピュータプログラム
JP2006171917A (ja) * 2004-12-13 2006-06-29 Sony Internatl Europ Gmbh 無線マルチホップアドホックネットワークのためのプロトコル

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146781B2 (en) 2011-02-18 2015-09-29 Canon Kabushiki Kaisha Web service system, server management apparatus, and web service providing method
US8984126B2 (en) 2011-11-09 2015-03-17 Nec Corporation Service collaboration device, service collaboration method, and computer-readable recording medium
US8977758B2 (en) 2012-01-27 2015-03-10 Fujitsu Limited Service bus system, service bus device, and method for assuring connection uniqueness
US9300765B2 (en) 2012-06-29 2016-03-29 International Business Machines Corporation Exchange of information between processing servers
US9537940B2 (en) 2012-06-29 2017-01-03 International Business Machines Corporation Exchange of information between processing servers
WO2015047439A1 (en) * 2013-09-28 2015-04-02 Mcafee, Inc. Service-oriented architecture
US10171594B2 (en) 2013-09-28 2019-01-01 Mcafee, Llc Service-oriented architecture
US11076003B2 (en) 2013-09-28 2021-07-27 Mcafee, Llc Service-oriented architecture
US11418605B2 (en) 2013-09-28 2022-08-16 Musarubra Us Llc Efficient request-response routing over a data exchange layer
US11902388B2 (en) 2013-09-28 2024-02-13 Musarubra Us Llc Service-oriented architecture

Also Published As

Publication number Publication date
JP5136238B2 (ja) 2013-02-06
US7953918B2 (en) 2011-05-31
US20090327557A1 (en) 2009-12-31

Similar Documents

Publication Publication Date Title
JP5136238B2 (ja) サービスバス連携方法及びサービスバス
US7844745B1 (en) Alternate home subscriber server (HSS) node to receive a request if a first HSS node cannot handle said request
US7747722B2 (en) Device management method for device management system
US8095670B2 (en) Protocol for enabling dynamic and scalable federation of enterprise service buses
US8195764B2 (en) Information delivery system, delivery request program, transfer program, delivery program, and the like
US6266694B1 (en) Architecture for network manager
JP4418897B2 (ja) 情報配信システム、情報更新プログラム、及び情報更新方法等
EP2198579B1 (en) Protocol for enabling dynamic and hierarchical interconnection of autonomous federations of enterprise service
CN102763300A (zh) 控制虚拟电力电路
JP2001053776A (ja) ネットワークシステム、スイッチ、および、サーバ
KR101602760B1 (ko) p2p 연결을 이용한 클라우드 서비스 트래픽의 절감 방법 및 그 장치
CN100583798C (zh) 用于多域虚拟专用网络配置的方法和系统
WO1999025101A2 (en) A routing functionality application in a data communications network with a number of hierarchical nodes
CN101406006A (zh) 信息通信系统,信息通信方法,包括在信息通信系统中的节点装置以及记录信息处理程序的记录介质
KR100757896B1 (ko) 홈 네트워크 시스템 및 그 시스템에서의 원격 홈서비스설치 방법
KR20130060270A (ko) 네트워크 정보 처리 시스템, 네트워크 정보 처리 장치, 및 정보 처리 방법
JP4622755B2 (ja) 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
JP5001797B2 (ja) ネットワーク情報設定方法、ネットワーク情報設定システムおよびノード装置
CN113992492B (zh) 基于扩展tcp协议实现单地址单端口连接的管理方法
JP3394110B2 (ja) ユーザシステムネットワークとその構築方法及び接続方法
JP2001067279A (ja) 情報配付システムおよび記録媒体
JPH1141252A (ja) クライアント・サーバシステム
CN115955404B (zh) 物联网场景管理方法、装置、设备及介质
JP4951647B2 (ja) ネットワーク情報設定方法、ノード装置、プログラムおよびネットワーク情報設定システム
EP1176506B1 (en) Discovering local networked resources

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120731

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120925

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121029

R150 Certificate of patent or registration of utility model

Ref document number: 5136238

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151122

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees