JP4704105B2 - 通信装置、通信システム及び通信方法 - Google Patents

通信装置、通信システム及び通信方法 Download PDF

Info

Publication number
JP4704105B2
JP4704105B2 JP2005150415A JP2005150415A JP4704105B2 JP 4704105 B2 JP4704105 B2 JP 4704105B2 JP 2005150415 A JP2005150415 A JP 2005150415A JP 2005150415 A JP2005150415 A JP 2005150415A JP 4704105 B2 JP4704105 B2 JP 4704105B2
Authority
JP
Japan
Prior art keywords
communication
request
response
command
transmitted
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
JP2005150415A
Other languages
English (en)
Other versions
JP2006330877A (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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2005150415A priority Critical patent/JP4704105B2/ja
Priority to US11/439,366 priority patent/US7831737B2/en
Priority to EP06252698A priority patent/EP1727331B1/en
Priority to DE602006021094T priority patent/DE602006021094D1/de
Publication of JP2006330877A publication Critical patent/JP2006330877A/ja
Application granted granted Critical
Publication of JP4704105B2 publication Critical patent/JP4704105B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls

Description

この発明は、通信相手の装置である相手先装置との間で動作要求及び該動作要求に対する応答である動作応答を送受信する通信装置、このような通信装置の通信相手となる通信装置、互いに動作要求及び該動作要求に対する応答である動作応答を送受信する第1及び第2の通信装置を備えた通信システム、および通信相手の装置である相手先装置との間で動作要求及び該動作要求に対する応答である動作応答を送受信する通信装置における通信方法に関する。
従来から、通信装置をネットワークを介して接続した通信システムにおいて、通信装置同士で互いにメッセージを交換させることにより、通信相手の装置に対して通知や要求を行わせることが行われている。そして、このようなシステムにおいて、ある装置から別の装置に動作要求としてコマンドを送信して動作を実行させ、送信相手から動作の実行結果を動作応答として返信させることも行われている。
また、通信システムを構成する通信装置の一部を通信クライアント、他の一部を通信サーバとし、通信クライアントと通信サーバとの間の通信を、常に通信クライアントから通信サーバに通信要求を送信し、通信サーバからその送信元の通信クライアントに対して通信応答を返すというプロトコルで行うようにすることも知られている。
そこで、通信クライアントから通信サーバへの動作要求を通信要求に記載して送信し、その動作要求に対する動作応答を通信応答に記載して通信サーバから通信クライアントに返信することも行われている。
また、逆に通信サーバから通信クライアントに動作要求を送信して動作を行わせる技術としては、以下のようなものが知られている。
例えば、特許文献1には、リモートプロセッサがローカルプロセッサに対して実行されるべきコマンドを指示するメッセージを送信し、そのコマンドに対する応答を受信することが記載されている。
この文献には、ローカルプロセッサがファイアウォールの内側に配置されている場合において、ローカルプロセッサからファイアウォールの外側のリモートプロセッサに通信要求を送信し、リモートプロセッサがこの通信要求に対する応答としてローカルプロセッサに対してコマンドを送信するようにすることにより、ファイアウォールの外側から内側に向けてコマンドを送信できるようにする技術も開示されている。
この場合において、ローカルプロセッサが通信クライアントに、リモートプロセッサが通信サーバに該当する。
特開2001−273211号公報
また、特許文献2には、画像処理装置に通信相手と通信するための通信手段を設けた通信装置において、通信相手に対するSOAPリクエストと、その通信相手から受信したSOAPリクエストに対するSOAPレスポンスとを、その通信相手に対するHTTPリクエストとして一括して送信させ、また、そのHTTPリクエストに対するHTTPレスポンスとして、上記の通信相手に送信したSOAPリクエストに対するSOAPレスポンスとその通信相手からのSOAPリクエストとを、一括して受信させるようにすることが記載されている。
特開2004−135323号公報
ところで、上述した特許文献1又は2に記載したような通信プロトコルは、相手側も同じプロトコルに対応していないと、通信を正常に行うことはできない。また、単に通信クライアントから通信サーバへの動作要求を通信要求に記載して送信し、その動作要求に対する動作応答を通信応答に記載して通信サーバから通信クライアントに返信する場合と比べ、処理負荷も大きくなる。
一方で、通信を行う装置間にファイアウォールがない場合には、特許文献1又は2に記載されているようなプロトコルを用いる必要は、特にない。従って、通信装置を上述した特許文献1又は2に記載されているような通信プロトコルに対応させる場合でも、常にこのような通信プロトコルを使用させると、却って不具合が生じてしまう場合があるという問題があった。
以上のようなこの発明の通信装置、通信システム又は通信方法によれば、通信装置間で動作要求を送受信させる場合において、通信の効率を向上させることができる。
上記の目的を達成するため、通信相手の装置である相手先装置との間で動作要求及びその動作要求に対する応答である動作応答を送受信する通信装置において、上記相手先装置から通信要求を受信し、その相手先装置に対してその通信要求に対する通信応答を送信し、上記相手先装置に対する動作要求と、上記相手先装置から受信した動作要求に対する動作応答とを、上記通信応答に含めて一括して上記相手先装置に送信し、上記相手先装置からの動作要求と、上記相手先装置に送信した動作要求に対する動作応答とを、上記通信要求に含まれた状態で一括して上記相手先装置から受信する第1の通信手段と、上記相手先装置に対する動作要求を上記相手先装置に対する通信要求に含めて送信し、その相手先装置に対する動作要求に対する動作応答をその送信した通信要求に対する通信応答に含まれた状態で受信し、上記相手先装置からの動作要求を上記相手先装置からの通信要求に含まれた状態で受信し、その相手先装置からの動作要求に対する動作応答を、その受信した通信要求に対する通信応答に含めて送信する第2の通信手段と、上記相手先装置に対する動作要求を上記相手先装置に送信する場合に、その通信装置が上記相手先装置に対してファイアウォールの外側にあるとき、上記第1の通信手段にその送信を行わせ、その通信装置と上記相手先装置との間にファイアウォールがないとき、上記第2の通信手段にその送信を行わせる第1の切換手段とを設けたものである。
このような通信装置において、上記第1の切換手段が、その通信装置のアドレス情報と上記相手先装置のアドレス情報とを取得し、これらのアドレス情報に基づいて、動作要求の送信を上記第1の通信手段に行わせるか上記第2の通信手段に行わせるかを決定するようにするとよい。
さらに、上記第1の通信手段が受信した動作要求を受信要求プールに記憶させる手段と、上記受信要求プールに記憶されている動作要求に係る動作を実行してその実行結果をその動作要求と対応させて上記受信要求プールに記憶させる要求実行手段と、上記第1の通信手段により上記相手先装置に送信すべき動作要求を送信要求プールに記憶させる手段とを設け、上記第1の通信手段が、上記相手先装置から通信要求を受信した場合に、上記受信要求プールに記憶されている動作要求に係る動作の実行が全て完了しているか否かに関わらず、上記送信要求プールに記憶されている未送信の動作要求と、上記受信要求プールに記憶されている未送信の実行結果を上記相手先装置に伝達するための動作応答とを、その通信要求に対する動作応答に含めて上記相手先装置に送信するようにするとよい。
さらに、上記第1の通信手段を、上記相手先装置から通信要求を受信し、その相手先装置に対してその通信要求に対する通信応答を送信し、上記相手先装置に対する動作要求と、上記相手先装置から受信した動作要求に対する動作応答とを、上記通信応答に含めて一括して上記相手先装置に送信し、上記相手先装置からの動作要求と、上記相手先装置に送信した動作要求に対する動作応答とを、上記通信要求に含まれた状態で一括して上記相手先装置から受信する第1の通信動作と、上記相手先装置に対して通信要求を送信し、その相手先装置からその通信要求に対する通信応答を受信し、上記相手先装置に対する動作要求と、上記相手先装置から受信した動作要求に対する動作応答とを、上記通信要求に含めて一括して上記相手先装置に送信し、上記相手先装置からの動作要求と、上記相手先装置に送信した動作要求に対する動作応答とを、上記通信応答に含まれた状態で一括して上記相手先装置から受信する第2の通信動作とを選択的に実行する手段とし、その通信装置が上記相手先装置に対してファイアウォールの外側にあるとき、上記第1の通信手段に上記第1の通信動作を実行させ、その通信装置が上記相手先装置に対してファイアウォールの内側にあるとき、上記第1の通信手段に上記第2の通信動作を実行させる第2の切換手段を設け、上記第1の切換手段が、その通信装置が上記相手先装置に対してファイアウォールの内側にあるときにも、上記第1の通信手段に上記動作要求の送信を行わせるようにするとよい。
また、この発明の別の通信装置は、上記の通信装置を通信相手とする通信装置において、上記通信相手に対する動作要求を、その通信相手に対する通信要求に含めて送信し、その通信要求に対する通信応答に、上記送信した動作要求に対する動作応答が含まれていない場合でも、その通信応答に含まれている、上記通信相手からその通信装置への動作要求に係る動作を実行するようにしたものである。
このような通信装置において、通信相手に送信した通信要求に対する通信応答に、上記通信相手からの動作要求が複数含まれていた場合に、その各動作要求を分離し、その各動作要求に係る動作を個別に実行するようにするとよい。
また、この発明の通信システムは、互いに動作要求及びその動作要求に対する応答である動作応答を送受信する第1及び第2の通信装置を備えた通信システムにおいて、上記第1の通信装置に、上記第2の通信装置から通信要求を受信し、その第2の通信装置に対してその通信要求に対する通信応答を送信し、上記第2の通信装置に対する動作要求と、上記第2の通信装置から受信した動作要求に対する動作応答とを、上記通信応答に含めて一括して上記第2の通信装置に送信し、上記第2の通信装置からの動作要求と、上記第2の通信装置に送信した動作要求に対する動作応答とを、上記通信要求に含まれた状態で一括して上記第2の通信装置から受信する第1の通信手段と、上記第2の通信装置に対する動作要求を上記第2の通信装置に対する通信要求に含めて送信し、その第2の通信装置に対する動作要求に対する動作応答をその送信した通信要求に対する通信応答に含まれた状態で受信し、上記第2の通信装置からの動作要求を上記第2の通信装置からの通信要求に含まれた状態で受信し、その第2の通信装置からの動作要求に対する動作応答を、その受信した通信要求に対する通信応答に含めて送信する第2の通信手段と、上記第2の通信装置に対する動作要求を上記第2の通信装置に送信する場合に、上記第1の通信装置が上記第2の通信装置に対してファイアウォールの外側にあるとき、上記第1の通信手段にその送信を行わせ、上記第1の通信装置と上記第2の通信装置との間にファイアウォールがないとき、上記第2の通信手段にその送信を行わせる第1の切換手段とを設けたものである。
このような通信システムにおいて、上記第1の通信装置の上記切換手段が、上記第1の通信装置のアドレス情報と上記第2の通信装置のアドレス情報とを取得し、これらのアドレス情報に基づいて、動作要求の送信を上記第1の通信手段に行わせるか上記第2の通信手段に行わせるかを決定するようにするとよい。
さらに、上記第1の通信装置に、上記第1の通信手段が受信した動作要求を受信要求プールに記憶させる手段と、上記受信要求プールに記憶されている動作要求に係る動作を実行してその実行結果をその動作要求と対応させて上記受信要求プールに記憶させる要求実行手段と、上記第1の通信手段により上記第2の通信装置に送信すべき動作要求を送信要求プールに記憶させる手段とを設け、上記第1の通信装置の上記第1の通信手段が、上記第2の通信装置から通信要求を受信した場合に、上記受信要求プールに記憶されている動作要求に係る動作の実行が全て完了しているか否かに関わらず、上記送信要求プールに記憶されている未送信の動作要求と、上記受信要求プールに記憶されている未送信の実行結果を上記第2の通信装置に伝達するための動作応答とを、その通信要求に対する動作応答に含めて上記第2の通信装置に送信するようにするとよい。
さらに、上記第1の通信装置の上記第1の通信手段を、上記第2の通信装置から通信要求を受信し、その第2の通信装置に対してその通信要求に対する通信応答を送信し、上記第2の通信装置に対する動作要求と、上記第2の通信装置から受信した動作要求に対する動作応答とを、上記通信応答に含めて一括して上記第2の通信装置に送信し、上記第2の通信装置からの動作要求と、上記第2の通信装置に送信した動作要求に対する動作応答とを、上記通信要求に含まれた状態で一括して上記第2の通信装置から受信する第1の通信動作と、上記第2の通信装置に対して通信要求を送信し、その第2の通信装置からその通信要求に対する通信応答を受信し、上記第2の通信装置に対する動作要求と、上記第2の通信装置から受信した動作要求に対する動作応答とを、上記通信要求に含めて一括して上記第2の通信装置に送信し、上記第2の通信装置からの動作要求と、上記第2の通信装置に送信した動作要求に対する動作応答とを、上記通信応答に含まれた状態で一括して上記第2の通信装置から受信する第2の通信動作とを選択的に実行する手段とし、上記第1の通信装置は、上記第1の通信装置が上記第2の通信装置に対してファイアウォールの外側にあるとき、上記第1の通信手段に上記第1の通信動作を実行させ、上記第1の通信装置が上記第2の通信装置に対してファイアウォールの内側にあるとき、上記第1の通信手段に上記第2の通信動作を実行させる第2の切換手段を設け、上記第1の切換手段が、上記第1の通信装置が上記第2の通信装置に対してファイアウォールの内側にあるときにも、上記第1の通信手段に上記動作要求の送信を行わせるようにするとよい。
あるいは、上記第2の通信装置が、上記第1の通信装置に対する動作要求を、その第1の通信装置に対する通信要求に含めて送信し、その通信要求に対する通信応答に、上記送信した動作要求に対する動作応答が含まれていない場合でも、その通信応答に含まれている、上記第1の通信装置から上記第2の通信装置への動作要求に係る動作を実行するようにするとよい。
また、上記第2の通信装置が、上記第1の通信装置に送信した通信要求に対する通信応答に、上記第1の通信装置からの動作要求が複数含まれていた場合に、その各動作要求を分離し、その各動作要求に係る動作を個別に実行するようにするとよい。
また、この発明の通信方法は、通信相手の装置である相手先装置との間で動作要求及びその動作要求に対する応答である動作応答を送受信する通信装置における通信方法において、上記通信装置が、上記相手先装置から通信要求を受信し、その相手先装置に対してその通信要求に対する通信応答を送信し、上記相手先装置に対する動作要求と、上記相手先装置から受信した動作要求に対する動作応答とを、上記通信応答に含めて一括して上記相手先装置に送信し、上記相手先装置からの動作要求と、上記相手先装置に送信した動作要求に対する動作応答とを、上記通信要求に含まれた状態で一括して上記相手先装置から受信する第1の通信手順と、上記相手先装置に対する動作要求を上記相手先装置に対する通信要求に含めて送信し、その相手先装置に対する動作要求に対する動作応答をその送信した通信要求に対する通信応答に含まれた状態で受信し、上記相手先装置からの動作要求を上記相手先装置からの通信要求に含まれた状態で受信し、その相手先装置からの動作要求に対する動作応答を、その受信した通信要求に対する通信応答に含めて送信する第2の通信手順と、上記相手先装置に対する動作要求を上記相手先装置に送信する場合に、上記通信装置が上記相手先装置に対してファイアウォールの外側にあるとき、上記第1の通信手順によりその送信を行い、上記通信装置と上記相手先装置との間にファイアウォールがないとき、上記第2の通信手順によりその送信を行うよう上記通信装置の動作を制御する第1の切換手順とを実行するようにしたものである。
このような通信方法において、上記第1の切換手順に、上記通信装置のアドレス情報と上記相手先装置のアドレス情報とを取得し、これらのアドレス情報に基づいて、動作要求の送信を上記第1の通信手順により行うか上記第2の通信手順により行うかを決定する手順を設けるとよい。
さらに、上記通信装置が、上記第1の通信手順で受信した動作要求を受信要求プールに記憶させる手順と、上記受信要求プールに記憶されている動作要求に係る動作を実行してその実行結果をその動作要求と対応させて上記受信要求プールに記憶させる要求実行手順と、上記第1の通信手順により上記相手先装置に送信すべき動作要求を送信要求プールに記憶させる手順とを実行し、上記第1の通信手順において、上記相手先装置から通信要求を受信した場合に、上記受信要求プールに記憶されている動作要求に係る動作の実行が全て完了しているか否かに関わらず、上記送信要求プールに記憶されている未送信の動作要求と、上記受信要求プールに記憶されている未送信の実行結果を上記相手先装置に伝達するための動作応答とを、その通信要求に対する動作応答に含めて上記相手先装置に送信するようにするとよい。
さらに、上記第1の通信手順を、上記相手先装置から通信要求を受信し、その相手先装置に対してその通信要求に対する通信応答を送信し、上記相手先装置に対する動作要求と、上記相手先装置から受信した動作要求に対する動作応答とを、上記通信応答に含めて一括して上記相手先装置に送信し、上記相手先装置からの動作要求と、上記相手先装置に送信した動作要求に対する動作応答とを、上記通信要求に含まれた状態で一括して上記相手先装置から受信する第1の通信動作と、上記相手先装置に対して通信要求を送信し、その相手先装置からその通信要求に対する通信応答を受信し、上記相手先装置に対する動作要求と、上記相手先装置から受信した動作要求に対する動作応答とを、上記通信要求に含めて一括して上記相手先装置に送信し、上記相手先装置からの動作要求と、上記相手先装置に送信した動作要求に対する動作応答とを、上記通信応答に含まれた状態で一括して上記相手先装置から受信する第2の通信動作とを選択的に実行する手順とし、上記通信装置が、上記通信装置が上記相手先装置に対してファイアウォールの外側にあるとき、上記第1の通信手順で上記第1の通信動作を実行し、上記通信装置が上記相手先装置に対してファイアウォールの内側にあるとき、上記第1の通信手順で上記第2の通信動作を実行するよう上記通信装置の動作を制御する第2の切換手順を実行し、上記第1の切換手順を、上記通信装置が上記相手先装置に対してファイアウォールの内側にあるときにも、上記第1の通信手順により上記動作要求の送信を行よう上記通信装置の動作を制御する手順とするとよい。
以上のようなこの発明の通信装置、通信システム又は通信方法によれば、通信装置間で動作要求を送受信させる場合において、通信の効率を向上させることができる。
以下、この発明を実施するための最良の形態について、図面を参照して説明する。
〔通信システムと通信システムの構成:図1乃至図3〕
まず図1に、この発明の通信方法を適用する対象であり、この発明の通信システムの実施形態を含む通信システムの構成を示す。
この通信システムは、図1に示すように、ローカル環境1に、通信装置10aと通信装置10bとをLAN(ローカルエリアネットワーク)を介して通信可能なように設けている。また、LAN12はファイアウォール11を介してインターネット13に接続しており、通信装置10a,10bが、インターネット上に設けた通信装置10cとファイアウォール11を介して通信できるようにしている。
以後、これらの通信装置を総称する場合には、符号「10」を用いる。また、図1に示したような各通信装置のうち、任意の少なくとも2つの通信装置によって構成される通信システムが、この発明の通信システムの実施形態である。
次に、図2に、図1に示した通信装置10のハードウェア構成を示す。
この図に示すように、通信装置10は、CPU101,ROM102,RAM103,不揮発メモリ104,ネットワークインタフェース(I/F)105を備え、これらがシステムバス106により接続されている。
そして、CPU101は、通信装置10全体を統括制御する制御手段であり、ROM102や不揮発メモリ104に記録された種々のプログラムを実行することにより、第1,第2の通信手段等の各手段として機能し、後述するこの実施形態の特徴に係る種々の機能を実現する。
ROM102は、不揮発性の記憶手段であり、CPU101が実行するプログラムや、固定的なパラメータ等を記憶する。ROM102を書き換え可能な記憶手段として構成し、これらのデータをアップデートできるようにしてもよい。
RAM103は、一時的に使用するデータを記憶したり、CPU101のワークメモリとして使用したりする記憶手段である。
不揮発メモリ104は、フラッシュメモリやHDD(ハードディスクドライブ)等による書き換え可能な不揮発性記憶手段であり、CPU101が実行するプログラムや、装置の電源がOFFされた後でも保持しておく必要があるパラメータの値等を記憶する。
ネットワークI/F105は、通信装置10をLAN12やインターネット13等のネットワークに接続するためのインタフェースであり、例えばイーサネット(登録商標)方式の通信を行うためのネットワークインタフェースとすることができる。そして、ネットワークを介して他の装置と通信を行う場合、このネットワークI/F105とCPU101とが通信手段として機能する。なお、ネットワークI/F105は、通信に利用するネットワークの規格や使用する通信プロトコル等に応じて適切なものを用意する。また、複数の規格に対応させて複数のネットワークI/F105を設けることも当然可能である。
なお、図2には示していないが、通信装置10に外部に対して通信以外の物理的な出力を行うためのエンジン部を設けてもよい。このエンジン部は、例えば通信装置10がデジタル複合機(MFP)であれば、画像形成部、画像読取部、ファクシミリ通信ユニット等であり、CPU101がこれらの動作を適切に制御することにより、通信装置10にコピー、プリント、スキャン、ファクシミリ通信等の種々の動作を実行させることができる。
また、以上のような図1及び図2に示した各通信装置10は、RPC(Remote Procedure Call)により、互いの実装するアプリケーションプログラム(以下単に「アプリ」ともいう)のメソッドに対する処理の依頼である「動作要求」を送信し、この依頼された処理の結果である「動作応答」を取得することができるようになっている。即ち、例えば通信装置10aは、通信装置10bや通信装置10cへの要求を生成してこれを通信装置10bや通信装置10cへ引き渡し、この要求に対する応答を取得できる一方で、通信装置10bや通信装置10cは、通信装置10aへの要求を生成してこれを通信装置10aへ引き渡し、この要求に対する応答を取得できるようになっている。
なお、ここではメソッドを入力と出力の形式を規定した論理的な関数として定義するものとする。そしてこの場合、動作要求はこの関数を呼び出す関数呼び出し(Procedure Call)となり、動作応答はその関数呼び出しによって呼び出された関数の実行結果となる。動作要求による要求の内容には、意味のある実行結果を伴わない通知も含まれる。
また、動作要求としては、例えば印刷要求(通信装置がプリンタの場合)や、FAX送信要求(通信装置がFAX装置の場合)のように、装置に外見上把握できるような動作を実行させるものや、装置の動作状況の通知やデータ転送要求等、データの転送や内部的な処理を行わせるもの等、種々のものが考えられる。
そして、各通信装置10は、ネットワークを介して受信した動作要求の内容に応じた処理を行ってその結果を動作応答として返すことにより、ウェブサービスを提供することができる。
図3に、これらの動作要求と動作応答の関係を示す。
図3(A)は、いずれかの通信装置(通信装置Aとする)で他の通信装置(通信装置Bとする)に対する動作要求が発生したケースである。このケースでは、通信装置Aが通信装置A側動作要求を生成して通信装置Bに送信し、これを受け取った通信装置Bがその要求に対する動作応答を返すというモデルになる。
図3(B)は、通信装置Bで通信装置Aに対する動作要求が発生したケースである。このケースでは、通信装置Bが通信装置B側要求を生成して通信装置Aに送信し、これを受け取った通信装置Aがその要求に対する動作応答を返すというモデルになる。
このように、動作要求及び動作応答は、RPCのレベルでは各通信装置10の間で対称に取り扱われるものである。しかし、後述するとおり、通信のレベルでは対称には取り扱えない場合がある。
なお、ここではRPCによる引数並びに戻り値の受け渡しのプロトコルとしてSOAP(Simple Object Access Protocol)を採用し、上記の動作要求や動作応答は、ここではSOAPメッセージとして記載するようにしている。
そして、実際に動作要求や動作応答を転送するための通信プロトコルとしては、システムの構成に合わせて適当なものを採用することができ、例えばHTTP(HyperText Transfer Protocol)やSMTP(Simple Mail Transfer Protocol)を採用することができる。ここでは、このうちHTTPを採用する場合の例について説明する。
図1に示したような通信システムを構成し、通信プロトコルにHTTPを採用する場合、各通信装置10には、通信時に通信クライアントとして機能する装置(通信要求であるHTTPリクエストを送信する装置)と、通信サーバとして機能する装置(受信した通信要求に対する通信応答であるHTTPレスポンスを送信する装置)と、その両方として機能する装置とが存在しうる。
より具体的には、通信を行う装置間にファイアウォールがなければ、通信を行う通信装置10が互いに通信相手に対してHTTPリクエストを送信し、通信相手からHTTPレスポンスを受信できるため、各通信装置が通信クライアントと通信サーバの両方として機能する。この場合には、通信のレベルでも、各通信装置を対称に動作させることができる。
しかし、通信を行う装置間にファイアウォールがある場合、そのファイアウォールは、HTTPを用いて通信を行う場合に、ファイアウォールの外側からはファイアウォールの内側にあるノードに対して自由にアクセスできず、内側のノードからのHTTPリクエストに対するHTTPレスポンスという形でしかデータを送信できないように設定されることが多い。そこで、このような場合には、ファイアウォールの内側にある通信装置をHTTPクライアント(通信クライアント)、外側にある通信装置をHTTPサーバ(通信サーバ)として機能させることになる。この場合には、通信のレベルでは、各通信装置を対称に動作させることはできない。
この実施形態の特徴は、上記のような通信のレベルで対称な動作が可能な場合と不可能な場合とに合わせて適切な手順で通信を行うことができるようにした点である。以下、この点に関連する機能を中心に通信装置10が備える機能及びその機能を実現させるための動作について説明する。
〔通信手順の概略:図4乃至図7〕
まず、図4に、各通信装置10がRPCに関連して備える機能部及び、その各機能部間でのメッセージの受け渡し経路を示す。この図において、図示している通信装置10が生成した動作要求及びその動作要求に対する動作応答の受け渡し経路は実線で示し、図示している通信装置10に対する動作要求及びその動作要求に対する動作応答の受け渡し経路は破線で示している。また、以下の図も含め、特に断らない場合、図に示す各構成要素の機能は、CPU101が所要の制御プログラムを実行することにより実現されるものである。
図4に示すとおり、通信装置10は、HTTPクライアント機能部20,HTTPサーバ機能部30,第1のメッセージコントローラ40,第2のメッセージコントローラ50,アプリ60,送信先切り替え部71,送信元記憶部72,通信応答振り分け部73,送信元記憶部74,実行結果振り分け部75,通信要求振り分け部76を設けている。
このうち、HTTPクライアント機能部20とHTTPサーバ機能部30は、HTTPにより通信要求と通信応答の送受信を行う機能を有する。そして、前者は、通信相手に対してHTTPリクエストを送信するHTTPリクエスト送信部21と、その通信相手からHTTPレスポンスを受信するHTTPレスポンス受信部22とを有する。また後者は、通信相手からHTTPリクエストを受信するHTTPリクエスト受信部31と、その通信相手に対してHTTPレスポンスを送信するHTTPレスポンス送信部32とを有する。
また、アプリ60により実現される機能部としては、通信相手のアプリに対して処理を依頼するコマンドを生成する送信コマンド生成部61と、通信相手から依頼されたコマンドに係る処理を実行してその結果を返す受信コマンド実行結果生成部62とを備えている。そして、この図から明らかなように、第1のメッセージコントローラ40を介して受信した受信コマンドに係る処理も、第2のメッセージコントローラ50を介して受信した受信コマンドに係る処理も、共通の受信コマンド実行結果生成部62、すなわち共通のアプリ60が行う。なお、1つのアプリ60に送信コマンド生成部61や受信コマンド実行結果生成部62を複数設けたり、通信装置10に複数のアプリ60を設けたりしてよいことは、もちろんである。
第1,第2のメッセージコントローラ40,50は、それぞれアプリ60とHTTPクライアント機能部20及びHTTPサーバ機能部30との間に介在し、コマンドやコマンド実行結果の内容をSOAPメッセージに変換し、これをHTTPメッセージに記載して通信相手に対して送信させたり、逆にHTTPメッセージ内にSOAPメッセージとして記載されたコマンドやコマンド応答を適当なアプリ60に引き渡したりする機能を有する。そして、第1のメッセージコントローラ40は、通信相手との間にファイアウォールがある場合に適した通信を行うための、第1の通信手段及び第1の応答手段の機能を有するコントローラであり、第2のメッセージコントローラは、通信相手との間にファイアウォールがない場合に適した通信を行うための、第2の通信手段及び第2の応答手段の機能を有するコントローラである。
なお、図4では、第1のメッセージコントローラ40が通信相手との間でのメッセージの送受信に、HTTPクライアント機能部20とHTTPサーバ機能部30の双方を使用するように図示しているが、実際には、通信装置10が通信相手に対してファイアウォールの内側にある場合にはHTTPクライアント機能部20を、外側にある場合にはHTTPサーバ機能部30を使用するようにする。
送信先切り替え部71は、通信相手に対してコマンドを送信する際に、第1,第2のメッセージコントローラ40,50のいずれに送信に係る処理を実行させるかを切り替える機能を有する。そして、通信相手との間にファイアウォールがある場合に、第1のメッセージコントローラ40を用い、通信相手と自身との間にファイアウォールがない場合には、第2のメッセージコントローラ50を用いるようにしている。
この切り替えは、所定のパラメータの値を手動又は自動で設定して行うようにしてもよいし、通信装置10が通信相手のIP(Internet Protocol)アドレス等の位置情報を検出し、その内容(例えばネットワークアドレスが同一か否か)に従って自動的に行うようにしてもよい。通信装置10が特定の通信相手とのみ通信するような場合には、送信先切り替え部71が、常に第1,第2のメッセージコントローラ40,50のいずれか一方にコマンド送信に係る処理を実行させることもあり得る。
送信元記憶部72は、各メッセージコントローラ40,50がHTTPリクエスト送信部21にHTTPリクエストを通信相手に対して送信させる場合に、どちらのメッセージコントローラがその送信を要求したかを記憶しておく機能を有する。
そして、通信応答振り分け部73は、HTTPレスポンス受信部22がHTTPレスポンスを受信した場合に、送信元記憶部72が記憶している情報をもとに、そのHTTPレスポンスを、対応するHTTPリクエストの送信を要求したメッセージコントローラに渡す機能を有する。
なお、これらの送信元記憶部72及び通信応答振り分け部73の機能を実現するための処理は、明示的にプログラムを書かなくても、コンパイラの機能により生成される。すなわち、一般的な処理系では、例えば関数呼び出しで別モジュールに処理を依頼すると、処理終了後は依頼元(関数呼び出し元)に制御が戻るようになっており、これは、関数呼び出し元(アドレス)をスタック(メモリ)に記憶することで実現される。そして、送信元記憶部72及び通信応答振り分け部73の機能は、このような処理に対応するものである。図4においてこれらを仮想線で示しているのは、このためである。
また、送信元記憶部74は、各メッセージコントローラ40,50が通信相手から受信したSOAPリクエストに係るコマンドを受信コマンド実行結果生成部62に渡す場合に、どちらのメッセージコントローラがそのコマンドが渡したかを記憶しておく機能を有する。
そして、実行結果振り分け部75は、受信コマンド実行結果生成部62がコマンドの応答として実行結果を返す場合に、その応答を、対応するコマンドを渡したメッセージコントローラに返す機能を有する。
これらの送信元記憶部74及び実行結果振り分け部75の機能も、上記の送信元記憶部72及び通信応答振り分け部73の場合と同様、特に専用のコードを書かなくても実現できる。図4においてこれらを仮想線で示しているのは、このためである。
また、通信要求振り分け部76は、HTTPリクエスト受信部31がHTTPリクエストを受信した場合に、そのHTTPリクエストを、第1,第2のメッセージコントローラ40,50のいずれにより取り扱うべきかを判断し、適当なメッセージコントローラに渡す機能を有する。後述するとおり、第1のメッセージコントローラ40が取り扱うHTTPリクエストと第2のメッセージコントローラ50が取り扱うHTTPリクエストとは、形式が大きく異なるため、通信要求振り分け部76は、HTTPリクエストのヘッダ等を参照することにより、容易に振り分けを行うことができる。この場合、URLで振り分け先を区別することが考えられる。また、送信先切り替え部71の場合と同様な方法で振り分け先を区別することも考えられる。
次に、図5乃至図7を用いて、第1のメッセージコントローラ40と第2のメッセージコントローラ50の機能の違いについて説明する。
まず、図5に、第1のメッセージコントローラ40を用いた場合の、通信装置間の通信シーケンスの例を示す。この図においては、ファイアウォールの内側の通信装置Lと外側の通信装置Mとの間でコマンド及びそのコマンドに対する応答(以下「コマンド応答」ともいう)を送受信する場合の例を示している。また、通信装置Lと通信装置Mの双方が第1のメッセージコントローラ40を備えているものとする。
この図に示すように、第1のメッセージコントローラ40を用いる場合には、通信は常に、通信装置Lから通信要求としてHTTPリクエストを通信装置Mに送信し、通信装置Mからこの通信要求に対する通信応答としてHTTPレスポンスを通信装置Lに返すという手順で行うようにしている。例えば通信装置Lが送信したHTTPリクエストXに対して通信装置MがHTTPレスポンスXを返し、同じくHTTPリクエストYに対してHTTPレスポンスYを返すという具合である。
そして、通信装置Lには、HTTPリクエストに、通信装置Lから通信装置Mに送信する動作要求であるL側コマンドと、通信装置Mから通信装置Lに送信されてきたM側コマンドに対する応答とを記載して送信させるようにしている。また、通信装置Mには、HTTPレスポンスに、通信装置Mから通信装置Lに送信する動作要求であるM側コマンドと、通信装置Lから通信装置Mに送信したL側コマンドに対する応答とを記載して送信させるようにしている。
従って、例えばL側コマンドAは、HTTPリクエストXに記載して転送し、コマンド応答をそのHTTPリクエストXと対応するHTTPレスポンスXに記載して転送することができる。一方、M側コマンドCについては、HTTPリクエストXと対応するHTTPレスポンスXに記載して転送し、そのコマンド応答は次のHTTPリクエストであるHTTPリクエストYに記載して転送することになる。
また、L側コマンドについては、コマンドが生成された後直ちに通信装置Lが通信装置Mとコネクションを確立し、HTTPリクエストにこれを含めて引き渡すことができるが、M側コマンドについては、ファイアウォールが通信装置Mから通信装置LへのHTTPリクエストを遮断するため、通信装置M側から通信装置Lへアクセスしてコマンドを直ちに引き渡すことができない。従って、通信装置LからHTTPリクエストがあるまでM側コマンドを送信することができない。しかし、逆に言えば、通信装置LからHTTPリクエストがあれば、ファイアウォールの内側に対してもM側コマンドを送信し、コマンド応答を取得することができる。
そこで、このことを利用し、通信装置Lから通信装置Mに対して定期的にHTTPリクエストを送信するようにすれば、通信装置M側に、M側コマンドや、L側コマンドに対する応答を長期間滞留させずに、速やかに通信装置Lに送信できるようにすることができる。
なお、L側コマンド及びM側コマンドに対する応答をそれぞれ任意の数ずつ(0でもよい)1つのHTTPリクエストに記載することができ、M側コマンド及びL側コマンドに対する応答をそれぞれ任意の数ずつ(0でもよい)1つのHTTPレスポンスに記載することができる。そして、1つのHTTPリクエスト又はHTTPレスポンス(通信メッセージ)に記載した内容は、論理的に一括して転送する。
そして、このようにすることにより、必要な情報を転送するために必要なコネクションの回数を減らし、オーバーヘッドを低減して通信の効率化を図っている。
図6に第1のメッセージコントローラ40を用いた場合の別の通信シーケンスの例を示す。
説明のため、図5には極めて単純なシーケンス例を示したが、図6には、各HTTPリクエストやHTTPレスポンスに記載するコマンドやコマンド応答の数が一定でない例を示している。
また、コマンドを受信した場合に、次の送信機会の時点で応答を返す必要もない。例えば、図6に示すL側コマンドBのように、コマンドを記載したHTTPリクエストX′に対応するHTTPレスポンスX′に記載して応答を返さず、後のHTTPレスポンスY′に記載して応答を返すようにしてもよい。
もちろんM側コマンドについても同様であり、M側コマンドを記載したHTTPレスポンスの次のHTTPリクエストにそのコマンドに対する応答を記載する必要はない。そして、さらに後のHTTPリクエストに記載して転送すればよい。
また、図7に、第2のメッセージコントローラ50を用いた場合の、通信装置間の通信シーケンスの例を示す。間にファイアウォールを挟まずに通信する通信装置Lと通信装置Nとの間でコマンド及びコマンド応答を送受信する場合の例を示している。また、通信装置Lと通信装置Mの双方が第2のメッセージコントローラ50を備えているものとする。
この図に示すように、第2のメッセージコントローラ50を用いる場合には、通信装置Lと通信装置Nのいずれも、通信相手に対してHTTPリクエストを送信し、その応答として通信相手からHTTPレスポンスを受信するようにしている。
そして、各通信装置に、通信相手に対する動作要求であるコマンドを、その通信相手に対するHTTPリクエストに記載して送信させ、通信相手から受信したコマンドに対する応答は、コマンドが記載されていたHTTPリクエストに対するHTTPレスポンスに記載して送信させるようにしている。
通信装置間にファイアウォールがない場合には、通信相手に対するHTTPリクエストがファイアウォールにより遮断されることはないので、このような通信手順により、コマンドとコマンド応答の送受信が可能である。
このような通信手順は、SOAPメッセージをHTTPメッセージに記載して転送する通信手順としてごく標準的なものであり、図5及び図6に示したような通信手順と比べて、通信装置内部での処理負荷は小さい。従って、通信相手の機器が標準的な通信手順に対応していれば、第1のメッセージコントローラ40を利用するような特殊な通信手順に対応していない場合でも、通信が可能である。
ただし、ネットワーク内のトラフィック低減のため、図7に示したようにHTTPリクエストを双方が送信する場合でも、図5及び図6に示したように、コマンド及びコマンド応答を、1つの通信メッセージに複数記載するようにすることも考えられる。
〔第1,第2のメッセージコントローラによる通信手順:図8乃至図25〕
次に、図8乃至図25を用いて、上述した通信装置10が第1,第2のメッセージコントローラ40,50を用いて通信を行う場合の通信手順について、より詳細に説明する。
まず、第1のメッセージコントローラ40を用いる場合、複数のコマンドやコマンド応答を1つのHTTPメッセージに記載して転送することは上述した通りである。しかし、各コマンド及びコマンド応答は、それぞれ独立して生成され、また処理に供されるべきものであるから、このような一括転送を行うためには、転送前にこれらのコマンドやコマンド応答を結合し、また転送後に分離する処理が必要となる。
図8に、このような結合及び分離を実現するための第1のメッセージコントローラ40の機能構成を、その周辺の機能と共に示す。この図で用いている線の種類とその意味は、図4の場合と同様である。
図8に示すように、第1のメッセージコントローラ40には、送信コマンドプール41,受信コマンドプール42,コマンド応答通知部43,コマンド通知部44,送信メッセージ収集部45,受信メッセージ分配部46を設けている。このうち送信コマンドプール41及び受信コマンドプール42は、不揮発メモリ104のような書き換え可能な不揮発性記憶手段に設けられるものである。
そして、送信コマンドプール41は、送信コマンド生成部61が生成した通信相手に対するコマンドである送信コマンドと、そのコマンドに対する応答と、このコマンドの識別情報とを関連付けて登録するプールである。また、受信コマンドプール42は、通信相手から受信した受信コマンドと、このコマンドに対する応答と、このコマンドの識別情報とを関連付けて登録するプールである。これらのプールにおいては、コマンド毎にテーブル形式のコマンドシートを作成して情報を格納することにより、コマンドと、識別情報や応答等の情報とを関連付けるようにしている。
ここで、図9に送信コマンドシートにおけるデータ構造の例を示す。
この図に示すように、送信コマンドシートには、「コマンドID」、「メソッド名」、「入力パラメータ」、「状態」、「コマンド実行結果の通知先」、および「出力パラメータ」のデータを記憶する領域を設けている。そして、このうち「コマンドID」、「メソッド名」、および「入力パラメータ」が送信コマンド(及びそこに付されたID)に該当する。「出力パラメータ」は、通信相手から受信するコマンド応答の内容である。
次に、各項目の内容について説明する。
まず、「メソッド名」は、通信相手に対する要求の内容であり、通信相手において呼び出す関数の種類を示す。「入力パラメータ」は、「メソッド名」に付随するデータであり、関数を呼び出す際の引数である。「コマンドID」は、送信コマンドを識別するための識別情報である。「状態」は、送信コマンドに関する処理の進行状況を示すデータであり、処理の進行と共に、「未送信」→「応答待ち」→「応答受信済」と遷移していく。
「コマンド実行結果の通知先」は、そのシートに記載している送信コマンドに対する応答を受信した場合に、その旨を通知して必要な処理を実行させるモジュールを示す参照情報である。参照するモジュールは、送信コマンドを生成した送信コマンド生成部61であることが多いが、必ずしもそうである必要はない。「出力パラメータ」には、コマンド応答を受け取った段階で、その内容を格納する。通信相手からのコマンド応答を受け取るまでは空である。
また、図10に受信コマンドシートにおけるデータ構造の例を示す。
この図に示すように、受信コマンドシートには、「コマンドID」、「メソッド名」、「入力パラメータ」、「状態」、「出力パラメータ」、および「コマンドの通知先」のデータを記憶する領域を設けている。そして、このうち「コマンドID」、「メソッド名」、および「入力パラメータ」が受信コマンド(及びそこに付されたID)に該当し、「状態」及び「コマンドの通知先」が管理情報に該当する。「出力パラメータ」は、受信コマンドの実行結果であり、通信装置10が返すコマンド応答の内容となる。
次に、各データの内容について説明する。
まず、「メソッド名」は、通信装置10に対する要求の内容であり、通信装置10において呼び出す関数の種類を示す。「入力パラメータ」は、「メソッド名」に付随するデータであり、関数を呼び出す際の引数である。「コマンドID」は、受信コマンドを識別するための識別情報である。「状態」は、受信コマンドに関する処理の状態を示すデータであり、処理の進行と共に、「未処理」→「処理完了」→「応答済」、あるいは「未処理」→「処理中」→「処理完了」→「応答済」と遷移していく。「出力パラメータ」には、受信コマンド実行結果生成部62によって生成された応答が格納される。受信コマンドの実行が終了し、上記の「状態」が「処理完了」となるまでは空である。「受信コマンドの通知先」は、受信コマンドの実行を行うモジュールを示す参照情報である。なお、このモジュールは通常はいずれかのアプリ60に含まれる受信コマンド実行結果生成部62である。
図8の説明に戻ると、送信コマンドプール41に送信コマンドを記憶させるのは、アプリ60に含まれる送信コマンド生成部61であり、送信先切り替え部71が第1のメッセージコントローラ40の使用を選択した場合に、この処理が行われる。そして、送信コマンド生成部61は、生成したコマンドにそのコマンドを識別する識別情報(ID)を割り当て、さらにこのコマンドを管理するための管理情報を付し、これらの情報を関連付けてテーブル形式の送信コマンドシートとして送信コマンドプール41に登録する。この機能は送信先切り替え部71に設けてもよい。また、その後このコマンドに対する応答が送信コマンドプール41に記憶されると、コマンド応答通知部43が、送信コマンドシート中の「コマンド実行結果の通知先」で指定されるモジュールにコマンド応答を通知する。
また、受信コマンドプール42に受信コマンドが記憶されると、コマンド通知部44が、送信コマンドシート中の「コマンドの通知先」で指定されるモジュール(受信コマンド実行結果生成部62)にコマンドを通知する。すると、これを受け取ったモジュールがコマンドに係る処理を実行し、実行結果をコマンド応答として受信コマンドプール42に記憶させる。
ここで、通信相手から受信した受信コマンドは、このコマンドを識別するID及びこのコマンドを管理するための管理情報と関連付けて、テーブル形式の受信コマンドシートとして受信コマンドプール42に登録しておくようにしている。そして、受信コマンド実行結果生成部62が生成したコマンド応答も、実行した受信コマンドについての受信コマンドシートに登録する。
なお、受信コマンドが通信装置10に優先して処理を実行させるための実行優先順位の情報を含む場合には、優先順位の高いものから優先的に通知するようにすることも考えられる。
また、送信メッセージ収集部45は、受信コマンド実行結果生成部62が生成したコマンド応答とこのコマンド応答に対応する受信コマンドのコマンドIDとを関連付けて受信コマンドプール42から読み出すと共に、送信コマンド生成部61が生成した送信コマンドとこのコマンドのコマンドIDとを関連付けて送信コマンドプール41から読み出し、これらから送信メッセージを生成する機能を有する。
なお、コマンド応答や送信コマンドに実行優先順位が指定されている場合には、送信メッセージ収集部45がそれぞれ実行優先順位の高いものから順に読み出すようにすることが考えられる。
ここで、送信メッセージとは、上記のコマンド応答やコマンドとコマンドIDとを、構造化言語であるXML(Extensible Markup Language)で、SOAPメッセージとして記載したものである。そして、送信メッセージ収集部45は、1つのコマンド応答あるいはコマンドにつき、送信メッセージとして1つのSOAPメッセージを生成する。またこのとき、各コマンドのコマンドIDはSOAPヘッダに記載し、コマンド応答及び送信コマンドの内容はSOAPボディに記載する。SOAPによる通信では、SOAPヘッダとSOAPボディとからなるSOAPエンベロープ(封筒)と呼ばれるメッセージをXMLで記載し、HTTPなどのプロトコルで交換することになる。
このようなコマンドやコマンド応答からのSOAPメッセージの生成は、WSDL(Web Service Description Language)に基づいて生成される所要の変換プログラム(シリアライザ)を実行し、データを直列化することによって行うことができる。
そして、送信メッセージ収集部45は、生成した送信メッセージをHTTPリクエスト送信部21又はHTTPレスポンス送信部32に渡し、その送信メッセージを含むHTTPリクエスト又はHTTPレスポンスを生成させて通信相手に送信させる機能も有する。
また、このとき送信メッセージをHTTPリクエスト送信部21又はHTTPレスポンス送信部32のどちらに渡すかは、サーバ/クライアント切り替え部45aが決定する。上述した通り、通信相手とファイアウォール越しに通信を行う場合、通信装置10が通信相手に対してファイアウォールの内側にある場合にはHTTPクライアント機能部20を、外側にある場合にはHTTPサーバ機能部30を使用するようにするので、この基準に応じて、前者の場合には送信メッセージをHTTPリクエスト送信部21に渡し、後者の場合にはHTTPレスポンス送信部32に渡すようにする。
なお、サーバ/クライアント切り替え部45aがどちらの送信部を選択するかは、所定のパラメータの値を自動または手動で設定して決定すればよい。また、通常はHTTPクライアント機能部20を利用するようにしつつ、HTTPサーバ機能部30がHTTPリクエストを受信した場合にはこれに対応する処理を行うようにするような対応も考えられる。
また、メッセージの送信の説明に戻ると、HTTPメッセージの送信に際し、1つのHTTPメッセージに送信メッセージをいくつ含めてもよいし、コマンド応答に係る送信メッセージと送信コマンドに係る送信メッセージとを任意に混在させることもできる。
そこで、HTTPリクエスト送信部21及びHTTPレスポンス送信部32は、これらのいずれに係る送信メッセージであるかに関わり無く、送信メッセージ収集部45が生成した全ての送信メッセージを1つのHTTPメッセージに含めて送信するようにしている。ただし、1つのHTTPメッセージに含める送信メッセージの数に上限を設けることも考えられる。
また、このHTTPメッセージの送信は、送信メッセージ収集部45が送信コマンドやコマンド応答等の読み出しを試みた場合には、読み出すデータがなく、結果的に送信すべきSOAPメッセージを生成しなかった場合にも行うものである。
そして、この読み出しの試みは、送信メッセージ収集部45がHTTPクライアント機能部20を利用する場合、すなわち、通信装置10が通信クライアントとして機能する場合には、定期的に行うものとする。例えば、タイマによって60分毎に読み出すことが考えられる。
このようにするのは、上述のように、通信相手から通信装置10に送信したい情報があったとしても、通信装置10から通信を要求しない限り送信できないためである。通信装置10から何も送信するデータがなかったとしても、定期的に通信相手に対して通信要求を送信して、通信相手から通信装置10に情報を送信する機会を与えることにより、転送の必要な情報が長期間に亘って通信相手に滞留してしまうことを防止できる。
なお、送信メッセージ収集部45による読み出しと、それに続くHTTPリクエスト送信部21によるHTTPリクエストの送信とを、定期的なタイミング以外に適宜行ってよいことはもちろんである。例えば、緊急に送信が必要な情報がいずれかのプールに登録された場合に、送信コマンド生成部61や受信コマンド実行結果生成部62が送信メッセージ収集部45にその旨を通知して読み出しを行わせるようにしてもよい。
また、送信メッセージ収集部45がHTTPサーバ機能部30を利用する場合、すなわち、通信装置10が通信サーバとして機能する場合には、送信メッセージ収集部45によるコマンドやコマンド応答の読み出しは、受信メッセージ分配部46がHTTPリクエスト受信部31を介して通信相手からのHTTPリクエストを受け取った場合に行う。通信サーバとして機能する場合には、通信装置10側から通信相手に対して能動的にメッセージを送信することができないためである。
次に、受信メッセージ分配部46は、HTTPレスポンス受信部22を介して通信相手からHTTPレスポンスを受け取る機能と、HTTPリクエスト受信部31を介して通信相手からHTTPリクエストを受け取る機能とを有する。なお、受信メッセージ分配部46が受け取るのは、前者の場合には通信応答振り分け部73が、後者の場合には通信要求振り分け部76が、それぞれ第1のメッセージコントローラ40で処理すべきものと判断したHTTPリクエストである。また、図4及び図8では、第1のメッセージコントローラ40がこれらの振り分け部73,76を介してHTTPメッセージを受け取るように記載しているが、これらの振り分け部73,76は、HTTPレスポンス受信部22やHTTPリクエスト受信部31にメッセージの振り分け先を指示するだけでもよい。
そして、いずれの場合にも、受信メッセージ分配部46が受け取るHTTPメッセージには、受信コマンド及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージと、送信コマンドに対する応答及びそのコマンドと関連付けられたコマンドIDを含む受信メッセージとが、任意に混在して含まれている。
ここで、受信メッセージとは、上記のコマンドや応答とコマンドIDとをSOAPメッセージとして記載したものである。
また、受信メッセージ分配部46は、受信したHTTPメッセージに含まれるデータを、送信コマンドプール41及び受信コマンドプール42に振り分けて登録する機能も有する。
具体的には、受信コマンド及びそのコマンドと関連付けられたコマンドIDとを受信コマンドプール42に受信コマンドシートを設けて登録すると共に、送信コマンドに対する応答については、そのコマンドと関連付けられたコマンドIDを送信コマンドプール41に記憶している送信コマンドシートのコマンドIDと照合して対応する送信コマンドを特定し、その送信コマンドについての「出力パラメータ」として登録する。
そしてこのとき、HTTPメッセージを分割してそこに含まれる各受信メッセージを取り出し、そのデータをテーブルへの登録に必要な形式に変換するが、この変換は、WSDLに基づいて生成される所要の変換プログラム(デシリアライザ)を実行することによって行うことができる。
次に、このような機能を有する第1のメッセージコントローラ40が通信相手に送信させるHTTPリクエストの例を図11に示す。
このHTTPリクエストは、図11に示すように、ボディ部としてMIME(Multipurpose Internet Mail Extension)に従ったマルチパートのメッセージが記載され、この各パートには、それぞれエンティティヘッダが記載されると共に、詳細な図示は省略しているが、SOAPエンベロープが埋め込まれている。図11の例では、HTTPリクエストのHTTPボディには、「MIME_boundary」で区分された各要素が、独立した第1パート、第2パート、第3パート、第4パートを構成しているが、HTTPボディに含めることのできるパート数は4つに限られない。0個を含め、いくつでもよい。
HTTPリクエストに埋め込まれて通信相手に引き渡されるSOAPエンベロープには、送信コマンドを記載したものと、受信コマンドに対する応答を記載したものとがある。
また、通信相手から受信するHTTPリクエストのうち、第1のメッセージコントローラ40で処理すべきものも、同様な形式であり、例えば、Content-Typeヘッダの内容により、それと見分けることができる。HTTPリクエストに埋め込まれて通信相手から引き渡されるSOAPエンベロープには、(通信装置10にとっての)受信コマンドを記載したものと、送信コマンドに対する応答を記載したものとがある。
また、第1のメッセージコントローラ40が通信相手から受け取るHTTPレスポンスの例を図12に示す。
図12に示すように、このHTTPレスポンスは、形式としては、図11に示したHTTPリクエストとHTTPヘッダ部が異なるのみであり、ボディ部には、HTTPリクエストの場合と同様に詳細な図示は省略しているが、MIMEに従ったマルチパートのSOAPエンベロープが記載される。SOAPエンベロープの内容については、当然コマンドやコマンド応答の内容に従って異なるものである。
HTTPレスポンスに埋め込まれて通信相手から引き渡されるSOAPエンベロープには、受信コマンドを記載したものと、送信コマンドに対する応答を記載したものとがある。
また、第1のメッセージコントローラ40が通信相手に送信するHTTPレスポンスも、同様な形式であり、HTTPレスポンスに埋め込んで通信相手に引き渡すSOAPエンベロープには、送信コマンドを記載したものと、受信コマンドに対する応答を記載したものとがある。
次に、これらのHTTPリクエスト又はHTTPレスポンスに記載されるパートの具体例を図13乃至図16に示す。
図13に示すのは、コマンドを記載したパートの第1の例である。
この例においては、まず、エンティティヘッダの部分の「X-SOAP-Type」ヘッダに、このパートに記載されているSOAPメッセージがSOAPリクエストであるかSOAPレスポンスであるかを示す情報を記載している。この例では、値の「Request」により、SOAPリクエストであること、すなわちコマンドを記載したSOAPメッセージであることを示している。
また、「SOAPAction」ヘッダは、SOAPリクエストの内容を示すものであり、この例では、「http://www.…」というURI(Uniform Resource Identifier)によりリクエストの内容を示している。なお、「SOAPAction」ヘッダは、SOAPメッセージがSOAPレスポンスである場合には付加しないため、メッセージの受信側において、このヘッダの有無により、SOAPメッセージがSOAPリクエストであるかSOAPレスポンスであるかを判断することもできる。
そして、「Envelope」タグの属性として、名前空間の宣言を行っている。そしてここでは、SOAPで標準として定義されている名前空間の他に、「http://www.example.com/header」及び「http://www.example.com/server」のURIで特定される名前空間の宣言を行っている。従って、「n」の名前空間接頭辞が付されたXMLタグについては「http://www.example.com/header」のURIで特定される名前空間に属するタグであることがわかり、「ns」の名前空間接頭辞が付されたXMLタグについては「http://www.example.com/server」のURIで特定される名前空間に属するタグであることがわかる。
またSOAPヘッダには、「要求ID」のXMLタグの内容として、このコマンドのIDである「12345」が記載されている。そして、SOAPボディには、送信側の送信コマンドシートの「メソッド名」の項目に記憶されており、受信側の受信コマンドシートの「メソッド名」の項目に記憶させるメソッドを指定する情報として、「異常通知」タグが記載されている。また、その下位のタグ「エラーID」や「説明」の要素として、送信側の送信コマンドシートの「入力パラメータ」の項目に記憶されており、また受信側の受信コマンドシートの「入力パラメータ」の項目に記憶させる引数が記載されている。ここでは異常通知の通知内容が記載されている。
図14に示すのは、図13に示したコマンドに対する応答を記載したパートの例である。
この例においては、まず、エンティティヘッダの部分の「X-SOAP-Type」ヘッダの値を「Response」と記載することにより、このパートに記載されているSOAPメッセージがSOAPレスポンスであること、すなわちコマンド応答を記載したSOAPメッセージであることを示している。
また、この例においても、名前空間の宣言は図13に示した例と同様である。そして、SOAPヘッダには、「コマンドID」のXMLタグの内容として、応答を生成した送信コマンドのIDである「12345」が記述されている。SOAPボディには、「異常通知」コマンドに対する応答であることを示すための「異常通知Response」タグが設けられ、その下位のタグに、コマンド応答の内容が記載される。ここでは、異常通知を正常に受信した旨の情報が記載されている。そして、この情報は、コマンド受信側の受信コマンドシートの「出力パラメータ」の項目に記憶されていたものであり、コマンド送信側の送信コマンドシートの「出力パラメータ」の項目に記憶されるものである。
図15に示すのは、コマンドを記載したパートの第2の例である。
この例においても、図13の場合と同様に、「X-SOAP-Type」ヘッダの値の「Request」により、このパートに記載されているSOAPエンベロープがSOAPリクエストであることを示し、「SOAPAction」ヘッダの情報により、SOAPリクエストの内容を示している。
また、「Envelope」タグの属性として、名前空間の宣言を行っている点も、図13の場合と同様である。そしてここでは、SOAPで標準として定義されている名前空間の他に、「http://www.example.com/header」及び「http://www.example.com/client」のURIで特定される名前空間の宣言を行っている。
SOAPヘッダには、「要求ID」のXMLタグの内容として、このコマンドのIDである「98765」が記載されている。そして、SOAPボディには、コマンドシートの「メソッド名」に記憶されるべきメソッドを指定する情報として、「センサ値取得」タグが記載され、その下位のタグ「センサID」の要素として、「入力パラメータ」に記憶されるべき引数が記載されている。ここではセンサ値を取得するセンサのIDが記載されている。
図16に示すのは、受信コマンドに対する応答を記載したパートの例である。
この例においても、図16の場合と同様に、エンティティヘッダの部分の「X-SOAP-Type」ヘッダの値を「Response」と記載することにより、このパートに記載されているSOAPメッセージがSOAPレスポンスであることを示している。
また、この例においても、名前空間の宣言は図15に示した例と同様である。そして、SOAPヘッダには、「コマンドID」のXMLタグの内容として、応答を生成した受信コマンドのIDである「98765」が記述されている。SOAPボディには、「センサ値取得」コマンドに対する応答であることを示すための「センサ値取得Response」タグが設けられ、その下位のタグに、コマンド応答の内容が記載される。ここでは、値取得を要求されたセンサの示す値の情報が記載されている。
次に、図8に示した第1のメッセージコントローラ40の機能を実現するための処理を、図17乃至図21のフローチャートを用いて説明する。これ以降の図も含め、各フローチャートに示す処理は、通信装置10のCPU101が、所要の制御プログラムを実行することによって行うものである。
まず、図17に、通信装置10が通信クライアントとして機能する場合の、メッセージの収集及び分配処理の基本動作のフローチャートを示す。
通信装置10のCPU101は、サーバ/クライアント切り替え部45aにより通信装置10が通信クライアントとして機能する状態となっている場合、送信メッセージ収集部45が送信コマンドやコマンド応答等の読み出しを試みるタイミングになると、図17のフローチャートに示す処理を開始する。
そして、まず送信コマンドの収集処理を行う(S11)。この処理は、送信コマンドプール41から通信相手に送信すべき送信コマンドを収集する処理であり、収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
次に、受信コマンドに対する応答である受信コマンド実行結果の収集処理を行う(S12)。この処理は、受信コマンドプール42から通信相手に送信すべきコマンド応答を収集する処理であり、やはり収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
その後、ステップS11及びS12の処理で生成したパートを1つにマージして、すべてのパートを含むHTTPリクエストを生成し(S13)、そのHTTPリクエストを通信相手に送信する(S14)。
ここまでの処理において、ステップS11及びS12ではCPU101は送信メッセージ収集部45として機能し、ステップS13及びS14ではHTTPリクエスト送信部21として機能する。
次に、HTTPリクエストに対する通信応答として通信相手からHTTPレスポンスを受信する(S15)。そして、受信したHTTPレスポンスのHTTPボディを各パートに分割する(S16)。ここで、各パートへの分割は、「MIME_boundary」で区分された要素に分割することであり、またここで全てのパートに関して分割する。
そしてその後、分割して得た全てのパートを順に対象として、ステップS17乃至S19の処理を繰り返す。この処理においては、まず対象のパートが受信コマンドを記載したパートか否か判断する(S17)。そして、受信コマンドであれば受信コマンド登録処理を行う(S18)。また、受信コマンドでないときは、送信コマンドに対する応答が記載されたパートであるので、応答通知処理を行う(S19)。
ステップS18又はS19の後は、ステップS17に戻り、次のパートを対象として処理を繰り返す。そして、全てのパートについてこれらの処理を行った時点で、図17のフローチャートに示す処理を終了する。
ここまでの処理において、ステップS15及びS16ではCPU101はHTTPレスポンス受信部22として機能し、ステップS17乃至S19では受信メッセージ分配部46として機能する。
次に、図17のフローチャートに示した処理について、一部分ずつより詳細に示したフローチャートを用いて説明する。
図18は、図17のステップS11乃至S14の部分の処理をより詳細に示したフローチャートである。
この処理においては、通信装置10のCPU101はまず、送信コマンドプール41から、「状態」が「未送信」である送信コマンドシートの「メソッド名」と「入力パラメータ」の内容を、送信すべき送信コマンドとして収集し、「コマンドID」の内容もそのコマンドのコマンドIDとして収集する(S21)。「未送信」という「状態」は、コマンドが送信コマンド生成部61によって生成された後、まだ通信相手に通知されていないことを示すものであるので、これを基準に通信相手に送信すべきコマンドを抽出できる。
その後、ステップS21で収集した全ての送信コマンドを順次対象として、ステップS22乃至S24の処理を繰り返す。これらの処理においては、まず対象の送信コマンドとそのコマンドIDとを、これらの情報がそれぞれSOAPボディとSOAPヘッダとに含まれるXML文書に変換し(S22)、対象のコマンドに関するパートとなるSOAPエンベロープを生成する(S23)。そして、対象の送信コマンドを記載していた送信コマンドシートの「状態」を「応答待ち」に変更する(S24)。「応答待ち」という「状態」は、コマンドを通信相手に通知済であることを示すものである。
これらが全て完了した後、CPU101は、受信コマンドプール42から、「状態」が「処理完了」である受信コマンドシートの「出力パラメータ」の内容を、受信コマンドに対するコマンド応答のうち送信すべきものとして収集し、「コマンドID」の内容も、対応する受信コマンドのコマンドIDとして収集する(S25)。「処理完了」という「状態」は、受信コマンドに対応する処理が受信コマンド実行結果生成部62によって実行され、コマンド応答が生成されて受信コマンドプール42に登録された後、まだ通信相手に通知されていないことを示すものであるので、これを基準に通信相手に送信すべきコマンド応答を抽出できる。
その後、ステップS25で収集した全てのコマンド応答を順次対象として、ステップS26乃至S28の処理を繰り返す。これらの処理は、まず対象のコマンド応答とその応答と共に収集したコマンドIDとを、これらの情報がそれぞれSOAPボディとSOAPヘッダとに含まれるXML文書に変換し(S26)、対象のコマンド応答に関するパートとなるSOAPエンベロープを生成する(S27)処理である。これらの処理は、対象が異なる点以外はステップS22及びS23の処理と同じものである。そして、次に対象のコマンド応答を記載していた受信コマンドシートの「状態」を「応答済」に変更する(S28)。「応答済」という「状態」は、コマンド応答を通信相手に通知済であることを示すものである。
そして、ここまでの処理が全て完了した後、CPU101は、ステップS23又はS27で生成した各パートをマージし、図11に示したようなマルチパートのHTTPリクエストを生成して通信相手に送信する(S29)。
なお、ステップS24又はS28で行った「状態」の変更は、実際にこの送信が終了してから行うようにしてもよい。このようにすることにより、通信エラーが発生しても、送信しようとしていたコマンド及びコマンド応答を再度送信の対象とすることができるので、システムの信頼性が向上する。
以上でHTTPリクエストの送信に関する処理を終了し、図17のステップS15以降に相当する処理に進む。
図19は、図17のステップS15以下の部分の処理をより詳細に示すフローチャートである。図18のステップS29の次の処理は、この図ではステップS31に該当する。
この処理においては、通信装置10のCPU101はまず、送信したHTTPリクエストに対するHTTPレスポンスの受信を待ち、通信相手からこれを受信する(S31)。これを受信すると、そのHTTPボディを解析して各パートに分割する(S32)。
そしてその後、分割して得た各パートを順次対象として、ステップS33乃至ステップS41の処理を繰り返す。
この部分の処理においては、まず、対象のパートが受信コマンドであるか否か判断する(S33)。上述したように、HTTPレスポンスには、受信コマンドと、送信コマンドに対する応答とが含まれている可能性があるので、対象のパートがこのいずれであるかを判断するのである。そして、この判断は、対象のパートにSOAPActionヘッダが存在するか否か、あるいはX-SOAP-Typeヘッダの内容によって判断することができる。
ステップS33で受信コマンドでなければ、そのパートは送信コマンドに対する応答であるので、そのパートのXML文書を解析して送信コマンドシートに登録できる形式のデータに変換し(S34)、送信コマンドプール41からそのコマンド応答に対応する送信コマンドを探索し、その送信コマンドについての送信コマンドシートの「出力パラメータ」の項目にコマンド応答のデータを登録する(S35)。なお、コマンド応答には、「コマンドID」の情報として、送信コマンドの送信時に付したものと同じコマンドIDが付してあるものとし、送信コマンドの探索は、この情報をキーとして行うことができる。
データの登録が終わると、データを登録した送信コマンドシートの「状態」を「応答受信済」に変更してその旨を示す(S36)。そして、「コマンド実行結果の通知先」に登録されている通知先に、応答があった旨及びその内容を通知する(S37)。この通知によって、送信コマンドを生成した送信コマンド生成部61は、その生成したコマンドに応答があったことを認識し、応答に応じた処理を行うことができる。
例えば、異常通知を発するアプリ60の送信コマンド生成部61が通信相手に異常通知を行う旨の送信コマンドを生成した場合、このコマンドが通信相手に送信されると、通信相手はこれを正しく受け取った旨のコマンド応答を返してくる。そして、通信装置10側では、このコマンド応答を受信すると、ここに含まれるコマンドIDを基にどの送信コマンドに対する応答であるかを探索し、見つかった送信コマンドと対応させてそのコマンド応答を登録する。そして、そのコマンドの実行結果通知先として登録されている、異常通知を発するアプリ60の送信コマンド生成部61に、応答があった旨及びその内容を通知するのである。
なお、通知先には応答があった旨のみを通知し、この通知を受けた送信コマンド生成部61が送信コマンドシートを参照して実行結果を取得するようにしてもよい。
このステップS37の処理においては、CPU101がコマンド応答通知部43として機能する。
以上のステップS37までの処理が終了すると、次のパートがあればそれを対象としてステップS33からの処理を繰り返す。
一方、ステップS33で受信コマンドであれば、そのパートのXML文書を解析して受信コマンドシートに登録できる形式のデータに変換し(S38)、その受信コマンドに対応する受信コマンドシートを作成して、コマンドIDと共に受信コマンドプールに登録する(S39)。ここで、受信コマンドの内容は受信コマンドシートの「メソッド名」及び「入力パラメータ」の項目に登録し、パートに記載されていたコマンドIDは「コマンドID」の項目に登録する。また、「コマンドの通知先」の項目には、「メソッド名」に記憶させたメソッドを実行させる受信コマンド実行結果生成部62への参照情報を、予め用意してあるメソッドとアプリ60や受信コマンド実行結果生成部62との対応関係の情報を参照して登録する。「状態」の初期値は「未処理」であり、「出力パラメータ」の初期値はNULLである。
その後、そのコマンドを登録した受信コマンドシートの「状態」を「処理中」に変更してコマンドに係る処理を実行中であることを示し(S40)、その受信コマンドシートの「コマンドの通知先」の情報に基づいて受信コマンド実行結果生成部62を呼び出し、「メソッド名」や「入力パラメータ」のデータを渡して受信コマンドに関する処理を実行させる(S41)。なお、受信コマンドに関する処理は、このフローチャートには示していないが、CPU101が別途実行することになる。
そして、これが完了すると、実行結果を受信コマンドシートの「出力パラメータ」の項目に登録する(S42)と共に、受信コマンドシートの「状態」を「処理完了」に変更し、処理が完了したことを示す(S43)。
以上のうちステップS40及びS41の処理においては、CPU101がコマンド通知部44として機能する。
以上のステップS43までの処理が終了すると、次のパートがあればそれを対象としてステップS33からの処理を繰り返す。
全てのパートについてステップS33乃至S43の処理が終了すると、図19のフローチャートに示した処理は終了する。
なお、ステップS40乃至S43の処理は、アプリ側の処理能力を考慮して、図19のフローチャートに示した処理とは別に非同期で行うようにしてもよい。
図20に、このようにする場合にCPU101に実行させる処理のフローチャートを示す。
この場合、CPU101は適当なタイミングで図20のフローチャートに示す処理を開始する。
そして、この処理においては、まず受信コマンドプールに「状態」が「処理待ち」である受信コマンドシートがあるか否か判断し(S51)、なければこのような受信コマンドシートが追加されるまで待機する。そして、このような受信コマンドシートを発見した場合、その1つを処理対象とし、その受信コマンドシートの「状態」を「処理中」に変更する(S52)。
その後、その受信コマンドシートの「コマンドの通知先」の情報に基づいて受信コマンド実行結果生成部62を呼び出し、「メソッド名」や「入力パラメータ」のデータを渡して受信コマンドに関する処理を実行させる(S53)。なお、受信コマンドに関する処理は、このフローチャートには示していないが、CPU101が別途実行することになる。
そして、これが完了すると、実行結果を受信コマンドシートの「出力パラメータ」の項目に登録する(S54)と共に、受信コマンドシートの「状態」を「処理完了」に変更し、処理が完了したことを示す(S55)。そして、これが完了するとステップS51に戻って処理を繰り返す。
以上の処理は、複数のスレッド(例えば4スレッド)で同時に行うようにしてもよい。処理対象となった受信コマンドシートの「状態」は、「処理待ち」ではないため、複数のスレッドで同時に処理を行っても、1つの受信コマンドシートを重複して処理対象としてしまうことはない。
このような処理を行うようにすれば、任意のタイミングで受信コマンドを実行することができるので、実行に時間のかかるコマンドがあった場合でも、以後の処理が滞ることがない。そして、実行の終了したものから順に、その結果をコマンド応答として通信相手に送信可能な状態にすることができる。
次に、図21に、通信装置10が通信サーバとして機能する場合の、メッセージの収集及び分配処理の基本動作のフローチャートを示す。
通信装置10のCPU101は、サーバ/クライアント切り替え部45aにより通信装置10が通信サーバとして機能する状態となっている場合、通信相手からHTTPリクエストが送信されてくると、図21のフローチャートに示す処理を開始する。
この処理においては、まずそのHTTPリクエストを受信する(S61)。そして、受信したHTTPリクエストがマルチパートのものか否か判断する(S62)。この判断は、例えばHTTPヘッダにおける「Content-Type」の項目に「multipart」の情報が記載されているか否かによって行うことが考えられる。そして、ここでマルチパートであれば、受信したHTTPリクエストは第1のメッセージコントローラ40で処理すべきものと判断し、ステップS63以下の処理に進む。
そして、ステップS63以下の処理においては、まず受信したHTTPリクエストのHTTPボディを各パートに分割する(S63)。ここで、各パートへの分割は、「MIME_boundary」で区分された要素に分割することであり、またここで全てのパートに関して分割する。
そしてその後、分割して得た全てのパートを順に対象として、ステップS64乃至S66の処理を繰り返す。この処理においては、まず対象のパートが受信コマンドを記載したパートか否か判断する(S64)。そして、受信コマンドであれば受信コマンド登録処理を行う(S65)。また、受信コマンドでないときは、送信コマンドに対する応答が記載されたパートであるので、応答通知処理を行う(S66)。
ステップS65又はS66の後は、ステップS64に戻り、次のパートを対象として処理を繰り返す。そして、全てのパートについてこれらの処理を行った時点で、次のステップS67に進む。
ここまでの処理において、CPU101は、ステップS61及びS63ではHTTPリクエスト受信部31として機能し、ステップS62では通信要求振り分け部76として機能し、ステップS64乃至S66では受信メッセージ分配部46として機能する。
次に、CPU101は、送信コマンドの収集処理を行う(S67)。この処理は、送信コマンドプール41から通信相手に送信すべき送信コマンドを収集する処理であり、収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
次に、受信コマンドに対する応答である受信コマンド実行結果の収集処理を行う(S68)。この処理は、受信コマンドプール42から通信相手に送信すべきコマンド応答を収集する処理であり、やはり収集したデータからSOAPエンベロープによるパートを生成する処理を含む。
その後、ステップS67及びS68の処理で生成したパートを1つにマージして、すべてのパートを含むHTTPレスポンスを生成し(S69)、そのHTTPレスポンスを、ステップS61で受信したHTTPリクエストに対する通信応答として通信相手に送信して(S70)処理を終了する。
ここまでの処理において、ステップS67及びS68ではCPU101は送信メッセージ収集部45として機能し、ステップS69及びS70ではHTTPレスポンス送信部32として機能する。
また、ステップS62でマルチパートでない場合には、受信したHTTPリクエストは第2のメッセージコントローラ50で処理すべきものと判断し、ステップS71で後述するような第2のメッセージコントローラ50による処理を行い、ステップS70でその結果をHTTPレスポンスに記載して通信相手に送信し、処理を終了する。
以上のうち、ステップS61乃至S70の処理の詳細については、通信装置10が通信クライアントとして機能する場合の処理の説明において図18及び図19を用いて説明した処理と同様であるので、詳細な説明は省略する。ただし、HTTPリクエストを受信してHTTPレスポンスを送信することから受信用のステップS61乃至S66の処理を送信用のステップS67乃至S69の処理よりも先に行う点と、ステップS62の処理が追加された点は、通信クライアントとして機能する場合の処理と異なる。
以上のような各処理を行うことにより、通信装置10は、通信クライアントとして機能する場合も、通信サーバとして機能する場合も、通信相手に送信すべき動作要求と通信相手から受信した動作要求に対する動作応答とを一括して通信相手に送信することができる。また、通信相手からの動作要求と通信相手に送信した動作要求に対する動作応答とを一括して通信相手から受信して処理することができる。
特に、通信サーバとして機能する場合に、通信相手に対する動作要求をその通信相手からの通信要求に対する通信応答に含めて送信できるので、自身がファイアウォールの外側にある場合でも、ファイアウォールの内側の通信装置に対して動作要求を送信することができる。
また、コマンドやコマンド応答を受信した場合にアプリ60の送信コマンド生成部61や受信コマンド実行結果生成部62に通知できるので、アプリ60側で各送信コマンド生成部61や受信コマンド実行結果生成部62が個別にコマンドプールを検索する必要がなく、このような処理を行うためのリソースを節約して処理負荷を低減できると共に、このような処理を行うプログラムを開発するための労力も節減できる。
なお、ここでは送信すべき全てのパートを全て生成してからマージして送信を行うようにし、また全てのパートを受信してからこれを各パートに分割して処理を行うように説明したが、このようにする必要はない。
送信については、まず始めにHTTPヘッダを送信し、以後パートを生成するたびにそのパートを順次送信し、全てのパートの送信が完了した時点でその旨のデータを送信するようにしてもよい。このようにしても、これらの課程で送信されるデータが1つのみのHTTPヘッダを持つ論理的に連続した1つのHTTPメッセージであれば、1回のセッションで転送でき、ネゴシエーションの処理は1回で済むので、マージして送信する場合と同様な効果を得ることができる。また、送信すべきデータのバッファに必要なメモリ容量を低減できるので、低コストの通信装置で大きなデータを取り扱うことができる。
また、受信側でも、各パートに関する処理を、各パートを受信するたびに順次行うようにすることができる。このようにした場合に容量を低減できることは、送信側の場合と同様である。
ところで、通信装置10において、メッセージの送受信に第2のメッセージコントローラ50を用いる場合、HTTPリクエストにはコマンドを、HTTPレスポンスにはコマンド応答を、それぞれ1つずつ記載して転送することは上述した通りである。
図22に、このような転送を実現するための第2のメッセージコントローラ50の構成を示す。この図で用いている線の種類とその意味は、図4の場合と同様である。
図22に示すように、第2のメッセージコントローラ50には、コマンド送信部51,実行結果受信部52,実行結果振り分け部53,コマンド受信部54,コマンド振り分け部55,実行結果送信部56を設けている。
そして、コマンド送信部51は、アプリ60に含まれる送信コマンド生成部61が通信相手に対するコマンド(送信コマンド)を生成し、送信先切り替え部71がそのコマンドの送信に第2のメッセージコントローラ50の使用を選択した場合に、そのコマンドから送信メッセージを生成し、HTTPリクエスト送信部21に渡して通信相手に送信させる機能を有する。
なお、送信メッセージの形式は、図8に示した送信メッセージ収集部45が生成するものと同じものでよく、やはりシリアライザを用いて生成できる。また、HTTPリクエスト送信部21に送信させるHTTPリクエストには、メッセージを1つしか記載しないため、マルチパートにする必要はない。そしてこの場合、HTTPヘッダにおける「Content-Type」の内容は、「text/xml」となる。
また、実行結果受信部52は、HTTPレスポンス受信部22を介して通信相手からHTTPレスポンスを受け取る機能と、受信したHTTPレスポンスに含まれるSOAPレスポンスから、コマンド応答に係るデータを取り出す機能を有する。このデータの取り出しは、デシリアライザを用いて行うことができる。
そして、実行結果振り分け部53は、そのデータを、コマンド生成元の送信コマンド生成部61に渡す機能を有する。第2のメッセージコントローラ50を通信に使用する場合には、コマンド応答に係るSOAPレスポンスは、送信コマンドに係るSOAPリクエストを記載したHTTPリクエストに対するHTTPレスポンスに記載されて通信相手から送られてくる。従って、コマンドとコマンド応答の対応関係は容易に把握でき、コマンド応答が帰ってくるまでコマンド生成元の送信コマンド生成部61の情報を記憶しておくようにすれば、実行結果振り分け部53はこの情報を参照して振り分けを行うことができる。
また、コマンド受信部54は、HTTPリクエスト受信部31を介して通信相手からHTTPリクエストを受け取る機能と、受信したHTTPリクエストに含まれるSOAPリクエストから、コマンドに係るデータを取り出す機能を有する。なお、コマンド受信部54が受け取るのは、通信要求振り分け部76が第2のメッセージコントローラ50で処理すべきものと判断したHTTPリクエストである。
そして、コマンド振り分け部55は、コマンド受信部54が取り出したコマンドに係るデータを、そのコマンドに係る処理を行わせるべき受信コマンド実行結果生成部62に渡し、コマンドに係る処理を実行させる機能を有する。コマンドをどの受信コマンド実行結果生成部62に渡すかは、予め用意してあるメソッドとアプリ60や受信コマンド実行結果生成部62との対応関係の情報を参照して決定するようにすればよい。
また、実行結果送信部56は、受信コマンド実行結果生成部62が生成したコマンド応答を取得し、そのコマンド応答に係る送信メッセージを生成し、HTTPレスポンス送信部32に渡して通信相手に送信させる機能を有する。この送信メッセージの形式も、図8に示した送信メッセージ収集部45が生成するものと同じものでよい。
以上のような第2のメッセージコントローラ50を用いてコマンドやコマンド応答を送受信する場合の処理の流れについては、以下の図23及び図24のフローチャートの説明において述べる。
次に、図23に、通信装置10において送信コマンド生成部61が通信相手に送信するコマンドを生成した場合にCPU101が実行する、そのコマンドに関する一連の処理のフローチャートを示す。
この処理においては、まずステップS81で、送信コマンド生成部61の機能により、アプリ60の機能に応じた送信コマンドを生成する。そして、ステップS82で、送信先切り替え部71の機能により、その送信コマンドを、ファイアウォール越しの通信により通信相手に送信するか否かを判断する。
そして、ここでファイウォール越しの通信であれば、第1のメッセージコントローラ40を用いて通信相手に送信コマンドを送信すべく、ステップS83で送信コマンドを第1のメッセージコントローラ40の送信コマンドプール41に登録する。その後、ステップS84及びS85で、通信装置10が通信クライアントとして機能するか通信サーバとして機能するかに応じて、図17又は図21を用いて説明したような、第1のメッセージコントローラ40によるコマンド送信及びコマンド応答登録の処理を行い、送信コマンドを通信相手に送信すると共に、そのコマンドに対するコマンド応答を通信相手から受信して送信コマンドプール41に登録する。
この図では破線でステップS86として示すが、ステップS85の処理には、図19のステップS37に示したような、コマンド応答通知部43の機能により、送信コマンドを生成した送信コマンド生成部61にそのコマンド応答を渡す処理も含む。そして、ステップS93で、送信コマンド生成部61の機能により、渡されたコマンド応答の内容に応じた処理を行って、一連の処理を終了する。
一方、ステップS82でファイアウォール越しの通信でなければ、第2のメッセージコントローラ50を用いて通信相手に送信コマンドを送信すべく、ステップS87で送信コマンドを第2のメッセージコントローラ50のコマンド送信部51に渡す。そして、ステップS88で、コマンド送信部51の機能により送信コマンドに係るSOAPリクエストを生成し、ステップS89で、HTTPリクエスト送信部21の機能によりそのSOAPリクエストをHTTPリクエストに記載して、コマンドの送信先の通信相手に送信する。
その後、ステップS90で、HTTPレスポンス受信部22の機能により、送信したHTTPリクエストと対応するHTTPレスポンスを受信し、ステップS91でそのHTTPレスポンスを第2のメッセージコントローラ50の実行結果受信部52に渡す。
そして、ステップS92で、実行結果受信部52と実行結果振り分け部53の機能により、受信したHTTPレスポンス中のSOAPレスポンスに記載されているコマンド応答(実行結果)の情報を、対応するコマンドを生成した送信コマンド生成部61に渡す。そしてこの場合も、ステップS93で、送信コマンド生成部61の機能により、渡されたコマンド応答に係る処理を行って、一連の処理を終了する。
通信装置10は、以上のような処理を行うことにより、通信相手の位置に応じて適切な通信プロトコルを選択して、動作要求の送信及びその動作要求に対する動作応答の受信を行うことができる。また、この場合において、送信コマンド生成部61は、いずれのプロトコルを利用する場合でも共通のものとすることができる。
次に、図24に、通信装置10において通信相手から自身に対するコマンドを記載したHTTPリクエストが送信されてきた場合にCPU101が実行する、そのコマンドに関する一連の処理のフローチャートを示す。
この処理においては、まずステップS101で、HTTPリクエスト受信部31の機能により、送信されてきたHTTPリクエストを受信する。そして、ステップS102で、通信要求振り分け部76の機能により、そのHTTPリクエストがマルチパートのものか否か判断する。
そして、マルチパートであれば、受信したHTTPリクエストを第1のメッセージコントローラ40を用いて処理すべく、ステップS103でそのHTTPリクエストを第1のメッセージコントローラ40の受信メッセージ分配部46に渡す。そして、ステップS104で、図21を用いて説明したような、第1のメッセージコントローラ40によるコマンド登録の処理を行い、受信コマンドプール42に受信したコマンドを登録する。
この図では破線でステップS105として示すが、ステップS104の処理には、図19のステップS41あるいは図20のステップS53に示したような、コマンド通知部44の機能により、そのコマンドに係る処理を行う受信コマンド実行結果生成部62に通知する処理も含む。
一方、ステップS102でマルチパートでなければ、受信したHTTPリクエストを第2のメッセージコントローラ50を用いて処理すべく、ステップS106でそのHTTPリクエストを第2のメッセージコントローラ50のコマンド受信部54に渡す。そして、ステップS107で、コマンド受信部54及びコマンド振り分け部55の機能により、受信したHTTPリクエスト中のSOAPリクエストからコマンド(受信コマンド)を取得し、そのコマンドに係る処理を行う受信コマンド実行結果生成部62に通知する。
そして、ステップS105とステップS107のどちらで通知を行った場合も、ステップS108に進み、受信コマンド実行結果生成部62の機能により、受信コマンドの実行に係る処理を行う。
そして、次のステップSXで、実行結果振り分け部75の機能により、通信装置10が通信相手との間でファイアウォール越しの通信を行っているか否か判断する。ここでファイアウォール越しであれば、第1のメッセージコントローラ40によりコマンド応答を通信相手に送信させるべく、ステップS109で、処理の結果を第1のメッセージコントローラ40に渡し、ステップS110で、受信コマンド実行結果生成部62の機能により、その処理の結果を受信コマンドについての出力パラメータとして第1のメッセージコントローラ40の受信コマンドプール42に書き込み、その受信コマンドについての受信コマンドシートの「状態」を「処理完了」に変更する。その後、ステップS111で、図21を用いて説明したような、第1のメッセージコントローラ40によるコマンド応答送信の処理を行い、コマンド応答を通信相手に送信して処理を終了する。
一方、ステップSXでファイアウォール越しでなければ、ステップS112で、受信コマンド実行結果生成部62の機能により、処理の結果を第2のメッセージコントローラ50の実行結果送信部56に渡す。そして、ステップS113で実行結果送信部56の機能によりコマンド応答に係るSOAPレスポンスを生成し、ステップS114でHTTPレスポンス送信部32の機能により、生成したSOAPレスポンスをステップS101で受信したHTTPリクエストと対応するHTTPレスポンスに記載して通信相手に送信し、処理を終了する。
なお、図4の説明で述べたように、実行結果振り分け部75の機能は、専用のロジックを設けなくても、単に、受信コマンド実行結果生成部62が、コマンドの通知元のメッセージコントローラにコマンド実行結果を渡すようにすればよい。従って、このような観点からは、図24のうち破線で囲んだステップSX,S109,S112の部分の処理は、受信コマンド実行結果生成部62が受信コマンドの通知元にステップS108での処理の結果を渡す処理であると考えることができる。
通信装置10は、以上のような処理を行うことにより、通信相手の位置に応じて適切な通信プロトコルを選択して、動作要求の受信及びその動作要求に対する動作応答の送信を行うことができる。また、この場合において、受信コマンド実行結果生成部62は、いずれのプロトコルを利用する場合でも共通のものとすることができる。
また、通信装置10が通信相手からSOAPリクエストを記載したHTTPレスポンスを受信する場合、すなわち第1のメッセージコントローラ40を用いて通信し、かつ通信装置10が通信クライアントとして機能する場合には、受信したHTTPレスポンスについて、図24のステップS103乃至S105及びS108乃至S110の処理を行うことにより、そこに記載されたコマンドに係る処理を行って応答を返すことができる。
そして、複数の通信装置間で動作要求と動作応答とを送受信させるような通信システムを構築する場合において、各通信装置に以上説明してきたような通信装置10のような機能を持たせ、自身が通信相手に対してファイアウォールの外側にあるとき、第1のメッセージコントローラ40を用いて通信させ、自身と前記第2の通信装置との間にファイアウォールがないとき、第2のメッセージコントローラ50を用いて通信させるようにすれば、通信相手の位置に応じて適切な通信プロトコルを選択して、動作要求の受信及びその動作要求に対する動作応答の送信を行うことができる。
すなわち、通信要求がファイアウォールにより遮断されてしまう場合には、これを回避可能なプロトコルを使用しつつ、通信要求の送信に支障がない場合には、処理負荷の低いプロトコルを使用するので、通信の処理負荷を抑え、処理を効率化することができる。
また、上記のようなプロトコルの切り替えを可能としておくことにより、ファイアウォールとの位置関係を考慮することなく通信装置を配置して通信システムを構築できるため、通信システムの構築作業も効率化することができる。
〔実施形態の変形例:図25〕
次に、上述した実施形態の種々の変形例について説明する。
まず、上述した実施形態では、通信システムを構成する全ての通信装置が、上述した通信装置10と同様な機能を有する例について説明したが、このようにすることは必須ではない。例えば、常に間にファイアウォールがないような通信相手としか通信しない装置には、第1のメッセージコントローラ40を設ける必要はない。通信装置10は、第2のメッセージコントローラ50を用いて通信を行えば、第1のメッセージコントローラ40を持たない通信相手との間でも動作要求や動作応答を送受信することができる。また、同様の理由により、第1のメッセージコントローラ40を用いた通信において、通信サーバと通信クライアントの双方として機能できるようにすることも、必須ではない。
また、複数の通信装置が共通の通信相手と通信したり、1台の通信装置が複数の通信相手と通信したり、あるいは複数の通信装置がそれぞれ複数の通信相手と通信したりするシステム構成も可能である。
ただし、コマンドやコマンド応答の送信元や送信先が複数考えられる場合には、第1のメッセージコントローラ40を利用する場合において、これらの発信元と宛先とを把握できるように、これらの情報もコマンドやコマンド応答のメッセージに含め、またコマンドシートにも記載して管理するようにするとよい。
さらに、上述の実施形態には、これら以外の変形を適用することも可能である。例えば、送信コマンドプール41及び受信コマンドプール42に登録する送信コマンドシート及び受信コマンドシートを、XMLドキュメントとして記載するようにしてもよい。「入力パラメータ」をデシリアライズする前のXMLドキュメントとして保存したり、「出力パラメータ」をシリアライズした後のXMLドキュメントとして保存したりしてもよい。
また、送信メッセージ収集部45によるコマンドやコマンド応答の収集は、必ずしもHTTPリクエストあるいはHTTPレスポンスの送信直前に行う必要はない。送信タイミングとは関係なく予め送信メッセージの生成を行って記憶手段に記憶させておき、送信が要求された場合に直ちにメッセージの送信を開始できるようにしておいてもよい。
また、送受信するコマンドやコマンド応答の情報量に制限を設けても構わない。特に、受信するコマンドの情報量を制限するようにすると、受信側がメモリ容量の限られた装置である場合にメモリの使用量を抑えることができる。
また、上述した実施形態においては、RPCを実現する上位プロトコルとしてSOAPを採用し、アプリケーションは直接プールを操作してRPCを実現しているが、アプリケーションとプールとの間にCORBA(Common Object Request Broker Architecture)やJAVA(登録商標)RMI(Remote Method Invocation)とのブリッジ(メッセージ変換機能)を備えることによってアプリケーションの開発効率をさらに向上させてもよい。
すなわち、上述した実施形態における、通信装置間でのコマンド及びこれに対するコマンド応答のやり取りは、XMLで記述されたSOAPメッセージにより行うこととしているが、これに限るものでなく、他の形式で記述されていてもよい。
また、コマンドやコマンド応答をプールに記憶させた際にこれをアプリ60の送信コマンド生成部61や受信コマンド実行結果生成部62に通知する機能を、第1のメッセージコントローラ40側に設けた例について説明したが、アプリ60側からプールを探索してこれらを取得する構成としてもよい。また、送信コマンド生成部61や受信コマンド実行結果生成部62が生成したコマンドやコマンド応答をプールに登録する機能を、第1のメッセージコントローラ40側に設け、アプリ60側ではこれらを単に第1のメッセージコントローラ40に渡すのみとしてもよい。
また、第1のメッセージコントローラ40を用いて通信を行う場合と、第2のメッセージコントローラ50を用いて通信を行う場合とで、動作要求の生成や、動作要求に応じた処理を行うアプリが共通であることは必須ではない。このようにした方が、通信装置10に記憶させ実行させるアプリの数を低減し、必要な記憶容量を低減できるが、メッセージコントローラとの間でのインタフェースの共通化が難しければ、各メッセージコントローラについて別々にアプリを用意することも考えられる。
また、上述した実施形態において、SOAP標準のプロトコルだけでなく、SOAPとMIMEマルチパートを組み合わせた独自のプロトコルをもこれに加えて採用することにより、HTTPリクエスト、或いはHTTPレスポンスに含まれるSOAPエンベロープを全く独立したものとして扱うこととしているが、SOAPの関連仕様として定義されたSOAPアタッチメントによって、HTTPレスポンスに含まれる第1パートのSOAPエンベロープに、第2パート以降のSOAPエンベロープへのリンクを埋め込んでこれらを関連付けて引き渡す構成にしてもよい。
更に、SOAP等の上位プロトコルの下位に位置するデータ通信のプロトコルとして、ここでは実施例としてHTTPを採用した例について説明したが、この下位プロトコルについても、FTP等の他のプロトコルを採用してもよい。
さらにまた、通信システムの構成についても、以上説明したものに限られることはない。
例えば、この発明を適用する通信装置としては、プリンタ,FAX装置,デジタル複写機,スキャナ装置,あるいはこれらの機能を備えたデジタル複合機(MFP)等の画像処理装置を始め、ネットワーク家電,自動販売機,医療機器,電源装置,空調システム,ガス・水道・電気等の計量システム,汎用コンピュータ,自動車,航空機等の電子装置に通信機能を設けた種々の通信装置が考えられる。
また、通信システムの構成例としては、例えば、図25に示すような遠隔管理システムも考えられる。
この遠隔管理システムは、インターネット13に接続して設けた管理装置120により、テレビ受像機110a,冷蔵庫110b,MFP110c,自動販売機110d,計量システム110e,空調システム110f,航空機110g,自動車110hのような被管理装置110を管理するシステムである。
そして、ここでいう管理とは、管理対象の機器から情報を取得し、その情報に基づいて何らかの動作を行うことである。この動作としては、例えば被管理装置がMFPであれば、画像形成枚数を集計したり、管理対象の装置からの異常発生通知に対応して適当なサービスセンタに通報を行い、修理担当者の派遣を促したり、管理対象装置のファームウェアのバージョン情報を取得し、そのバージョンが古いものであった場合に新しいファームウェアを送信して更新させたりといった動作が考えられる。また、取得した情報を単に蓄積するのみでもよい。
このような遠隔管理システムにおける、被管理装置110と管理装置120との間での通信にも、この発明はもちろん適用可能である。また、被管理装置110と管理装置120との間の通信を仲介装置111に仲介させることも考えられるが、このような場合には、被管理装置110と仲介装置111との間の通信、仲介装置111同士の通信、および仲介装置111と管理装置120等にも、この発明を適用することができる。
この他にも、システムの構成、具体的な処理内容、通信に使用する通信プロトコル等が上述の実施形態で説明したものに限られないことはもちろんである。例えば、通信装置間の通信経路としては、有線、無線を問わず、任意のものを用いることができる。
また、この発明によるプログラムは、コンピュータに通信装置を制御させ、通信装置10のような装置として機能させるためのプログラムであり、このようなプログラムをコンピュータに実行させることにより、上述したような効果を得ることができる。
このようなプログラムは、はじめからコンピュータに備えるROMあるいはHDD等の記憶手段に格納しておいてもよいが、記録媒体であるCD−ROMあるいはフレキシブルディスク,SRAM,EEPROM,メモリカード等の不揮発性記録媒体(メモリ)に記録して提供することもできる。そのメモリに記録されたプログラムをコンピュータにインストールしてCPUに実行させるか、CPUにそのメモリからこのプログラムを読み出して実行させることにより、上述した各機能を実現させることができる。
さらに、ネットワークに接続され、プログラムを記録した記録媒体を備える外部機器あるいはプログラムを記憶手段に記憶した外部機器からダウンロードして実行させることも可能である。
以上説明してきたように、この発明の通信装置、通信システム又は通信方法によれば、通信装置間で動作要求を送受信させる場合において、通信の効率を向上させることができる。
従って、この発明を、通信装置間で動作要求を送受信させる通信システムに適用すれば、効率のよい通信が可能な通信システムを構築することができる。
この発明の通信方法を適用する対象であり、この発明の通信システムの実施形態を含む通信システムの構成例を示す図である。 図1に示した通信装置のハードウェア構成を示す図である。 図1に示した通信装置が送受信する動作要求と動作応答の関係を示す図である。 図1に示した通信装置がRPCに関連して備える機能部及び、その各機能部間でのメッセージの受け渡し経路を示す。 図4に示した第1のメッセージコントローラを用いた場合の、通信装置間の通信シーケンスの例を示す図である。
その別の例を示す図である。 図4に示した第2のメッセージコントローラを用いた場合の、通信装置間の通信シーケンスの例を示す図である。 図4に示した第1のメッセージコントローラの機能構成を、その周辺の機能と共に示す図である。 図8に示した送信コマンドプールに記憶させる送信コマンドシートにおけるデータ構造の例を示す図である。 図8に示した受信コマンドプールに記憶させる受信コマンドシートにおけるデータ構造の例を示す図である。
図4に示した第1のメッセージコントローラが通信相手に送信させるHTTPリクエストの例を示す図である。 図4に示した第1のメッセージコントローラが通信相手から受け取るHTTPレスポンスの例を示す図である。 図4に示した通信装置が送受信するコマンドを記載したパートの第1の例を示す図である。 そのコマンドに対する応答を記載したパートの例を示す図である。 図4に示した通信装置が送受信するコマンドを記載したパートの第2の例を示す図である。
そのコマンドに対する応答を記載したパートの例を示す図である。 図4に示した通信装置が通信クライアントとして機能する場合の、メッセージの収集及び分配処理の基本動作のフローチャートである。 図17のステップS11乃至S14の部分の処理をより詳細に示すフローチャートである。 図17のステップS15以下の部分の処理をより詳細に示すフローチャートである。 図19のステップS40及びS41の処理を非同期で行う場合の処理のフローチャートである。
図4に示した通信装置が通信サーバとして機能する場合の、メッセージの収集及び分配処理の基本動作のフローチャートである。 図4に示した第2のメッセージコントローラの機能構成を、その周辺の機能と共に示す図である。 図4に示した通信装置において送信コマンド生成部が通信相手に送信するコマンドを生成した場合にCPUが実行する、そのコマンドに関する一連の処理のフローチャートである。 同じく通信装置において通信相手から自身に対するコマンドを記載したHTTPリクエストが送信されてきた場合にCPUが実行する、そのコマンドに関する一連の処理のフローチャートである。 この発明を適用する通信システムの別の構成例を示す図である。
符号の説明
1:ローカル環境、10:通信装置、21:ファイアウォール、22:LAN、
23:インターネット、20:HTTPクライアント機能部、
21:HTTPリクエスト送信部、22:HTTPレスポンス受信部、
30:HTTPサーバ機能部、31:HTTPリクエスト受信部、
32:HTTPレスポンス送信部、40:第1のメッセージコントローラ、
41:送信コマンドプール、42:受信コマンドプール、43:コマンド応答通知部、
44:コマンド通知部、45:送信メッセージ収集部、
45a:サーバ/クライアント切り替え部、46:受信メッセージ分配部、
50:第2のメッセージコントローラ、51:コマンド送信部、
52:実行結果受信部、53:実行結果振り分け部、54:コマンド受信部、
55:コマンド振り分け部、56:実行結果送信部、60:アプリ、
61:送信コマンド生成部、62:受信コマンド実行結果生成部、
71:送信先切り替え部、72:送信元記憶部、73:通信応答振り分け部、
74:送信元記憶部、75:実行結果振り分け部、76:通信要求振り分け部

Claims (16)

  1. 通信相手の装置である相手先装置との間で動作要求及び該動作要求に対する応答である動作応答を送受信する通信装置であって、
    前記相手先装置から通信要求を受信し、該相手先装置に対してその通信要求に対する通信応答を送信し、前記相手先装置に対する動作要求と、前記相手先装置から受信した動作要求に対する動作応答とを、前記通信応答に含めて一括して前記相手先装置に送信し、前記相手先装置からの動作要求と、前記相手先装置に送信した動作要求に対する動作応答とを、前記通信要求に含まれた状態で一括して前記相手先装置から受信する第1の通信手段と、
    前記相手先装置に対する動作要求を前記相手先装置に対する通信要求に含めて送信し、該相手先装置に対する動作要求に対する動作応答を該送信した通信要求に対する通信応答に含まれた状態で受信し、前記相手先装置からの動作要求を前記相手先装置からの通信要求に含まれた状態で受信し、該相手先装置からの動作要求に対する動作応答を、該受信した通信要求に対する通信応答に含めて送信する第2の通信手段と、
    前記相手先装置に対する動作要求を前記相手先装置に送信する場合に、当該通信装置が前記相手先装置に対してファイアウォールの外側にあるとき、前記第1の通信手段に該送信を行わせ、当該通信装置と前記相手先装置との間にファイアウォールがないとき、前記第2の通信手段に該送信を行わせる第1の切換手段とを備えたことを特徴とする通信装置。
  2. 請求項1に記載の通信装置であって、
    前記第1の切換手段は、当該通信装置のアドレス情報と前記相手先装置のアドレス情報とを取得し、これらのアドレス情報に基づいて、動作要求の送信を前記第1の通信手段に行わせるか前記第2の通信手段に行わせるかを決定することを特徴とする通信装置。
  3. 請求項1又は2に記載の通信装置であって、
    前記第1の通信手段が受信した動作要求を受信要求プールに記憶させる手段と、
    前記受信要求プールに記憶されている動作要求に係る動作を実行してその実行結果を該動作要求と対応させて前記受信要求プールに記憶させる要求実行手段と、
    前記第1の通信手段により前記相手先装置に送信すべき動作要求を送信要求プールに記憶させる手段とを備え、
    前記第1の通信手段は、前記相手先装置から通信要求を受信した場合に、前記受信要求プールに記憶されている動作要求に係る動作の実行が全て完了しているか否かに関わらず、前記送信要求プールに記憶されている未送信の動作要求と、前記受信要求プールに記憶されている未送信の実行結果を前記相手先装置に伝達するための動作応答とを、該通信要求に対する動作応答に含めて前記相手先装置に送信することを特徴とする通信装置。
  4. 請求項1乃至3のいずれか一項に記載の通信装置であって、
    前記第1の通信手段は、前記相手先装置から通信要求を受信し、該相手先装置に対してその通信要求に対する通信応答を送信し、前記相手先装置に対する動作要求と、前記相手先装置から受信した動作要求に対する動作応答とを、前記通信応答に含めて一括して前記相手先装置に送信し、前記相手先装置からの動作要求と、前記相手先装置に送信した動作要求に対する動作応答とを、前記通信要求に含まれた状態で一括して前記相手先装置から受信する第1の通信動作と、前記相手先装置に対して通信要求を送信し、該相手先装置からその通信要求に対する通信応答を受信し、前記相手先装置に対する動作要求と、前記相手先装置から受信した動作要求に対する動作応答とを、前記通信要求に含めて一括して前記相手先装置に送信し、前記相手先装置からの動作要求と、前記相手先装置に送信した動作要求に対する動作応答とを、前記通信応答に含まれた状態で一括して前記相手先装置から受信する第2の通信動作とを選択的に実行する手段であり、
    当該通信装置が前記相手先装置に対してファイアウォールの外側にあるとき、前記第1の通信手段に前記第1の通信動作を実行させ、当該通信装置が前記相手先装置に対してファイアウォールの内側にあるとき、前記第1の通信手段に前記第2の通信動作を実行させる第2の切換手段を備え、
    前記第1の切換手段は、当該通信装置が前記相手先装置に対してファイアウォールの内側にあるときにも、前記第1の通信手段に前記動作要求の送信を行わせることを特徴とする通信装置。
  5. 請求項3に記載の通信装置を通信相手とする通信装置であって、
    前記通信相手に対する動作要求を、該通信相手に対する通信要求に含めて送信し、該通信要求に対する通信応答に、前記送信した動作要求に対する動作応答が含まれていない場合でも、該通信応答に含まれている、前記通信相手から当該通信装置への動作要求に係る動作を実行することを特徴とする通信装置。
  6. 請求項3に記載の通信装置を通信相手とする通信装置であって、
    通信相手に送信した通信要求に対する通信応答に、前記通信相手からの動作要求が複数含まれていた場合に、該各動作要求を分離し、該各動作要求に係る動作を個別に実行することを特徴とする通信装置。
  7. 互いに動作要求及び該動作要求に対する応答である動作応答を送受信する第1及び第2の通信装置を備えた通信システムであって、
    前記第1の通信装置に、
    前記第2の通信装置から通信要求を受信し、該第2の通信装置に対してその通信要求に対する通信応答を送信し、前記第2の通信装置に対する動作要求と、前記第2の通信装置から受信した動作要求に対する動作応答とを、前記通信応答に含めて一括して前記第2の通信装置に送信し、前記第2の通信装置からの動作要求と、前記第2の通信装置に送信した動作要求に対する動作応答とを、前記通信要求に含まれた状態で一括して前記第2の通信装置から受信する第1の通信手段と、
    前記第2の通信装置に対する動作要求を前記第2の通信装置に対する通信要求に含めて送信し、該第2の通信装置に対する動作要求に対する動作応答を該送信した通信要求に対する通信応答に含まれた状態で受信し、前記第2の通信装置からの動作要求を前記第2の通信装置からの通信要求に含まれた状態で受信し、該第2の通信装置からの動作要求に対する動作応答を、該受信した通信要求に対する通信応答に含めて送信する第2の通信手段と、
    前記第2の通信装置に対する動作要求を前記第2の通信装置に送信する場合に、前記第1の通信装置が前記第2の通信装置に対してファイアウォールの外側にあるとき、前記第1の通信手段に該送信を行わせ、前記第1の通信装置と前記第2の通信装置との間にファイアウォールがないとき、前記第2の通信手段に該送信を行わせる第1の切換手段とを備えたことを特徴とする通信システム。
  8. 請求項7に記載の通信システムあって、
    前記第1の通信装置の前記切換手段は、前記第1の通信装置のアドレス情報と前記第2の通信装置のアドレス情報とを取得し、これらのアドレス情報に基づいて、動作要求の送信を前記第1の通信手段に行わせるか前記第2の通信手段に行わせるかを決定することを特徴とする通信システム。
  9. 請求項7又は8に記載の通信システムであって、
    前記第1の通信装置は、
    前記第1の通信手段が受信した動作要求を受信要求プールに記憶させる手段と、
    前記受信要求プールに記憶されている動作要求に係る動作を実行してその実行結果を該動作要求と対応させて前記受信要求プールに記憶させる要求実行手段と、
    前記第1の通信手段により前記第2の通信装置に送信すべき動作要求を送信要求プールに記憶させる手段とを備え、
    前記第1の通信装置の前記第1の通信手段は、前記第2の通信装置から通信要求を受信した場合に、前記受信要求プールに記憶されている動作要求に係る動作の実行が全て完了しているか否かに関わらず、前記送信要求プールに記憶されている未送信の動作要求と、前記受信要求プールに記憶されている未送信の実行結果を前記第2の通信装置に伝達するための動作応答とを、該通信要求に対する動作応答に含めて前記第2の通信装置に送信することを特徴とする通信システム。
  10. 請求項7乃至9のいずれか一項に記載の通信システムであって、
    前記第1の通信装置の前記第1の通信手段は、前記第2の通信装置から通信要求を受信し、該第2の通信装置に対してその通信要求に対する通信応答を送信し、前記第2の通信装置に対する動作要求と、前記第2の通信装置から受信した動作要求に対する動作応答とを、前記通信応答に含めて一括して前記第2の通信装置に送信し、前記第2の通信装置からの動作要求と、前記第2の通信装置に送信した動作要求に対する動作応答とを、前記通信要求に含まれた状態で一括して前記第2の通信装置から受信する第1の通信動作と、前記第2の通信装置に対して通信要求を送信し、該第2の通信装置からその通信要求に対する通信応答を受信し、前記第2の通信装置に対する動作要求と、前記第2の通信装置から受信した動作要求に対する動作応答とを、前記通信要求に含めて一括して前記第2の通信装置に送信し、前記第2の通信装置からの動作要求と、前記第2の通信装置に送信した動作要求に対する動作応答とを、前記通信応答に含まれた状態で一括して前記第2の通信装置から受信する第2の通信動作とを選択的に実行する手段であり、
    前記第1の通信装置は、前記第1の通信装置が前記第2の通信装置に対してファイアウォールの外側にあるとき、前記第1の通信手段に前記第1の通信動作を実行させ、前記第1の通信装置が前記第2の通信装置に対してファイアウォールの内側にあるとき、前記第1の通信手段に前記第2の通信動作を実行させる第2の切換手段を備え、
    前記第1の切換手段は、前記第1の通信装置が前記第2の通信装置に対してファイアウォールの内側にあるときにも、前記第1の通信手段に前記動作要求の送信を行わせることを特徴とする通信システム。
  11. 請求項9に記載の通信システムであって、
    前記第2の通信装置が、前記第1の通信装置に対する動作要求を、該第1の通信装置に対する通信要求に含めて送信し、該通信要求に対する通信応答に、前記送信した動作要求に対する動作応答が含まれていない場合でも、該通信応答に含まれている、前記第1の通信装置から前記第2の通信装置への動作要求に係る動作を実行することを特徴とする通信システム。
  12. 請求項9に記載の通信システムであって、
    前記第2の通信装置が、前記第1の通信装置に送信した通信要求に対する通信応答に、前記第1の通信装置からの動作要求が複数含まれていた場合に、該各動作要求を分離し、該各動作要求に係る動作を個別に実行することを特徴とする通信システム。
  13. 通信相手の装置である相手先装置との間で動作要求及び該動作要求に対する応答である動作応答を送受信する通信装置における通信方法であって、
    前記通信装置が、
    前記相手先装置から通信要求を受信し、該相手先装置に対してその通信要求に対する通信応答を送信し、前記相手先装置に対する動作要求と、前記相手先装置から受信した動作要求に対する動作応答とを、前記通信応答に含めて一括して前記相手先装置に送信し、前記相手先装置からの動作要求と、前記相手先装置に送信した動作要求に対する動作応答とを、前記通信要求に含まれた状態で一括して前記相手先装置から受信する第1の通信手順と、
    前記相手先装置に対する動作要求を前記相手先装置に対する通信要求に含めて送信し、該相手先装置に対する動作要求に対する動作応答を該送信した通信要求に対する通信応答に含まれた状態で受信し、前記相手先装置からの動作要求を前記相手先装置からの通信要求に含まれた状態で受信し、該相手先装置からの動作要求に対する動作応答を、該受信した通信要求に対する通信応答に含めて送信する第2の通信手順と、
    前記相手先装置に対する動作要求を前記相手先装置に送信する場合に、前記通信装置が前記相手先装置に対してファイアウォールの外側にあるとき、前記第1の通信手順により該送信を行い、前記通信装置と前記相手先装置との間にファイアウォールがないとき、前記第2の通信手順により該送信を行うよう前記通信装置の動作を制御する第1の切換手順とを実行することを特徴とする通信方法。
  14. 請求項13に記載の通信方法であって、
    前記第1の切換手順は、前記通信装置のアドレス情報と前記相手先装置のアドレス情報とを取得し、これらのアドレス情報に基づいて、動作要求の送信を前記第1の通信手順により行うか前記第2の通信手順により行うかを決定する手順を有することを特徴とする通信方法。
  15. 請求項13又は14に記載の通信方法であって、
    前記通信装置が、
    前記第1の通信手順で受信した動作要求を受信要求プールに記憶させる手順と、
    前記受信要求プールに記憶されている動作要求に係る動作を実行してその実行結果を該動作要求と対応させて前記受信要求プールに記憶させる要求実行手順と、
    前記第1の通信手順により前記相手先装置に送信すべき動作要求を送信要求プールに記憶させる手順とをさらに実行し、
    前記第1の通信手順において、前記相手先装置から通信要求を受信した場合に、前記受信要求プールに記憶されている動作要求に係る動作の実行が全て完了しているか否かに関わらず、前記送信要求プールに記憶されている未送信の動作要求と、前記受信要求プールに記憶されている未送信の実行結果を前記相手先装置に伝達するための動作応答とを、該通信要求に対する動作応答に含めて前記相手先装置に送信することを特徴とする通信方法。
  16. 請求項13乃至15のいずれか一項に記載の通信方法であって、
    前記第1の通信手順は、前記相手先装置から通信要求を受信し、該相手先装置に対してその通信要求に対する通信応答を送信し、前記相手先装置に対する動作要求と、前記相手先装置から受信した動作要求に対する動作応答とを、前記通信応答に含めて一括して前記相手先装置に送信し、前記相手先装置からの動作要求と、前記相手先装置に送信した動作要求に対する動作応答とを、前記通信要求に含まれた状態で一括して前記相手先装置から受信する第1の通信動作と、前記相手先装置に対して通信要求を送信し、該相手先装置からその通信要求に対する通信応答を受信し、前記相手先装置に対する動作要求と、前記相手先装置から受信した動作要求に対する動作応答とを、前記通信要求に含めて一括して前記相手先装置に送信し、前記相手先装置からの動作要求と、前記相手先装置に送信した動作要求に対する動作応答とを、前記通信応答に含まれた状態で一括して前記相手先装置から受信する第2の通信動作とを選択的に実行する手順であり、
    前記通信装置は、
    前記通信装置が前記相手先装置に対してファイアウォールの外側にあるとき、前記第1の通信手順で前記第1の通信動作を実行し、前記通信装置が前記相手先装置に対してファイアウォールの内側にあるとき、前記第1の通信手順で前記第2の通信動作を実行するよう前記通信装置の動作を制御する第2の切換手順を実行し、
    前記第1の切換手順は、前記通信装置が前記相手先装置に対してファイアウォールの内側にあるときにも、前記第1の通信手順により前記動作要求の送信を行よう前記通信装置の動作を制御する手順であることを特徴とする通信方法。
JP2005150415A 2005-05-24 2005-05-24 通信装置、通信システム及び通信方法 Expired - Fee Related JP4704105B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005150415A JP4704105B2 (ja) 2005-05-24 2005-05-24 通信装置、通信システム及び通信方法
US11/439,366 US7831737B2 (en) 2005-05-24 2006-05-24 Apparatus, method, and system for selecting one of a plurality of communication methods for communicating via a network based on the detection of a firewall
EP06252698A EP1727331B1 (en) 2005-05-24 2006-05-24 Apparatus, method, and system for communicating via a network
DE602006021094T DE602006021094D1 (de) 2005-05-24 2006-05-24 Apparat, Methode und System für das Kommunizieren über ein Netzwerk

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005150415A JP4704105B2 (ja) 2005-05-24 2005-05-24 通信装置、通信システム及び通信方法

Publications (2)

Publication Number Publication Date
JP2006330877A JP2006330877A (ja) 2006-12-07
JP4704105B2 true JP4704105B2 (ja) 2011-06-15

Family

ID=36992738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005150415A Expired - Fee Related JP4704105B2 (ja) 2005-05-24 2005-05-24 通信装置、通信システム及び通信方法

Country Status (4)

Country Link
US (1) US7831737B2 (ja)
EP (1) EP1727331B1 (ja)
JP (1) JP4704105B2 (ja)
DE (1) DE602006021094D1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8126999B2 (en) 2004-02-06 2012-02-28 Microsoft Corporation Network DNA
JP4869896B2 (ja) * 2006-12-07 2012-02-08 富士フイルム株式会社 光断層画像化装置
US8218165B2 (en) * 2007-03-26 2012-07-10 Ricoh Company, Ltd. Interruption management method for an image forming apparatus
US8438567B2 (en) * 2007-11-07 2013-05-07 Ricoh Company, Ltd. Information processing device and image processing apparatus
JP5020046B2 (ja) * 2007-12-06 2012-09-05 株式会社リコー 情報処理装置、情報処理方法、及び情報処理プログラム
JP4933573B2 (ja) * 2009-02-18 2012-05-16 日本電信電話株式会社 Webシステムにおける分散処理方法およびwebシステムにおける分散処理システム
US9026613B2 (en) * 2011-08-29 2015-05-05 Vmware, Inc. Permanent connection oriented communication using parallel single connection circuits
KR101384564B1 (ko) * 2012-11-29 2014-04-17 (주)투비소프트 데이터셋 전송 프로토콜을 이용한 다중 요청 처리 방법
CN106993016B (zh) * 2016-07-20 2019-04-02 平安科技(深圳)有限公司 网络请求及响应的处理方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004140803A (ja) * 2002-09-19 2004-05-13 Ricoh Co Ltd 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349336B1 (en) 1999-04-26 2002-02-19 Hewlett-Packard Company Agent/proxy connection control across a firewall
AU2002234258A1 (en) * 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7533333B2 (en) * 2001-02-14 2009-05-12 Ricoh Co., Ltd. Object-oriented method and system of remote diagnostic, control and information collection using multiple formats and multiple protocols
US20020161904A1 (en) 2001-04-30 2002-10-31 Xerox Corporation External access to protected device on private network
EP1418732B1 (en) * 2002-09-19 2016-01-06 Ricoh Company, Ltd. Communication system implementing a plurality of communication apparatuses as communication client and communication server for exchanging operation requests and operation responses
JP4030943B2 (ja) 2002-09-19 2008-01-09 株式会社リコー 画像処理装置、画像処理システム、画像処理装置の制御方法、プログラム及び記録媒体
JP2004139586A (ja) 2002-09-24 2004-05-13 Ricoh Co Ltd 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP4160480B2 (ja) 2002-09-24 2008-10-01 株式会社リコー 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP4382006B2 (ja) 2004-03-31 2009-12-09 株式会社リコー 仲介装置、通信システム、通信方法、プログラム及び記録媒体
US20050228984A1 (en) * 2004-04-07 2005-10-13 Microsoft Corporation Web service gateway filtering
US7693994B2 (en) * 2004-09-17 2010-04-06 Ricoh Company, Ltd. Intermediary apparatus, distributed processing system, data-transfer method, program and recording medium

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004140803A (ja) * 2002-09-19 2004-05-13 Ricoh Co Ltd 通信クライアント、通信クライアントの制御方法、プログラム及び記録媒体

Also Published As

Publication number Publication date
DE602006021094D1 (de) 2011-05-19
JP2006330877A (ja) 2006-12-07
US20070043806A1 (en) 2007-02-22
EP1727331A3 (en) 2007-06-13
EP1727331A2 (en) 2006-11-29
US7831737B2 (en) 2010-11-09
EP1727331B1 (en) 2011-04-06

Similar Documents

Publication Publication Date Title
JP4704105B2 (ja) 通信装置、通信システム及び通信方法
US7693994B2 (en) Intermediary apparatus, distributed processing system, data-transfer method, program and recording medium
US7620700B2 (en) Communication system implementing a plurality of communication apparatuses as communication client and communication server for exchanging operation requests and operation responses
US7600050B2 (en) Information processing apparatus, information processing apparatus control method, information processing program, and network system
JP4498770B2 (ja) データ配信する画像形成装置及びその画像形成装置からデータを取得する情報処理装置
US7587496B2 (en) Transfer device, distributed processing system, transfer device control method, program, and recording medium
US7822864B2 (en) Communication apparatus, program product for adding communication mechanism to communication apparatus for providing improved usability and communication efficiency, and recording medium storing program product
JP5558681B2 (ja) デバイス検索装置、デバイス検索装置の制御方法、及びコンピュータプログラム
US8676967B2 (en) Event proxy notification apparatus and method of controlling the same and program
EP1482697A2 (en) Remote service provision using a chat protocol
JP2004139586A (ja) 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP4030943B2 (ja) 画像処理装置、画像処理システム、画像処理装置の制御方法、プログラム及び記録媒体
JP2007006263A (ja) サービス提供システム、クライアント、提供サーバおよびプログラム
JP4382006B2 (ja) 仲介装置、通信システム、通信方法、プログラム及び記録媒体
JP2005322222A (ja) 通信機能付加方法、プログラム、記録媒体及び通信装置
US20040193746A1 (en) Service search device, service search method and document processing system
JP4160480B2 (ja) 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP2005259106A (ja) 仲介装置、分散処理システム、データ転送方法、プログラム及び記録媒体
JP4527796B2 (ja) 画像形成装置及び文書管理システム
JP2005259105A (ja) 仲介装置、通信システム、仲介装置の制御方法、プログラム及び記録媒体
JP4198562B2 (ja) 通信クライアント、通信サーバ、通信システム及び通信方法
JP2004139565A (ja) 通信方法
JP2006254046A (ja) 仲介機能付通信装置、通信システム、仲介機能付通信装置の制御方法、プログラム及び記録媒体
JP2006140946A (ja) 情報処理装置、サービス連携方法およびサービス連携プログラム
JP5072499B2 (ja) 画像形成装置、データ通信装置、データ通信方法、及びデータ通信プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101004

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20101004

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110309

R150 Certificate of patent or registration of utility model

Ref document number: 4704105

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees