JP5099073B2 - ソフトウェア間通信の中継方法、装置、及びプログラム - Google Patents
ソフトウェア間通信の中継方法、装置、及びプログラム Download PDFInfo
- Publication number
- JP5099073B2 JP5099073B2 JP2009112321A JP2009112321A JP5099073B2 JP 5099073 B2 JP5099073 B2 JP 5099073B2 JP 2009112321 A JP2009112321 A JP 2009112321A JP 2009112321 A JP2009112321 A JP 2009112321A JP 5099073 B2 JP5099073 B2 JP 5099073B2
- Authority
- JP
- Japan
- Prior art keywords
- software
- identifier
- function
- cooperation
- relay server
- 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.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
Description
この技術は、読み込みたいURIを「http://www.example.net/dir/」とした場合に、「http://http-www-example-net.proxy.example.org/dir/」などのように、もともとのURIのスキーマ・ホスト・ポートをドメインの一部にエンコーディングし、パスとクエリを付加する手法である。図16は、「ドメインのエンコーディングによる中継」技術の例を示す図である。この手法のプロキシ経由で異なるサーバA及びBから読み込まれた各ドキュメントは、クライアントコンピュータの同一ブラウザに含まれる各フレーム等に表示される。この場合、各ドキュメントのドメインは、ドメインPの一部に、例えばA.P又はB.Pというようにエンコーディングされる。この場合、各ドキュメントのドメインは、異なるドメインとなる。この手法は、same origin policyによるセキュリティを保ち、SSLの証明書と相性がよく、変換・逆変換の処理効率もよく、またそのURIを見たときに容易に解読することが可能(ヒューマンリーダブル)なエンコーディング方法である。
まず、前述した第1の従来技術における「パラメータによる中継」技術では、もともとは異なるオリジンであったドキュメント同士が中継サーバを経由することで同一のオリジンとなるため、same origin policy によるセキュリティ機構が動作しない。このため、ドキュメント間では自由な通信ができるが、いかなる通信も許容してしまうため、情報の漏洩や改竄が起きる可能性があるという問題点を有している。
決定ステップは、連携元ソフトウェアから、第1のイベント通知を受信したときに、連携元ソフトウェアの識別子とその連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応付けて、その連携元ソフトウェアとの通信が行われる連携先ソフトウェアの識別子とその連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを保持した連携定義テーブルを参照し、その第1のイベント通知に含まれるその連携元ソフトウェアの識別子とその連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応する、連携先ソフトウェアの識別子とその連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを決定する。
図1は、Webドキュメント間通信システムの第1の実施形態の基本構成図である。
前述したように、same origin policyによるセキュリティ機構の存在により、Webアプリケーション(ソフトウェア)間の通信は、通信はできるが全ての通信を許可してしまうため安全でない、若しくは、そもそも通信ができない、のいずれかであった。
ステップS201:
まず、ブラウザ103を利用するユーザが、中継サーバ101に対してメタデータのURI(Uniform Resource Identifier)を渡し、中継サーバ101がそのメタデータに基づいて、ウィジェット(ブラウザ内で、該ブラウザとは独立して実行されるソフトウェアをいう。)をブラウザ103に追加表示させる。この例では、ブラウザ103において、アドレス帳と地図のウィジェットが読み込まれる。
各ウィジェットがサーバ102より中継サーバ101経由で読み込まれる際に、中継サーバ101が、各ウィジェットに対して、URIの置換、発行関数へのコード(スクリプト)注入、受信関数へのコード注入を行う。
ユーザは、中継サーバ101に対して、発行ウィジェット及び発行関数と受信ウィジェット及び受信関数の組を指定することにより、連携定義を指定する。この例では、「アドレス帳ウィジェットにおいて住所が選択されたら地図ウィジェットにて検索が実行される」という連携関係が、下記記述によって定義される。この記述は、ウィジェットw1において住所を選択する関数「AddressSelected」が実行されたら、ウィジェットw2において地図を検索する関数「SearchMapA」が実行されるという連携関係を表している。
w1:AddressSelected -> w2:SearchMapA
中継サーバ101が、ステップS203にてユーザによって指定された連携定義を、内部の連携定義テーブルに登録する。或いは、この連携定義は、例えば中継サーバ101において、予めプリセットされてもよい。
アドレス帳ウィジェットにおいて、住所が選択されると、ステップS202にて発行関数へ注入されたスクリプトにより、中継サーバ101にイベントが発行される。
中継サーバ101は、ステップS204にて定義した連携定義テーブルを参照して、配信先を決定する。この例では、地図ウィジェットの地図検索が配信先となる。
中継サーバ101は、ステップS202にて受信関数に注入されたiframeを用いて、イベントをクライアントに送信する。この結果、地図ウィジェットにおいて地図検索が実行されることになる。
図8は、第2の実施形態における読込みシーケンスを示す動作フローチャートである。この動作フローチャートは、図2に示される前述した第1の実施形態の動作フローチャートのステップS201とS202の処理を詳細化したものである。
追加削除部701は、ユーザテーブル702を参照し、要求ユーザが正規のユーザであるか否かをチェックする(図8のステップS802)。
そして、追加削除部701は、そのメタデータを解析し(図8のステップS804)、そのメタデータに一意なウィジェットインスタンスIDを割り当てて、そのメタデータの登録情報をインスタンスデータベース703に登録する(図8のステップS805)。
プロキシ部704内のURI置換部705は、置換済みURIから逆変換により、ウィジェットインスタンスIDと元のURIを取り出す(図8のステップS808)。
もしコンテンツがテキストベースのコンテンツであった場合、プロキシ部704内のURI置換部705は、対象サーバ102から渡されたコンテンツの内容のうちURIの部分に対して置換を行う(図8のステップS810)。
この結果、住所選択に対応する発行関数が呼び出され(図10のステップS1002)、その発行関数に注入されたスクリプトによって、子フレームから中継サーバ101の発行受付部709にリクエストが送られる。発行受付部709は、配信割振部710に、発行ウィジェットインスタンスID、発行関数名、関数引数を渡す(図10のステップS1003)。
図11は、中継サーバ101内のデータベースのスキーマを示す図である。
中継サーバ101は、リクエストを、以下の4種類処理に振り分けて処理する。
中継サーバ101のコンテンツをレスポンスとして返したり、中継サーバ101上のサーバサイドプログラムを実行しその結果を返したりする。
中継サーバ101は、リクエストされたURIを逆変換して元のURIにし、その元のURIに対してリクエストを送り、そのレスポンスを中継サーバ101で変換し、レスポンスとして返す。
中継サーバ101がスクリプトを注入した発行関数が呼び出されたときに、中継サーバ101に対してリクエストが発生するようになっている。
受信関数を持つウィジェットに対して中継サーバ101がiframe streamingのためのiframeを埋め込んであるため、そのiframeからのリクエスト101が中継サーバに対して発生する。イベントの配信が起きたときに中継サーバ101がこのストリームを利用してイベントを配信する。
中継サーバ101は、HTTP(Hypertext Transfer Protocol)リクエストのHostヘッダに書かれているドメイン名をみて、それが中継用の変換済みドメインであるか否かを判断する(図12のステップS1202)。
パスがComet用の特殊な予約済みパスでなかった場合には、中継サーバ101に対する中継のリクエストであると判断する。中継サーバ101は、リクエストされたURIを逆変換して元のURIにする(図12のステップS1206)。そして、中継サーバ101は、その元のURIに対してリクエストを中継し、対象サーバ102からのレスポンスを変換して中継サーバ101のレスポンスとして返す(図12のステップS1207)。この動作は、前述したように、プロキシ部704によって実行される。
メソッドがPOSTであった場合には、中継サーバ101は、発行関数からのイベント通知であると判断し、前述した図10のステップS1004からS1006のイベント発行処理を実行する(図12のステップS1203→S1204)。
図13では、社内のアドレス帳とメーラ、及び社外の地図のアプリケーションが連携する例が示されている。アドレス帳には氏名、メールアドレス、住所が載っている。この住所録とメーラと地図を連携させたいのであるが、社内のメーラにはメールアドレスがわたるようにし、社外の地図には住所のみがわたるようにして、それ以外のデータがわたらないようにしたい。
図14は、第1又は第2の実施形態の中継サーバ101を実現できるコンピュータのハードウェア構成の一例を示す図である。
可搬記録媒体駆動装置1406は、光ディスクやSDRAM、コンパクトフラッシュ(登録商標)、DVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)等の可搬記録媒体1409を収容するもので、外部記憶装置1405の補助の役割を有する。
第1又は第2の実施形態による中継サーバ101の機能は、それに必要な処理内容を記述したプログラムをCPU1401が実行することで実現される。そのプログラムは、例えば外部記憶装置1405や可搬記録媒体1409に記録して配布してもよく、或いはネットワーク接続装置1407によりネットワークを介して他のコンピュータから取得できるようにしてもよい。
102 サーバ、対象サーバ
103 ブラウザ
701 追加削除部
702 ユーザテーブル
703 インスタンスデータベース
703−1 ウィジェットインスタンステーブル
703−2 発行関数テーブル
703−3 受信関数テーブル
704 プロキシ部
705 URI置換部
706 コード注入部
707 連携定義部
708 連携定義テーブル
709 発行受付部
710 配信割振部
711 配信部
1401 CPU
1402 メモリ
1403 入力装置
1404 出力装置
1405 外部記憶装置
1406 可搬記録媒体駆動装置
1407 ネットワーク接続装置
1408 バス
1409 可搬記録媒体
Claims (6)
- 第1の対象サーバから中継サーバを経由して取得した第1のWebドキュメントに基づいて、クライアントのブラウザ内で実行される連携元ソフトウェアと、第2の対象サーバから該中継サーバを経由して取得した第2のWebドキュメントに基づいて、該ブラウザ内で実行される連携先ソフトウェアとの間の通信を、該中継サーバにおいて中継する中継方法において、
前記中継サーバが、
前記第1のWebドキュメントに、前記連携元ソフトウェアの識別子と該連携元ソフトウェア内で実行される第1の関数の識別子と該第1の関数に与えられる引数を含む第1のイベント通知を、前記連携元ソフトウェアが前記中継サーバに送信するための第1の命令を注入する第1の注入ステップと、
前記第2のWebドキュメントに、第2の関数の識別子と前記引数を含む前記中継サーバからの第2のイベント通知に基づいて、前記連携先ソフトウェアが該第2の関数を該引数により実行するための第2の命令を注入する第2の注入ステップと、
前記第1の命令が注入された第1のWebドキュメントおよび前記第2の命令が注入された第2のWebドキュメントを前記クライアントに送信する第1の送信ステップと、
前記連携元ソフトウェアから、前記第1のイベント通知を受信したときに、連携元ソフトウェアの識別子と該連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応付けて、該連携元ソフトウェアとの通信が行われる連携先ソフトウェアの識別子と該連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを保持した連携定義テーブルを参照し、該第1のイベント通知に含まれる該連携元ソフトウェアの識別子と該連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応する、連携先ソフトウェアの識別子と該連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを決定するステップと、
前記決定された組み合わせに含まれる前記連携先ソフトウェアの識別子に基づいて特定される連携先ソフトウェアに対して、前記第2のイベント通知として、該決定された組み合わせに含まれる前記第2の関数の識別子と前記引数とを送信する第2の送信ステップと、
を実行することを特徴とするソフトウェア間通信の中継方法。 - 前記第1の命令は、前記連携元ソフトウェアで前記第1の関数が実行されたときに、該連携元ソフトウェアの識別子と該第1の関数の識別子と該第1の関数に与えられた引数を含む前記第1のイベント通知を、前記中継サーバに送信するための命令である、
ことを特徴とする請求項1記載のソフトウェア間通信の中継方法。 - 前記第2の命令は、前記中継サーバから前記第2のイベント通知を受信したときに、該第2のイベント通知に含まれる前記第2の関数の識別子と前記引数に基づいて、該第2の関数を呼び出しかつ該第2の関数に該引数を与える命令である、
ことを特徴とする請求項1又は2記載のソフトウェア間通信の中継方法。 - 前記第1の送信ステップは、前記第1のWebドキュメントの送信元アドレスと前記第2のWebドキュメントの送信元アドレスとが、前記クライアントにおいて互いに異なると判定されるように、各Webドキュメントに一意のアドレスを割り当てて該クライアントに送信することを特徴とする請求項1、2または3記載のソフトウェア間通信の中継方法。
- クライアントからのリクエストに基づいて第1の対象サーバから第1のWebドキュメントを取得して該クライアントに中継したときに該クライアント内のブラウザ内で実行される連携元ソフトウェアと、前記クライアントからのリクエストに基づいて第2の対象サーバから第2のWebドキュメントを取得して前記クライアントに中継したときに前記ブラウザ内で実行される連携先ソフトウェアとの間の通信を中継する中継装置において、
前記第1のWebドキュメントに、前記連携元ソフトウェアの識別子と該連携元ソフトウェア内で実行される第1の関数の識別子と該第1の関数に与えられる引数を含む第1のイベント通知を、前記連携元ソフトウェアから自中継装置に送信させるための第1の命令を注入する第1の注入部と、
前記第2のWebドキュメントに、第2の関数の識別子と前記引数を含む自中継装置からのからの第2のイベント通知に基づいて、前記連携先ソフトウェアが該第2の関数を該引数により実行するための第2の命令を注入する第2の注入部と、
前記第1の命令が注入された第1のWebドキュメントおよび前記第2の命令が注入された第2のWebドキュメントを前記クライアントに送信する第1の送信部と、
前記連携元ソフトウェアから、前記第1のイベント通知を受信したときに、連携元ソフトウェアの識別子と該連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応付けて、該連携元ソフトウェアとの通信が行われる連携先ソフトウェアの識別子と該連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを保持した連携定義テーブルを参照し、該第1のイベント通知に含まれる該連携元ソフトウェアの識別子と該連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応する、連携先ソフトウェアの識別子と該連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを決定する決定部と、
前記決定された組み合わせに含まれる前記連携先ソフトウェアの識別子に基づいて特定される連携先ソフトウェアに対して、前記第2のイベント通知として、該決定された組み合わせに含まれる前記第2の関数の識別子と前記引数とを送信する第2の送信部と、
を含むことを特徴とするソフトウェア間通信の中継装置。 - 第1の対象サーバから中継サーバを経由して取得した第1のWebドキュメントに基づいて、クライアントのブラウザ内で実行される連携元ソフトウェアと、第2の対象サーバから該中継サーバを経由して取得した第2のWebドキュメントに基づいて、該ブラウザ内で実行される連携先ソフトウェアとの間の通信を該中継サーバにおいて中継するプログラムであって、
前記中継サーバに、
前記第1のWebドキュメントに、前記連携元ソフトウェアの識別子と該連携元ソフトウェア内で実行される第1の関数の識別子と該第1の関数に与えられる引数を含む第1のイベント通知を、前記連携元ソフトウェアが前記中継サーバに送信するための第1の命令を注入する第1の注入ステップと、
前記第2のWebドキュメントに、第2の関数の識別子と前記引数を含む前記中継サーバからの第2のイベント通知に基づいて、前記連携先ソフトウェアが該第2の関数を該引数により実行するための第2の命令を注入する第2の注入ステップと、
前記第1の命令が注入された第1のWebドキュメントおよび前記第2の命令が注入された第2のWebドキュメントを前記クライアントに送信する第1の送信ステップと、
前記連携元ソフトウェアから、前記第1のイベント通知を受信したときに、連携元ソフトウェアの識別子と該連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応付けて、該連携元ソフトウェアとの通信が行われる連携先ソフトウェアの識別子と該連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを保持した連携定義テーブルを参照し、該第1のイベント通知に含まれる該連携元ソフトウェアの識別子と該連携元ソフトウェアで実行された第1の関数の識別子の組み合わせに対応する、連携先ソフトウェアの識別子と該連携先ソフトウェアで実行される第2の関数の識別子の組み合わせを決定するステップと、
前記決定された組み合わせに含まれる前記連携先ソフトウェアの識別子に基づいて特定される連携先ソフトウェアに対して、前記第2のイベント通知として、該決定された組み合わせに含まれる前記第2の関数の識別子と前記引数とを送信する第2の送信ステップと、
を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009112321A JP5099073B2 (ja) | 2009-05-01 | 2009-05-01 | ソフトウェア間通信の中継方法、装置、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009112321A JP5099073B2 (ja) | 2009-05-01 | 2009-05-01 | ソフトウェア間通信の中継方法、装置、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010262453A JP2010262453A (ja) | 2010-11-18 |
JP5099073B2 true JP5099073B2 (ja) | 2012-12-12 |
Family
ID=43360465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009112321A Active JP5099073B2 (ja) | 2009-05-01 | 2009-05-01 | ソフトウェア間通信の中継方法、装置、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5099073B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622212B (zh) * | 2011-01-30 | 2015-08-12 | 国际商业机器公司 | 业务混搭的方法及系统 |
CN103649985A (zh) | 2011-05-26 | 2014-03-19 | 谷歌公司 | 提供对话参与者的上下文信息及使能群组通信 |
JP6089363B2 (ja) * | 2013-02-04 | 2017-03-08 | 株式会社ウェブサービス・ディベロップメント | ネットワーク通信システム、サーバプッシュ通信制御サーバ、クライアント端末、サーバプッシュ通信制御方法、情報処理方法、およびプログラム |
US9591350B2 (en) * | 2015-04-10 | 2017-03-07 | Sony Corporation | Sharing web application program guide content items over home networks |
KR101717564B1 (ko) * | 2016-03-21 | 2017-03-20 | 서울여자대학교 산학협력단 | 웹사이트 개발 및 평가를 위한 웹-인-더-루프 시뮬레이션 장치 및 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003337716A (ja) * | 2002-05-20 | 2003-11-28 | Ntt Docomo Inc | 電子機器、データ共用方法、プログラム及び記憶媒体 |
-
2009
- 2009-05-01 JP JP2009112321A patent/JP5099073B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2010262453A (ja) | 2010-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3780507B2 (ja) | セッション情報の引継ぎ方法、アプリケーションサーバ、Webサイト、およびプログラム | |
JP5315062B2 (ja) | セッションを管理するウェブサーバおよびその方法 | |
US8621037B2 (en) | System and method to create bi-directional event subscriptions | |
JP2001515669A (ja) | 分散コンピュータシステムにおける情報へのアクセス権を付与するシステムおよび方法 | |
JP2004029939A (ja) | 通信プロキシ装置、および、通信プロキシ装置を用いたサービス提供方法 | |
JP5099073B2 (ja) | ソフトウェア間通信の中継方法、装置、及びプログラム | |
JP4981461B2 (ja) | 情報秘匿化方法、および情報秘匿装置 | |
JP2012194809A (ja) | プログラム、制御装置および方法 | |
CN104283875A (zh) | 云盘权限管理方法 | |
JP2012069087A (ja) | Webサービス提供システム、サーバ装置、方法およびプログラム | |
CN102882974A (zh) | 一种通过网站识别版本号节省网站访问资源的方法 | |
JP5347429B2 (ja) | ユニフォームリソースロケータ書換方法及び装置 | |
CN102687116A (zh) | 用于异步请求的管理信道 | |
JP2008165447A (ja) | データアクセス装置、データアクセス方法、及び、コンピュータプログラム | |
JP5499524B2 (ja) | 中継プログラムおよび中継装置 | |
JP5488349B2 (ja) | 中継装置、中継方法及び中継プログラム | |
Pautasso et al. | A pattern language for RESTful conversations | |
JP2007257500A (ja) | 被認証装置、被認証プログラム、被認証方法、WebブラウザプラグインおよびWebブラウザブックマークレット | |
De | Designing a RESTful API Interface | |
JP2009123062A (ja) | コンテンツ表示制御システム及び方法 | |
Wilde et al. | RESTful SPARQL? You name it! Aligning SPARQL with REST and resource orientation | |
JP2008077614A (ja) | セッション管理プログラム及びセッション管理方法 | |
JP2007079864A (ja) | コンテンツ管理システム、コンテンツ管理システムの制御方法及びコンテンツ管理システムの制御プログラム | |
KR102598112B1 (ko) | 광고 차단 기능에 대응하여 광고를 제공하기 위한 방법 및 장치 | |
JP4319331B2 (ja) | サービス連携システムおよび情報転用装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120105 |
|
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: 20120828 |
|
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: 20120910 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151005 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5099073 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |