JP2011096045A - 計算機、計算機システム、及び、アプリケーション実行方法 - Google Patents

計算機、計算機システム、及び、アプリケーション実行方法 Download PDF

Info

Publication number
JP2011096045A
JP2011096045A JP2009250115A JP2009250115A JP2011096045A JP 2011096045 A JP2011096045 A JP 2011096045A JP 2009250115 A JP2009250115 A JP 2009250115A JP 2009250115 A JP2009250115 A JP 2009250115A JP 2011096045 A JP2011096045 A JP 2011096045A
Authority
JP
Japan
Prior art keywords
application
information
framework
output
processing request
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.)
Withdrawn
Application number
JP2009250115A
Other languages
English (en)
Inventor
Tatsuhiko Miyata
辰彦 宮田
Sachiko Takeda
幸子 武田
Kazuma Yumoto
一磨 湯本
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009250115A priority Critical patent/JP2011096045A/ja
Priority to EP10008150A priority patent/EP2317436A3/en
Priority to US12/853,414 priority patent/US20110107156A1/en
Publication of JP2011096045A publication Critical patent/JP2011096045A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

【課題】システムを一時停止することなく、アプリケーションロジックの登録、削除、アップデートを行う。
【解決手段】ネットワークを介して少なくとも1以上のクライアントから1以上の処理要求を受信し、受信した処理要求をJavaサーブレットを用いて処理するためのアプリケーションを実行する計算機であって、前記処理要求は、処理の要求先である1以上のアドレスを含み、前記計算機は、アプリケーションを一意に識別する識別子と、前記アプリケーションを実行するためのバイナリロジックとを対応させたアプリケーション情報、及び、前記識別子と前記各アドレスとを対応させたアダプタ情報を含むデータベースに接続され、前記計算機は、前記処理要求を受信した場合、前記受信した処理要求に含まれるアドレスに基づいて、前記バイナリロジックを特定し、前記特定されたバイナリロジックを実行することによって、前記アプリケーションを実行する。
【選択図】図1

Description

本発明は、計算機に関し、特に、アプリケーションを実行する計算機に関する。
以下に、現状のJava HTTP(SIP)サーブレット(アプリケーションロジック)の動作を説明する(「Java」は登録商標、以下同じ)。
(サーブレット追加、削除、又はアップデート時の動作)
Java HTTP(SIP)サーブレットにおけるアプリケーションロジック(サーブレットロジックを含む)の登録、削除、又はアップデートは、原則、サーバを一旦停止して実施する。これはクライアントがサーブレットにアクセスをしている状態において、アプリケーションファイルがアップデートされた場合、アプリケーションファイルI/Oのブロックによるアップデート失敗、アクセス中のクライアントへの異常応答、又はサーバの異常動作等、予測しない状態になる可能性がある為である。
また、新しいアプリケーションロジックの登録、又は、既存アプリケーションロジックの削除の場合、外部IF(URL)の追加又は削除を行う必要があるが、サーブレットシステムのIF規定はweb.xml(sip.xml)で統一的に設定される為、外部IF設定を変更中は他の全IFについてアプリケーションロジックが予測しない状態となる可能性がある為、サーバを一旦停止する。
(サーブレットの入力値及び出力値の規定)
各サーブレットの入力と出力とは、HTTP(SIP)ServletRequestクラス、HTTP(SIP)ServletResponseクラスに統一されている。通常、各サーブレットでは処理の内容が異なる為、入出力も変わるが、上記入出力クラスの中で”値の名称(キー)”と”値”は、ペアにしたハッシュマップによって管理される。つまり、各サーブレットにおいて、クライアントは、外部に具体的な入力値、出力値を明示せず、内部処理によってHttpServletRequestクラス、HttpServletResponseクラスから自分の必要な値をハッシュマップから取得する。
既存の技術のうち、アプリケーションロジックのアップデート時にアプリケーションロジックの世代管理を行い、クライアント側のバージョンに合わせて適切な世代のアプリケーションモジュールを実行する技術が開示されている(例えば、特許文献1参照)。
(アプリケーションのアップデート処理)
この技術は、まず、サーバ側のアプリケーション実行モジュールを世代情報と関連付けてデータベースのアプリケーション管理テーブルによって管理する。また、クライアント側の世代管理情報もデータベース上の別のクライアント管理テーブルによって管理する。
特許文献1に記載された発明では、サーバ側によってアプリケーションロジックのアップデートを実施した場合、新しい世代情報を付与して、アプリケーション管理テーブルに登録する。また、アップデートされたバージョンのアプリケーションに対応するクライアントを配布する場合、サーバ側のアプリケーションロジックに付与した世代情報とクライアントとをクライアント管理テーブルに登録する。クライアントがサーバにアクセスを試みた場合、このクライアント管理テーブルから世代情報を確認し、対応するアプリケーション管理テーブルの該当世代のアプリケーションを起動する。
(特許文献1における効果)
特許文献1に記載された発明は、前述の構成によって、クライアント側が新旧世代が混在する状況においてもサーバが世代を認識した上でクライアントの世代に合致するアプリケーションを動作させる為、サーバ側、クライアント側の世代を同期させてアップデートする必要がなくなる。よって、世代交代の為にシステムを一旦停止して、アップデート時間を設ける必要がなくなる。
特開2002−091774号公報
Java Community Process、"JSR 315: JavaTM Servlet 3.0 Specification"、[online]、[平成21年10月20日検索]、<URL:http://jcp.org/en/jsr/detail?id=315> Java Community Process、"JSR 116: SIP Servlet API"、[online]、[平成21年10月20日検索]、<URL:http://jcp.org/en/jsr/detail?id=116>
特許文献1に記載の発明を、Java HTTP(SIP) Servletに適用した場合、以下の課題が発生する。
(アプリケーション追加又は削除時のシステム停止)
特許文献1に記載の発明は、アプリケーションアップデート時の世代管理についてのみしか考慮されていない為、アプリケーションロジックの追加及び/又は削除による外部IF追加及び/又は削除時に、サーブレットのweb.xml、sip.xmlを変更する必要が発生し、これらの設定によってサーブレットのシステムが一時停止する。
(サーブレットの入出力定義)
特許文献1において、各アプリケーションロジックの入出力についての定義は考慮されていない。これは、クライアントが専用クライアントとして世代管理されており、同一世代であれば入出力についてもサーバアプリケーションとクライアント側とが合致している事を前提としているからであると思われる。しかし、サーブレットは基本的にクライアントを専用クライアントに特定しない(一般的なWebブラウザ又はSIPクライアントが使われる)。また、アプリケーションロジックを配置する場合、各ロジックはプログラム上で入力(引数)、出力(戻り値)が明示的に定義されている為、Webブラウザ又はSIPクライアントが指定したパラメータをロジックの引数に変換する必要が発生する。
(アプリケーションロジック実装形式の制限)
アプリケーションロジックを実装する場合、Java Servletの規約に従い、クラス継承、関数のオーバロードを行った上で処理内容を実装する必要がある為、既存のプログラムコードをそのままの形でアプリケーションロジックとして利用する事が出来ない。
本発明の目的は、Java HTTP(SIP) Servletを用いたシステムにおいて、データベースを用いることによって、システム停止を伴わないアプリケーションロジックの追加又は削除が可能なシステムを提供することであり、また、入出力情報の定義が可能なシステムを提供し、アプリケーションロジックの実装形式に対する制限を取り除くことである。
本発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して少なくとも1以上のクライアントから1以上の処理要求を受信し、前記受信した処理要求をJavaサーブレットを用いて処理するためのアプリケーションを実行する計算機であって、前記処理要求は、前記処理の要求先である1以上のアドレスを含み、前記計算機は、前記アプリケーションを一意に識別する識別子と、前記アプリケーションを実行するためのバイナリロジックとを対応させたアプリケーション情報、及び、前記識別子と前記各アドレスとを対応させたアダプタ情報を含むデータベースに接続され、前記計算機は、前記処理要求を受信した場合、前記受信した処理要求に含まれるアドレスに基づいて、前記バイナリロジックを特定し、前記特定されたバイナリロジックを実行することによって、前記アプリケーションを実行する。
本発明の一実施形態によると、システムを停止することなく、アプリケーション追加及び又は削除などのアップデートが可能となる。
本発明の第1の実施形態のシステムのネットワークを示す説明図である。 本発明の第1の実施形態のアプリケーションサーバの機能を示すブロック図である。 本発明の第1の実施形態のアプリケーションサーバの物理構成を示すブロック図である。 本発明の第1の実施形態のJava HTTP Servletのサーブレット設定ファイル(web.xml)を示す説明図である。 本発明の第1の実施形態のJava SIP Servletのサーブレット設定ファイル(sip.xml)を示す説明図である。 本発明の第1の実施形態のアプリケーションサーバと情報端末との動作を示すシーケンス図である。 本発明の第1の実施形態の情報端末SIPクライアントがアプリケーションサーバに処理要求を送信する為のSIPメッセージを示す説明図である。 本発明の第1の実施形態のアプリケーションサーバが情報端末SIPクライアントに処理結果を応答する為のSIPメッセージを示す説明図である。 本発明の第1の実施形態の情報端末Webブラウザがアプリケーションサーバに処理要求を送信する為のHTTPメッセージを示す説明図である。 本発明の第1の実施形態のアプリケーションサーバが情報端末Webブラウザに処理結果を応答する為のHTTPメッセージを示す説明図である。 本発明の第1の実施形態のフレームワークアダプタの処理を示すフローチャートである。 本発明の第1の実施形態のアダプタIF管理テーブルを示す説明図である。 本発明の第1の実施形態の入力値管理テーブルを示す説明図である。 本発明の第1の実施形態の入出力クラスバイナリ管理テーブルを示す説明図である。 本発明の第1の実施形態のフレームワーク部の処理を示すフローチャートである。 本発明の第1の実施形態のアプリケーションロジック管理テーブルを示す説明図である。 本発明の第1の実施形態のフレームワークアダプタの処理を示すフローチャートである。 本発明の第1の実施形態のエラー情報管理テーブルを示す説明図である。 本発明の第1の実施形態の出力値管理テーブルを示す説明図である。 本発明の第1の実施形態のフレームワーク部にアプリケーションロジックを新規登録する処理を示すシーケンス図である。 本発明の第1の実施形態のフレームワーク部からアプリケーションロジックを削除する処理を示すシーケンス図である。 本発明の第1の実施形態のフレームワーク部にすでに登録済みのアプリケーションロジック46を新しいバージョンにアップデートする処理を示すシーケンス図である。 本発明の第1の実施形態の所定の世代のアプリケーションロジックのみを削除する処理を示すシーケンス図である。 本発明の第1の実施形態のアプリケーションロジックの特定世代のみを削除する処理を示すフローチャート図である。 本発明の第1の実施形態のアプリケーションロジックのアップデート又は削除を行った際に、情報端末から処理要求を受信した場合のアクセスを切り分けるシステムを示す説明図である。 本発明の第1の実施形態のアプリケーションサーバを利用して情報端末に表示される、Web画面上の操作に世代振り分けを行うサーブレットフィルタを示す説明図である。 本発明の第1の実施形態のアプリケーションサーバを利用して情報端末に表示される、Web画面上の操作に世代振り分けを行う処理を示すシーケンス図である。 本発明の第1の実施形態のアプリケーションサーバを利用して情報端末に表示される、Web画面上の操作に対する世代振り分けを行う方法で世代番号を付与するフィルタの処理を示すフローチャートである。 本発明の第1の実施形態のURL−世代番号管理テーブルを示す説明図である。 本発明の第1の実施形態のreferer−世代番号管理テーブルを示す説明図である。 本発明の第1の実施形態のUser−Agent−世代番号管理テーブルを示す説明図である。 本発明の第1の実施形態のアプリケーションロジックの連携パターンで世代振り分けを行う処理を示すシーケンス図である。 本発明の第1の実施形態のアプリケーションロジック連携世代管理テーブルを示す説明図である。
まず、本発明のアプリケーションサーバについて、端末―サーバ間における通信のネットワーク概要、及びアプリケーションサーバの物理的構造を示す。続いて、本発明を実現する為の論理的構造を示す。続いて、端末がサーバに対して処理要求を送信する時のシーケンス図を用いて、処理の全体の流れを説明し、シーケンス図上の各ポイントについて、サーバ内部の動作詳細をフローチャート、テーブル図を用いて説明する。続いて、アプリケーションサーバに対するアプリケーションロジック登録、削除、アップデートについてシーケンス図を用いて説明し、最後にアプリケーションアップデート時の世代管理方法についての動作を示す。
図1は、本発明の第1の実施形態のシステムのネットワークを示す説明図である。
図1は、アプリケーションサーバ11とSIPサーバ12とに処理要求を送信する情報端末Webブラウザ14及び情報端末SIPクライアント15、アプリケーションサーバ11において動作するアプリケーションロジックを開発し、開発されたアプリケーションロジックをアプリケーションサーバ11に登録、削除、又はアップデートするロジック開発端末16、及び、アプリケーションサーバ11とSIPサーバ12とその他のサーバを含むサーバ群13が、ネットワーク17によって接続されるネットワーク図である。
アプリケーションサーバ11は、本発明を導入したアプリケーションサーバ11であり、Java HTTP Servlet(例えば、非特許文献1参照)、及び/又は、Java SIP Servlet(例えば、非特許文献2参照)の規定に従ったJava Servletの概念によって動作するHTTP及び/又はSIP Servletサーバ(以下、HTTP/SIP Servletサーバと表記)である。
ただし、アプリケーションサーバ11は、Java Servletの概念に従って動作するサーバであれば、前述の規定以外の規定に従ったサーバでもよく、アプリケーションサーバ11において用いられる通信プロトコルは、HTTP、又は、SIPに限定されない。また、用いられるHTTP Servlet、又は、SIP Servletは、いずれのバージョンでもよい。また、アプリケーションサーバ11は、複数存在してもよい。
情報端末Webブラウザ14、及び情報端末SIPクライアント15は、アプリケーションサーバ11とSIPサーバ12とに処理要求を送信する端末である。以下において、情報端末Webブラウザ14、及び情報端末SIPクライアント15を情報端末と総称する。
ロジック開発端末16は、アプリケーションサーバ11において動作させるアプリケーションロジックを開発し、開発されたアプリケーションロジックをアプリケーションサーバ11に登録、削除、又はアップデートする開発端末である。
また、SIPサーバ12は、情報端末SIPクライアント15と通信し、情報端末SIPクライアント15がSIP Servletによって構成される場合に、情報端末SIPクライアント15が送信したSIPメッセージを送信先の装置に転送するサーバである。
アプリケーションサーバ11、SIPサーバ12、情報端末Webブラウザ14、情報端末SIPクライアント15、及びロジック開発端末16は、各々、少なくとも、プロセッサ、メモリ、入出力装置、及びネットワークインターフェースを備える。
前述した各サーバ及び端末は、ネットワーク17を介して、処理要求の送信、処理結果の応答、並びに、アプリケーションロジックの登録、削除、及びアップデート等の通信を行う。中継網となるネットワーク17は、例えば、情報端末Webブラウザ14、及び情報端末SIPクライアント15が一般家庭にあり、通信事業者が保持する各種サーバ群13にアクセスする場合、通信事業者が保持するアクセスネットワーク、又はバックボーンネットワークである。
また、ネットワーク17は、例えば、ロジック開発端末16が、開発者の宅内又はロジック開発ベンダの社内にある場合、サーバ群13にアクセスする為に、通信事業者が用意した専用線網をであってもよい。ただし、本発明において、ネットワーク17の具体的な経路は、特に限定されない。さらに、ネットワーク17の通信プロトコルも、情報端末Webブラウザ14及び情報端末SIPクライアント15とサーバ群13、ロジック開発端末16が互いにネットワーク17を介して、相互に到達可能であればIPプロトコルに限定されなくてもよい。
図2は、本発明の第1の実施形態のアプリケーションサーバ11の機能を示すブロック図である。
図2に示すブロック図は、アプリケーションサーバ11に備わるソフトウェアによって実装される機能の論理的な構成を示す図であるが、各機能ブロックの一部をハードウェアによって実装してもよい。また、同じ機能を実装できれば、異なる機能ブロックの構成であってもよい。
アプリケーション装置11は、サーブレット処理要求送受信制御部33−1、サーブレットロジック実行部33−2、及びフレームサーク部32を備える。
サーブレット処理要求受信制御部33−1は、要求パケットを受信するユーザ処理要求パケット受信部41、受信された要求パケットを分析する受信パケット受信部42、受信した要求パケットに対する応答パケットを構築する送信パケット構築部48、及び、構築された応答パケットを送信する処理応答パケット送信部49を備える。
サーブレットロジック実行部33−2は、フレームワークアダプタ43を備える。フレームワークアダプタ43は、後述するテーブルを更新及び参照する。
フレームワーク部32は、アプリケーションロジック取得実行部44、アプリケーション情報検索部45、及びアプリケーションロジック46を備える。アプリケーション情報検索部45は、後述するアプリケーションロジック管理テーブル36を更新及び参照する。
アプリケーションロジック管理テーブル36、入力値管理テーブル37、出力値管理テーブル38、アダプタIF管理テーブル39、入出力クラスバイナリ管理テーブル40、及び、エラー出力管理テーブル304には、テーブル形式によってデータが保持され、アプリケーション装置11によって更新及び参照される。
図3は、本発明の第1の実施形態のアプリケーションサーバ11の物理構成を示すブロック図である。
図3は、図2に示す機能ブロックを実装するハードウェアの構成を示すブロック図である。
アプリケーションサーバ11は、メモリ22、ストレージ23、CPU24、データバス25、ネットワークインターフェース26、及びデータベースインターフェース27を備える。また、アプリケーションサーバ11は、データベースインターフェース27を介してデータベース28に接続される。また、管理コンソール21も、アプリケーションサーバ11に接続される。
図2に示す各機能ブロックを実行する為のモジュールは、通常時、ストレージ23にファイルとして格納される。すなわち、サーブレット処理要求送受信制御部33−1及びサーブレットロジック実行部33−2のモジュールは、サーブレットプログラムファイル302に、サーブレットロジック実行部33−2において実際に実行されるサーブレットロジック(本発明では、フレームワークアダプタ43)のモジュールは、サーブレットロジックファイル35に、フレームワーク部32(イネーブラフレームワーク)のアプリケーションロジック取得実行部44及びアプリケーション情報検索部45(アプリケーションロジック46本体を除く部分)のモジュールは、フレームワークプログラムファイル34に格納される。また、アプリケーションロジック46は、図3に示すデータベース28のアプリケーションロジック管理テーブル36にテーブルレコードとして格納される。
前述のモジュールは、実際に実行される際に、図3に示すCPU24の命令によって、それぞれ格納された場所からデータバス25を経由してメモリ22に展開され、CPU24によって実行される。フレームワークプログラムファイル34は、メモリ22において、フレームワークプログラム320として展開され、サーブレットロジックファイル35は、サーブレットロジック303として展開され、サーブレットプログラムファイル302は、サーブレットプログラム33として展開される。アプリケーションロジック31は、複数展開され、アプリケーションロジック46を実行する。一時データ301は、一時的な記憶であり、処理が終了後、サーブレットシステムが不要であると判断したタイミングで消去される。
ネットワークインターフェース26は、図1に示すネットワーク17とアプリケーションサーバ11との通信を接続し、複数個用いられてもよい。データベースインターフェース27は、データベース28とプリケーションサーバ11との通信を接続する。
個々のモジュールが動作する際に必要なデータは、データベース28及び/又はメモリ22上の一時データ301に格納されている。一時データ301は、必要に応じて参照及び更新される。その際、データベース28に格納されたデータは、インタフェース(IF)27を経由して参照及び更新される。
なお、データベース27とサーバ11は物理的に異なる装置で構成してもよいし、同一装置内部に論理的に構成してもよい。
また、HTTP/SIP Servletにおける設定ファイルは、図3に示すストレージ23のサーブレット設定ファイル305に格納される。このサーブレット設定ファイル305には、アプリケーションサーバ11において扱うサーブレットロジックの名称定義、情報端末Webブラウザ14及び情報端末SIPクライアント15からの処理要求に記載されたアドレス(HTTPにおけるURL、SIPにおけるSIP−URI)、サーブレットロジックの対応、前述のアドレスへのフィルタ設定、存在しないアドレスにアクセスがあった場合の動作ポリシ等、Java Servletにおける外部インターフェースの設定が記載される。
サーブレット設定ファイル305における、サーブレットロジック名称定義部分と、情報端末からの処理要求に記載されたアドレスと、サーブレットロジックの対応、すなわち外部インターフェース定義部分とに関する記載内容を、図4及び図5において詳述する。
図4は、本発明の第1の実施形態のJava HTTP Servletのサーブレット設定ファイル305(web.xml)を示す説明図である。
Java HTTP Servletのサーブレット設定ファイル305であるweb.xmlは、XML形式によって記載される。図4に示す”servlet”から”/servlet”で囲まれる記載191が、サーブレットロジックの名称定義について記載された部分であり、”servlet−mapping”から”/servlet−mapping”で囲まれる記載194が、外部インターフェースの定義について記載された部分である。
まず、記載191に示すサーブレットロジックの名称定義について説明する。記載191のうち、記載192は、XML形式の”servlet−name”要素によって括られた部分であり、サーブレットロジックの名称を定義する。図4に示すサーブレットロジックには、”ServletA”という名称のサーブレットが定義される。
記載191のうち、記載193は、XML形式の”servlet−class”要素によって括られた部分であり、記載192において定義された名称に対応する実際のJavaのクラス名称を定義する。図4に示すサーブレットロジックには、Javaクラスとして”jp.co.aaa.bb.servlet”パッケージの”ServletA”クラスが定義される。
これら記載192及び記載193を含む各要素を、記載191に示すXML形式の”servlet”要素によって括ることで、各サーブレットロジック名称と実際のJavaクラス名称とのペアが、定義される。
次に、記載194に示す外部インターフェース定義について説明する。記載195は、XML形式の”servlet−name”要素によって括られた部分であり、外部インターフェースを定義する対象サーブレットの名称が記載される。このサーブレット名称は、記載191のサーブレットロジックの名称定義において定義されたサーブレットロジックの名称が記載される。図4に示す外部インターフェース定義では、記載191において定義された”ServletA”を対象サーブレットとして定義する。
記載196は、XML形式の”url−pattern”要素によって括られた部分であり、外部インターフェースの名称が定義される。図4に示す外部インターフェース定義は、Java HTTP Servletの場合の記載であり、外部インターフェースとしてURL”/servletapp/*”が定義される。
これら記載195及び記載196を含む各要素を、記載194に示すXML形式の”servlet−mapping”要素によって括ることで、各サーブレットロジックの名称に対応する外部インターフェースを定義する。
図4に示すサーブレット設定ファイル305によって、情報端末が、”http://[サーバ名称]/servletapp/*”のURL(“*”は、任意の文字列を示す)を、処理要求に含めて送信した場合、サーブレットロジック名称”ServletA”として定義されたJavaの”jp.co.aaa.bb.servlet.ServletA”クラスに記載されたプログラムが、サーブレットロジックとして実行される。
図5は、本発明の第1の実施形態のJava SIP Servletのサーブレット設定ファイル305(sip.xml)を示す説明図である。
Java SIP Servletのサーブレット設定ファイル305であるsip.xmlの、基本的な記述方法は、図4に示すJava HTTP Servletのweb.xmlと同様である。
XML形式によって記載281に、サーブレットロジックの名称が定義され、記載284に、外部インターフェース定義が記載される。記載281は、Java HTTP Servletにおける記載191と同じであり、記載282においてサーブレットロジック名称が定義され、記載283において実際に呼び出すJavaクラス名称が定義される。
記載284の外部インターフェース定義も、Java HTTP Servletにおける記載194と同様である。記載285には、記載195と同じく、定義されたサーブレットロジックの名称が記載される。一方、記載286には、アドレス名が記載されるが、Java HTTP Servletと記載方法が異なる。
記載286は、まずXML形式の”pattern”要素によって括られた部分であり、記載286には、SIPメッセージメソッド、及びURI等のパターン定義が記載される。記載287は、パターン定義が記載された部分である。
記載287の1行目は、SIPメッセージメソッド(XML形式の”var”要素によって定義)が”MESSAGE”(XML形式の”value”要素によって定義)と一致する(XML形式の”equal”要素によって定義)場合を示す。2、3行目も同じ形式によって記載される為、それぞれSIPメッセージメソッドが”REGISTER”、”INVITE”に一致する場合を示す。
さらに、記載287の三つの行を記載286のXML形式の”or”要素によって括ることで、3行のうち何れかの条件となった場合(or条件)であることを示す。
よって、図5に示すsip.xmlは、情報端末によって、”MESSAGE”、”REGISTER”、又は、”INVITE”の何れかのSIPメッセージメソッドを含んだ処理要求が送信された場合、アプリケーションサーバ11が、サーブレットロジック名称”SIPServletA”として定義された”jp.co.aaa.bb.servlet.SIPServletA”クラスに記載されたプログラムをサーブレットロジックとして実行することを意味する。
次に、図6のシーケンス図を用いて、図1に示す情報端末SIPクライアント15が、アプリケーションサーバ11に処理要求を送信してから、処理結果を受信するまでの一連のシーケンスについての概要を説明する。
図6は、本発明の第1の実施形態のアプリケーションサーバ11と情報端末SIPクライアント15との動作を示すシーケンス図である。図6に示すシーケンス図において、アプリケーションサーバ11と通信する情報端末は、SIPクライアントである場合の動作を示す。また、送受信メッセージは、後述する図7及び図8に示す形式を用いる。また、情報端末SIPクライアント15を用いるユーザは、UserAである。
なお、アプリケーションサーバ11と通信する情報端末は、Webブラウザであってもよい。
まず、情報端末SIPクライアント15は、ステップ51において、SIPサーバ12に図7に示すSIPメッセージを送信する。SIPサーバ12は、SIPメッセージを受信すると、受信したメッセージの後述する記載73に基づいて宛先を取得し、ステップ52においてこのメッセージをアプリケーションサーバ11に転送する。その際、SIPサーバ12はメッセージにVIAヘッダ等の値を追記するが、その内容については本発明では扱わない内容である為、割愛する。
SIPメッセージを、図7及び図8に示す。
図7は、本発明の第1の実施形態の情報端末SIPクライアント15がアプリケーションサーバ11に処理要求を送信する為のSIPメッセージを示す説明図である。
情報端末SIPクライアント15がアプリケーションサーバ11と通信する場合、通信プロトコルにはSIP(The Internet Engineering Task Force、”IETF RFC3261”、[online]、[平成21年10月20日検索]、<URL:http://www.ietf.org/rfc/rfc3261.txt?number=3261>参照)を用いる。
図7に示す記載71は、SIPリクエストライン部及びヘッダ部であり、記載72は、メッセージボディ部である。アプリケーションサーバ11に送られるSIPメッセージは、記載71及び記載72を含む。
図8は、本発明の第1の実施形態のアプリケーションサーバ11が情報端末SIPクライアント15に処理結果を応答する為のSIPメッセージを示す説明図である。
また、図8は、図7で送信した処理要求メッセージに対するアプリケーションサーバ11からの応答メッセージである。図8に示す記載261は、SIPリクエストライン部及びヘッダ部であり、記載262は、メッセージボディ部である。アプリケーションサーバ11からの応答メッセージは、記載261及び記載262を含む。
図7に示すSIPメッセージは、SIPのMESSAGEメソッドを用いて、処理要求に付随する入力値をメッセージボディ部72に記載する形式によって、アプリケーションサーバ11に処理要求を送信する。ただし、処理要求に利用するSIPメッセージのメソッド、ヘッダ構成、入力値の記載位置、及び記載フォーマットについては特に限定しない。
記載71は、処理要求のアドレス、すなわちSIP−URIを示す記載73と、後述するUser−Agentヘッダを示す記載76とを含む。また、記載72は、パラメータの値を示す記載74と、パラメータの数値を示す記載75とを含む。記載73〜76についての詳細を後述する。
図8に示すSIPメッセージは、SIPの200 OK応答を用いて、処理結果である出力値をメッセージボディ部262に記載する形式によって、情報端末SIPクライアント15に処理応答を送信する。ただし、図7と同じく、SIPメッセージのヘッダ構成、出力値の記載位置、及び記載フォーマットについては特に限定しない。
情報端末に、情報端末SIPクライアント15を用いず、情報端末Webブラウザ14を用いる場合、アプリケーションサーバ11に送信するメッセージは、HTTPメッセージである。図9及び図10に、HTTPメッセージを示す。
図9は、本発明の第1の実施形態の情報端末Webブラウザ14がアプリケーションサーバ11に処理要求を送信する為のHTTPメッセージを示す説明図である。
図10は、本発明の第1の実施形態のアプリケーションサーバ11が情報端末Webブラウザ14に処理結果を応答する為のHTTPメッセージを示す説明図である。
図9に示す記載81は、HTTPリクエストライン部及びヘッダ部であり、記載82は、メッセージボディ部である。図10に示す記載271は、HTTPリクエストライン部及びヘッダ部であり、記載272は、メッセージボディ部である。
図9に示すHTTP POSTメソッドを用いて、メッセージボディ部にパラメータの入力値を示し、図10に示す200 OK応答を用いて、メッセージボディ部に出力値を示す形式であるが、SIPメッセージの場合と同じく、処理要求、応答に利用するHTTPメソッド、ヘッダ構成、入出力値の記載位置、及び記載フォーマットについては限定しない。
なお、SIP及びHTTP以外のプロトコルを利用する情報端末とアプリケーションサーバ11とが通信し、情報端末とアプリケーションサーバ11とにおけるプロトコルが各々異なる場合であっても、アプリケーションサーバ11が、Java Servletの概念に従ったサーバであれば、通信プロトコルについてはいずれのプロトコルでもよい。
図6に示すステップ52において、SIPサーバ12が送信したSIPメッセージは、アプリケーションサーバ11のサーブレット処理要求送受信制御部33−1によって受信される。具体的には、図2のユーザ処理要求パケット受信部41によって受信される。受信されたSIPメッセージのパケットは、サーブレット処理要求送受信制御部33−1において、受信パケット分析部42に送信される。受信パケット分析部42の処理について具体的に後述する。
ここで、本実施形態のJava Servletのサーブレットロジックの定義について説明する。Java Servletでは、前述したサーブレット設定ファイルである、図4に示すweb.xml、及び、図5に示すsip.xmlに、各サーブレットロジックの名称定義、及び情報端末から送信された処理要求メッセージに含まれたアドレスとサーブレットロジックとの対応を、複数記載することによって、一つのアプリケーションサーバ11上で複数のサーブレットロジック、及び各サーブレットロジックと外部インターフェース定義との対応を持つことが可能である。
本実施形態のJava Servlet部分において定義されるサーブレットロジック、及び外部インターフェース定義は、一つだけである。
具体的には、本実施形態のサーブレットロジックには、図2に示すフレームワークアダプタ43のみが定義され、このフレームワークアダプタ43のサーブレットロジックに対する外部インターフェースのアドレス定義として、どのアプリケーションサーバ11においても処理する可能性のあるURLの全パターンにマッチする様に定義される(例えば、Java HTTP Servletでワイルドカード(”*”)として記載して、情報端末がどのURLに処理要求を送信してきても全てフレームワークアダプタ43のサーブレットロジックを呼び出したり、Java SIP ServletによってSIPメッセージメソッドとして”MESSAGE”を定義し、情報端末が送信してきた全てのMESSAGEメソッドのSIPメッセージに対してフレームワークアダプタ43を呼び出したりなど)。
受信パケット分析部42は、図6に示すステップ53において、サーブレットロジック実行部33−2によって呼び出されるサーブレットロジックを決定する為、まず、受信したメッセージを分解し、情報端末SIPクライアント15が指定した処理要求のアドレス(図7に示す記載73)によって、及び図3に示すサーブレット設定ファイル305を検索することによって、該当するサーブレットロジックを選択する処理を実行する。
しかし、前述した様に、本実施形態のサーブレット設定ファイル305では、アプリケーションサーバ11において処理を行う可能性のあるアドレスについて、全てサーブレットロジックとしてフレームワークアダプタ43を指定している為、結果として本実施形態のアプリケーションサーバ11上のJava Servletは情報端末SIPクライアント15からどのアドレスを指定して処理要求を送信されても、アプリケーションサーバ11において処理を行う可能性がある限り、受信パケット分析部42は、すべてフレームワークアダプタ43をサーブレットロジックとして選択する。つまり、実施形態では、サーブレット設定ファイル305に記載する呼び出すサーブレットロジック1種類のみであり、システム起動後にこの設定ファイルを更新する必要はない。
これによって、受信パケット分析部42は、本実施形態における図6に示すステップ53において、図7の記載73に示すSIP−URI”sip:app1@abc.com”の値に関わらず、サーブレットロジックとしてフレームワークアダプタ43を選択する。そして、受信パケット分析部42は、処理要求メッセージをサーブレットロジック実行部33−2に備わる、ステップ53において選択されたフレームワークアダプタ43に送る。
アプリケーションサーバ11は、ステップ53においてサーブレットロジックとしてフレームワークアダプタ43が選択されると、ステップ54において、フレームワークアダプタ43を呼び出し、ステップ57、58、及び55においてフレームワークアダプタ43を実行する。
ステップ57における世代番号確認、及びステップ58における世代番号付与の世代管理については、後述する。以下においては、ステップ55におけるフレームワークアダプタ43の処理の詳細を、図11に示すフローチャートを用いて説明する。
図11は、本発明の第1の実施形態のフレームワークアダプタ43の処理を示すフローチャートである。
フレームワークアダプタ43は、図11に示すステップ91において、まず、受信パケット分析部42から処理要求メッセージを受信する。
フレームワークアダプタ43は、ステップ92において受信した、受信パケット分析部42が処理要求メッセージを分析した結果(図6に示すステップ53において取得された結果)、取得されたアドレス情報(例えば、Java HTTP Servletの場合はURL情報、Java SIP Servletの場合はSIP−URI、等)と、フレームワークアダプタ43自身のアダプタ識別子とをキーに、アダプタIF管理テーブル39を検索する。そして、フレームワーク部32におけるアプリケーションロジック46を特定する為の、IF名称を特定する。
ここでフレームワークアダプタ43自身のアダプタ識別子は、例えば、フレームワークアダプタ43自身のクラス名称が考えられるが、アダプタ識別子の命名規則については特に限定されない。アダプタ識別子は、フレームワークアダプタ43の種類を識別できればどの様な値でもよい。さらに、フレームワークアダプタ43が複数存在しない場合、フレームワークアダプタ43は、識別されなくてもよい。
図12は、本発明の第1の実施形態のアダプタIF管理テーブル39を示す説明図である。アダプタIF管理テーブル39は、ステップ92においてフレームワークアダプタ43によって検索される。
アダプタ管理テーブル39において、カラム172の値がアダプタ識別子を示し、カラム173の値がアドレス情報を示し、カラム174の値がフレームワーク部32において呼び出されるアプリケーションロジック46のIF名称を示す。Java Servletの仕様、フレームワークの動作仕様、又はJava Servlet側のアドレス情報の記載フォーマット等に従って、このアダプタ管理テーブル39のテーブル構成は、変更されてもよい。
また、アプリケーションサーバ11毎に同じアプリケーションロジック46を呼び出す為のアドレスを変更させる場合、又は、同一アドレスであっても呼び出すアプリケーションロジック46を変更させる場合、カラム173に示すアドレス情報は、カラム175に示す様に、”アドレス情報”_”サーバのドメイン名”の形式によって値を格納されてもよい。
この様な記載によって、図11に示すアダプタIF管理テーブル39は、例えばレコード176とレコード177との様に、ドメイン名が”domain1”であるサーバのアドレス”/app/func1.do”と、ドメイン名が”domain2”であるサーバのアドレス”/app/func1.do”とを識別し、異なるIF名称を付与する。また、レコード176とレコード178との様にドメイン名が”domain1”であるサーバのアドレス”/app/func1.do”と、ドメイン名が”domain2”であるサーバのアドレス”/app/funcA.jsp”とに同一IF名称”function1”を付与する。
フレームワークアダプタ43は、次のステップ93においてステップ92におけるIF名称の特定が成功したか否か、すなわち、対応するIF名称がアダプタIF管理テーブル39に存在するか否かを判定する。対応するIF名称が存在しないと判定した場合、フレームワークアダプタ43は、ステップ102においてIFエラーと判断し、ステップ103でエラー応答を行う。
ステップ103においてフレームワークアダプタ43は、例えば、Java SIP Servletの場合、エラー応答として200 OK応答以外の404 Not Found応答や500 Server Internal Error応答等を返信してもよいし、200 OK応答のメッセージボディ内部にエラーである旨を記載して返信してもよい。エラー応答は、SIPサーバを介して、情報端末SIPクライアント15に送信される。応答方法について、本発明では特に限定しない。
ステップ93において対応するIF名称が存在する場合、次に、フレームワークアダプタ43は、ステップ94においてユーザが送信した入力値を、アプリケーションロジック46が規定するロジック値に変換する為に、入力値管理テーブル37をステップ92において取得したフレームワーク部32上でのIF名称、及び世代情報をキーにして検索する。世代情報については後述する。
図13は、本発明の第1の実施形態の入力値管理テーブル37を示す説明図である。
入力値管理テーブル37において、カラム162の値がIF名称を示し、カラム163の値がアプリケーションロジック46を呼び出す際に指定する引数の記載順を示し、カラム164の値がこの引数の親メンバの名称(カラム166引数名の値)を示し、カラム165の値がアプリケーションロジック46のJavaの引数の型を示し、カラム166の値がアプリケーションロジック46の引数の名称を示し、カラム167が情報端末SIPクライアンtント15からの処理要求メッセージに含まれる入力値のパラメータ名を示し、カラム168がアプリケーションロジック46の世代番号情報である。アプリケーションロジック46の引数仕様、フレームワークの動作仕様等に従って、この入力値管理テーブル37のテーブル構成は、変更されてもよい。
ステップ94において、フレームワークアダプタ43は、検索によって特定したカラム162のレコードの全カラムの値を取得する。アプリケーションロジック46の引数が複数ある場合、又は、引数がJavaクラスであり引数クラスが内部に複数のメンバを持つ場合などには、フレームワークアダプタ43は、複数レコードを特定する場合もある。
ステップ94において取得された全レコードについて、フレームワークアダプタ43は、情報端末SIPクライアント15からの処理要求メッセージをアプリケーションロジック46によって利用できる様な引数の形式に変換する(ステップ95)。
図13に示す入力値管理テーブル37において、IF名称であるカラム162が”fuction1”に対応するレコードは、レコード311、312、313、及び314の四つである。そして、レコード311は、カラム164が空であることから、各パラメータを格納する為のJavaの親クラスである為、”fuction1”の引数は、レコード312、3313、及び314が示す三つの引数である。
図13に示すレコード311は、アプリケーションロジック46の第1引数であるJavaクラス名を”InputClassA”と定義する。実際にアプリケーションロジック46を呼び出す時、このクラスのメンバに入力値を格納して呼び出すが、入力値を格納する為のクラスメンバをレコード312、及び、313によって定義する。
レコード312、及び、313は、カラム164に”inputA”を格納されることによって、レコード311のカラム166の値である”inputA”と対応付けられ、これらレコードの値がレコード311で定義したクラスのメンバである事を定義する。この様に、親クラスのレコードによって定義された引数名を、下位のメンバ又はクラスを定義するレコード上のカラム164の親引数によって定義することによって、各レコードの親子関係を定義することができる。従って、アプリケーションロジック46の引数が、内部に他のメンバを複数持つ場合においても、入力値管理テーブル37によって、引数を定義可能である。
ただし、入力値管理テーブル37の構成については、アプリケーションロジック46の引数が多段でメンバ変数を持つことを表現できれば、他の構成を用いてもよい。
レコード312、及び313は前述の通り、レコード311の下位メンバであり、これらレコードはカラム167の元パラメータの値が空でない為、情報端末SIPクライアント15からの処理要求メッセージに含まれる入力値情報を、これらレコード312、及び313に従い変換する必要がある。
レコード312は、元パラメータを示すカラム167の値が”latitude”である。この為、フレームワークアダプタ43は、本実施形態において、情報端末SIPクライアント15から送られた処理要求メッセージのパラメータである図7に示す記載72のうち、XML要素の”name”の部分が、図7に示す記載74の様に”latitude”である要素の値75を、アプリケーションロジック46の入力値に変換する。
また、変換後の入力値の型は、レコード312のカラム165が示す引数の値が”float”である為、float型である。よって、フレームワークアダプタ43は、記載75に示す入力値”47.223”をJavaのfloat型に変換して、InputClassAクラスのメンバ変数に格納するが、その際、レコード311において定義されたInputClassAクラスをアプリケーションロジック46の引数用にインスタンス化する必要がある。InputClassAクラスをインスタンス化する動作について説明する。
図14は、本発明の第1の実施形態の入出力クラスバイナリ管理テーブル40を示す説明図である。
入出力クラスバイナリ管理テーブル40において、カラム291の値は、IF名称を示す。カラム292の値は、入出力情報として利用するクラスのJavaプログラムバイナリを示す。カラム293の値は、カラム292に格納されたプログラムバイナリによって定義されたクラスの名称を示す。カラム294の値は、世代番号を示す。
入出力値のJavaクラス情報について、全てのクラス情報が入出力クラスバイナリ管理テーブル40に格納される必要はない。例えば、入出力値のクラスが、Javaの標準ライブラリとして用意されたクラス(List型等)である場合、フレームワークプログラム320がデフォルトで呼び出すライブラリファイルの中にプログラムバイナリが含まれている筈である。
また、例えばユーザーIDと位置情報との組み合わせの様に、汎用性の高い入出力値について、フレームワーク部32上でアプリケーションロジック46の共通入出力クラスとして定義し、Javaの標準ライブラリが管理するクラスと同様、フレームワークプログラム320がデフォルトで呼び出すライブラリファイルの中に、このクラスのプログラムファイルを導入しておけば、全てのクラス情報が入出力クラスバイナリ管理テーブル40に格納される必要はない。
入出力クラスバイナリ管理テーブル40に格納されるプログラムバイナリ情報は、あくまで各アプリケーションロジック46が利用する独自の入出力クラスであればよい。
ステップ95において、フレームワークアダプタ43は、入力値管理テーブル37に示すレコード312のカラム165に格納されたJavaクラス名称が、Java標準ライブラリによって定義されたクラス、又はフレームワーク部32上で定義された共通クラスの、どちらでもないことを確認し、入力値管理テーブル37のカラム165に記載されたクラス名称をキーにして、入出力値クラスバイナリ管理テーブル40のカラム293を検索し、カラム292からプログラムバイナリを取得する。
なお、カラム165に格納されたJavaクラス名称が、Java標準ライブラリによって定義されたクラス、又はフレームワーク部32上で定義された共通クラスの、どちらかであった場合、フレームワークアダプタ43は、ステップ98に移る。
ステップ95において、フレームワークアダプタ43は、取得されたプログラムバイナリを、図2に示すメモリ22にインスタンスとして展開し、このインスタンスに含まれる各メンバの値を格納する。
フレームワークアダプタ43は、レコード313についても同じく、情報端末SIPクライアント15からの処理要求メッセージに含まれる”longitude”の値を、Javaのfloat型に変換してメンバ変数として格納する。
この様にして生成されたInputClassAクラスのインスタンスが、IF名称”function1”によって指定されるアプリケーションロジック46の引数となるが、図13に示すレコード311〜313のカラム163が示す引数番号の値が”1”である為、この引数は、アプリケーションロジック46の第1引数となる。
同じく、IF名称”function1”で指定されるアプリケーションロジック46の引数の中の第2引数は、図13のレコード314に示されるJava String型の”name”である。この第2引数も、前述の第1引数と同じく情報端末SIPクライアント15からの処理要求メッセージに含まれる入力値”id”の値を、JavaのString型に変換して引数とする。
図11に示すステップ95において、フレームワークアダプタ43は、前述の処理をステップ94において図13に示す入力値管理テーブル37から取得された全レコードについて行う。
フレームワークアダプタ43は、ステップ95において、全レコードへの変換処理が全て完了すると、次にステップ96においてアプリケーションロジック46の入力値に過不足があるか否かを判定する。
例えば、図13に示す入力値管理テーブル37から取得されたレコードについて、情報端末SIPクライアント15からの処理要求メッセージに含まれる入力値情報に記載されていない値が一つでも存在した場合、すなわち、処理要求メッセージに含まれる入力値情報の項目不足があった場合、又は、情報端末SIPクライアント15からの処理要求メッセージに含まれる入力値情報の全てが、図13に示す入力値管理テーブル37から取得されたレコードに対応付けられなかった場合、すなわち、入力値管理テーブル側のレコード不足があった場合、フレームワークアダプタ43は、ステップ96からステップ101に進む。
さらに、フレームワークアダプタ43は、ステップ101において、エラー内容を入力値エラーと判定し、ステップ103において入力値エラーをエラー応答として情報端末SIPクライアント15に返信する。返信方法は、ステップ102においてIFエラーが判定された場合と同じである。しかし、ステップ102とステップ101とでは、エラー内容が異なる。
ステップ96において、入力値に過不足はないと判定された場合、フレームワークアダプタ43は次に、ステップ97において、入力値をアプリケーションロジック46の引数に変換できなかったレコードがあるか否かを判定する。入力値を引数に変換できない場合とは、例えば、アプリケーションロジック46側のJavaの型はfloat型であるが、情報端末SIPクライアント15からの処理要求メッセージに含まれる入力値情報の値は文字列であり、文字列を数値型であるfloat型に変換する事ができない様な場合である。
ステップ97において、入力値を引数に変換できなかったレコードがあった場合、ステップ96と同じく、フレームワークアダプタ43は、ステップ101において、入力内容を入力エラーと判定する。そして、ステップ103においてエラー応答を情報端末SIPクライアント15に返信する。
なお、本実施形態におけるステップ97において、フレームワークアダプタ43は、情報端末SIPクライアント15からの入力値とJavaの型への変換可否とについてのみを判定したが、例えば、図13に示す入力値管理テーブル37にアプリケーションロジック46の各引数について値の範囲(例えば、0より大きな数字、かつ、30文字以下の文字列等)を定義し、その値の範囲を超えていた場合エラーと判定する処理を追加してもよい。
以上の処理によって、フレームワークアダプタ43は、図6に示すステップ55を終了する。
ステップ97における判定によって、入力値を引数に変換できないレコードはないと判定された場合、アプリケーションロジック46による実行が可能である為、フレームワークアダプタ43は、ステップ98において、フレームワーク部32の処理を呼び出し、ステップ99におけるフレームワーク部による処理に続く。
この図11に示すステップ98は、図6に示すステップ56のフレームワーク呼び出しに相当する。具体的には、図2に示すフレームワーク部32のアプリケーションロジック取得実行部44を呼び出す。その際に、ステップ92において取得されたIF名称とステップ95において変換したアプリケーションロジック46の引数、及び他の付随情報(例えば、世代情報等)とを、処理要求としてアプリケーションロジック取得実行部44に送信する。
次に、図6に示すステップ56において呼び出されたフレームワーク部32上で実行するステップ59のロジック選択及び実行処理について、図15に示すフローチャート図を用いて詳述する。
図15は、本発明の第1の実施形態のフレームワーク部32の処理を示すフローチャートである。
フレームワーク部32のアプリケーションロジック取得実行部44は、ステップ111において、フレームワークアダプタ43から処理要求を受信する。そして、アプリケーションロジック46のプログラム情報を取得する為に、ステップ112において、フレームワークアダプタ43か受信したIF名称をキーにして、アプリケーションロジック管理テーブル36を検索する。後述の世代情報も管理される場合は、世代番号も検索キーに含める。
なお、実際の検索処理は、図2に示すフレームワーク部32のアプリケーション情報検索部45がアプリケーションロジック管理テーブル36にアクセスして検索する。
図16は、本発明の第1の実施形態のアプリケーションロジック管理テーブル36を示す説明図である。
アプリケーションロジック管理テーブル36において、カラム152の値がアプリケーションロジック46のIF名称を示し、カラム153の値がアプリケーションロジック46のプログラムバイナリを示し、カラム154の値がアプリケーションロジック46のJavaクラス名称を示し、カラム155の値がアプリケーションロジック46のJavaメソッド名称を示し、カラム156の値が各アプリケーションロジック46の世代番号を示す。
アプリケーションロジック管理テーブル36は、アプリケーションロジック46のインスタンス化の方法、又は、フレームワーク部37の動作仕様等に合わせて、異なる構成によって構築されてもよい。
アプリケーションロジック取得実行部44は、ステップ112において、テーブル151を検索した後、ステップ113において、対応するバイナリが存在するか否かを判定する。ステップ112においてレコードを取得した場合、対応するバイナリは存在したと判定し、レコードを取得できなかった場合、対応するバイナリは存在しなかったと判定する。
ステップ113において、対応するバイナリが存在しないと判定した場合、アプリケーションロジック取得実行部44は、ステップ122に進み、エラー内容をIFエラーと判定する。そして、ステップ118において、フレームワーク部の呼び出し元であるフレームワークアダプタ43に、エラー内容を返信する。エラー内容を返信する方法は、Javaの例外をスローする方法、又は、エラー出力を戻す方法等のいずれでもよく、本発明においては、特に限定しない。
ステップ113において、対応するバイナリが存在したと判定した場合、アプリケーションロジック取得実行部44は、ステップ114において、ステップ112において取得されたバイナリ情報を、図3に示すメモリ22上にアプリケーションロジック31の形式によって展開する。
なお、取得されたバイナリ情報は、図16に示すカラム154に記載されたクラス名称に従ったクラスとしてインスタンス化され、メモリ22に展開される。つまり、図3に示すアプリケーションロジック4633は、アプリケーションサーバ11上で管理するアプリケーションロジック46の数、又は情報端末SIPクライアント15からの処理要求メッセージの数分だけ存在することとなる。
アプリケーションサーバ11上で、アプリケーションロジック46を用いる際に、一つのアプリケーションロジック46についてインスタンス化してメモリ22上に展開するバイナリを一つに限定し、各情報端末からの処理要求メッセージについて一つのインスタンスを使いまわす場合、アプリケーションロジック4633の数は、アプリケーションサーバ11上で定義するロジック数となる。また、各情報端末からの処理要求毎にアプリケーションロジック46のバイナリをインスタンス化した場合、処理要求の数だけアプリケーションロジック46のインスタンスがメモリ22に存在することとなる。本実施形態においては、上記二つの方法のどちらを採ることも可能であり、どちらかに限定しない。
ステップ114において、アプリケーションロジック31をメモリ22上に展開した後、アプリケーションロジック取得実行部44は、ステップ115におけるアプリケーションロジック46を実際に呼び出す。アプリケーションロジック46のメソッド名は、カラム155に記載されたメソッド名とする。また、アプリケーションロジック46の引数は、フレームワークアダプタ43によって変換された引数群を用いる。具体的には、図2に示すアプリケーションロジック取得実行部44がアプリケーションロジック46を呼び出すことによってアプリケーションロジック46を実行する。
その後、アプリケーションロジック31毎の処理が実施され、アプリケーションロジック取得実行部44は、その結果を受信すると、ステップ116において、処理結果を確認する。アプリケーションロジック46から例外が出力されたり、処理失敗をしたりなどを示す出力値等を確認した場合、ステップ121においてアプリエラーと判定し、ステップ118において、フレームワークアダプタ43にエラーであることを返信する。エラー返信の方法は、ステップ122におけるIFエラーと同じく、Javaの例外をスローする方法、又はエラー出力を戻す方法等のいずれでもよく、本発明においては、特に限定しない。
ステップ116において、処理成功と判定された場合、アプリケーションロジック取得実行部44は、ステップ117において、処理成功と判定して、ステップ118においてフレームワークアダプタ43に処理成功を返信する。また、アプリケーションロジック46が出力値を持つ場合、出力値も同時に返信する。
図6に示すシーケンス図では、ステップ60の処理結果返信が、図15に示すステップ118に相当する。フレームワーク部32の処理が終了すると、ステップ119に示す様に、処理結果を受信したフレームワークアダプタ43の処理に続く。
次に、図6に示すステップ61におけるフレームワークアダプタ43の処理について、処理詳細を図17に示すフローチャートを用いて説明する。
図17は、本発明の第1の実施形態のフレームワークアダプタ43の処理を示すフローチャートである。
フレームワーク部32のフレームワークアダプタ43は、ステップ131においてアプリケーションロジック取得実行部44から処理結果を受信すると、まずステップ132においてエラー応答を受信したか否かを判定する。 図18は、本発明の第1の実施形態のエラー情報管理テーブル304を示す説明図である。エラー情報管理テーブル304は、ステップ134において、各アプリケーションロジック46によって出力されるエラー情報を、アプリケーションサーバ11が管理する為のテーブルである。
エラー情報管理テーブル304において、カラム341の値がIF名称を示し、カラム342の値がエラーの名称を示す。また、カラム343の値は、入力値管理テーブル37における入力値情報と同じく、各エラー情報がJavaクラス、及びクラスメンバの様に階層構造を持つ場合に、親となるエラー情報、すなわち上位エラーの、カラム342が示すエラー名称の値を示す。
カラム344の値は、エラー情報の出力形式区分を示す。カラム345の値は、エラーパラメータの名称を示し、エラー区分、すなわちカラム344に従って値が変化する。カラム346は、カラム345に格納されたエラーパラメータに関連する値がエラーと判定される際の値を示す。カラム347は、エラーが発生した場合、情報端末SIPクライアント15に送信する処理エラー応答に含むエラー情報のパラメータ名称を示す。カラム348は、カラム347において定義されたパラメータの値を示す。カラム349は、世代番号を示す。
エラー出力管理テーブル304のカラム344、及び345の値について、以下に例を示す。
Javaメソッドの形式によって定義されたアプリケーションロジック46は、エラー出力として、戻り値に特殊な値を挿入する方法、又は、例外をスローする方法等、様々な方法を用いる。カラム344形式区分は、このエラー情報がアプリケーションロジック46からどの様な形式によって出力されるかを判定する為の値である。
例えば、図18に示すカラム361の様に、”1”をJavaの例外スロー、”2”をJava例外に含まれるメンバ変数の値、及び、”3”を戻り値の値として定義する。この様にエラーの区分を定義すれば、フレームワークアダプタ43はJavaのプログラムとしてエラーを確認する方法を、カラム344の値によって判定することができる。
例えば、レコード362に示すカラム344の形式区分が”1”のエラーには、Javaプログラム上では例外をキャッチする方法によってエラー確認すればよい。また、レコード363に示すカラム344の形式区分が”2”のエラーには、Javaプログラム上では例外をキャッチした後、その例外のメンバを確認すればよい。レコード364に示すカラム344の形式区分が”3”のエラーには、アプリケーションロジック46のメソッドを呼び出した後、戻り値の内容を確認すればよい。
この様にエラー発生パターンをエラー情報の一部に持つことによって、アプリケーションロジック46による様々なエラー出力の形態に対応でき、アプリケーションロジック46として登録可能なJavaプログラムの幅が広がる。すなわち、アプリケーションロジック46のJavaクラス定義、Java継承定義、戻り値定義、引数定義、及び、エラー出力定義を制限せずに登録することができる。
カラム345の値は、カラム344の形式区分の値に従って、変化する。例えば、形式区分が”1”の場合、レコード362の様にカラム344にJavaの例外クラス名が格納され、形式区分が”2”の場合、レコード363の様にカラム344に例外クラスのメンバ名称が格納され、形式区分が”3”の場合、レコード364の様に戻り値のJavaの型が格納される。
この様にカラム345に、各形式区分毎に必要となる情報を格納することによって、例えば、レコード362の場合なら、キャッチしたJava例外のクラスを検索し、カラム345に格納されたクラスと合致するかを確認することによって、エラー情報を確定させることができる。レコード363の場合であれば、キャッチしたJava例外についてカラム345に記載した名称のメンバの値を確認することによって、エラー情報を確定させることができる。レコード364の場合であれば、アプリケーションロジック46の戻り値をカラム345に記載した型に変換して値を確認することによって、エラー情報を確定させることができる。
また、全てのエラー情報がエラー出力管理テーブル304に格納される必要はない。例えば、Javaの標準ライブラリが出力するエラーであれば、予めフレームワークアダプタ43のプログラム上にデフォルト処理として導入して置けばよい。また、文字数超過やデータベース接続失敗と言った汎用性の高いエラーは、フレームワーク上でアプリケーションロジック46の共通エラーとして定義しておけば、Javaの標準ライブラリが出力するエラーと同じく、フレームワークアダプタ43のプログラム上にデフォルト処理として導入しておけばよい。エラー出力管理テーブル304に格納されるエラー情報は、あくまで各アプリケーションロジック46が出力する独自のエラーのみを記載しておけばよい。
エラー応答を受信した場合、フレームワークアダプタ43は、ステップ142においてアプリ処理エラーと判定し、ステップ143において情報端末SIPクライアント15にエラー応答を返信する。その場合、該当するエラー情報のカラム347に記載されたパラメータ名称であるカラム348に格納された値を、エラー応答に含める。エラー応答の返信方法は、図11に示すステップ103のエラー応答と同じである。
ステップ132において、正常応答を受信した、すなわちエラー応答は受信していないと判定した場合、フレームワークアダプタ43は、情報端末SIPクライアント15が処理要求メッセージに付与してきた入力値を、アプリケーションロジック46用の形式に変換した図11に示す処理とは逆に、アプリケーションロジック46からの出力値を、情報端末SIPクライアント15に送る処理応答に付与する出力値情報の形式に変換する処理を行う。処理方法は、入力値変換とほぼ同様であり、まず、ステップ133において、出力値管理テーブル38を、IF名称をキーにして検索し、全出力値を取得する。
図19は、本発明の第1の実施形態の出力値管理テーブル38を示す説明図である。
出力値管理テーブル38において、カラム182の値がIF名称を示し、カラム183の値がこの戻り値の親メンバの名称(カラム185に格納される戻り値名の値)を示し、カラム184の値がアプリケーションロジック46の戻り値のJavaの型を示し、カラム185の値がアプリケーションロジック46の戻り値の名称を示し、カラム186が情報端末SIPクライアント15への処理応答に含む出力値のパラメータ名を示し、カラム187がアプリケーションロジック46の世代番号情報を示す。出力値管理テーブル38は、アプリケーションロジック46の戻り値仕様、又はフレームワークの動作仕様等に合わせて、異なる構成によって構築されてもよい。
フレームワークアダプタ43は、ステップ133において、検索によって特定された出力値管理テーブル38のレコードの全カラムの値を取得する。アプリケーションロジック46の戻り値がJavaクラスであり、戻り値クラスが内部に複数のメンバを持つ場合は複数レコードを特定する場合もある。
フレームワークアダプタ43は、ステップ134において、ステップ133において取得された全レコードに基づいて、アプリケーションロジック46から受信した戻り値を、情報端末SIPクライアント15への処理応答の形式に変換する。
図19に示す出力値管理テーブル38において、カラム182が示すIF名称が”function1”であるレコードは、レコード321、322、及び323の三つであり、レコード321は、各パラメータを格納する為のJavaの親クラスの情報を示す為、戻り値としては、レコード322、及び323の二つの値が存在することになる。
レコード321は、アプリケーションロジック46の戻り値のJavaクラス名を”OutputClassA”と定義する。これによって、アプリケーションロジック46からの戻り値は、このクラス”OutputClassA”となる。
また、”OutputClassA”には戻り値の具体的な値を格納する為のクラスメンバが存在し、そのメンバがレコード322、及び323によって定義される。レコード322と323とは、カラム183の値を”outputA”と指定することによって、レコード321のカラム185の値”outputA”と対応付けられ、これらレコードの値がレコード321で定義したクラスのメンバであることが定義される。
これらのカラム183及びカラム185の関係と、図13に示す入力値管理テーブル37のカラム164及びカラム166の関係と同じである。
また、本テーブルの構成については、入力値管理テーブル37と同様、アプリケーションロジック46の引数が多段でメンバ変数を持つ構成である事を表現できれば、他の構成方法を用いても構わない。
レコード322、及び323は前述の通り、レコード321の下位メンバであり、これらレコードは、カラム186の出力パラメータの値が空でない為、アプリケーションロジック46からの戻り値をこれらレコードの法則に従い、情報端末SIPクライアント15への処理応答に変換する必要がある。
レコード322は、戻り値としてアプリケーションロジック46から取得されたJavaクラス名”OutputClassA”のインスタンスの内部メンバである”prefecture”(カラム185の値)が一つ目の出力であり、情報端末SIPクライアント15に処理応答においてカラム186に示す出力パラメータ名”prefecture”として、その戻り値を出力すること示す。よって、戻り値の値からメンバ変数”prefecture”を取得し、その戻り値を出力パラメータ”prefecture”として出力する形式に変換する。
レコード323についても同じであり、アプリケーションロジック46からの戻り値からメンバ変数”city”を取得し、その値を出力パラメータ”city”として出力する形式に変換する。
図17に示すステップ134では、上記処理をステップ133において、図19に示す出力値管理テーブル38から取得された全レコードに変換処理を行う。
図8に示す記載262は、出力値を変換した結果の記載例である。出力値の記載フォーマットについては本発明では特に限定されない。
ステップ134において出力値を変換した後、フレームワークアダプタ43は、ステップ135において、出力変換に過不足があるか否かを判定する。出力値変換は、入力値変換と異なり、アプリケーションサーバ11内で管理されたアプリケーションロジック46が出力する戻り値を、同じアプリケーションサーバ11内で管理する出力値管理テーブル38によって変換する為、システム上の矛盾がない限り出力値変換の過不足は発生しないはずである。
よって、ステップ135において出力値に過不足があると判定された場合、フレームワークアダプタ43は、ステップ141においてシステムエラーと判定し、ステップ143においてその旨を情報端末SIPクライアント15に処理応答として送信する。
ステップ135において出力値の過不足がないと判定された場合、フレームワークアダプタ43は、ステップ136において情報端末SIPクライアント15に正常応答を行う。具体的には、フレームワークアダプタ43は、Java Servletの機能ブロックである図2に示す送信パケット構築部48を、処理応答返信に必要なパラメータを付与して呼び出す。ステップ136は、図6に示すシーケンス図のステップ62の結果返信に相当する。
処理応答返信要求を受信した送信パケット構築部48は、各Java Servletの仕様に従い、図8、及び図10の様な返信用の通信パケットを生成し、処理応答パケット送信部49に生成された通信パケットを送る。そして、処理応答パケット送信部49は、図6に示すステップ63において処理結果応答のSIPメッセージをSIPサーバ12に送信する。
SIPサーバ12は、応答SIPメッセージのあて先を確認し、ステップ64においてそのメッセージをUserAが使用する情報端末SIPクライアント15に転送する。これによって、UserAが使用する情報端末SIPクライアント15は、ステップ51において送信した処理要求に対する応答を受信する。
以上、図6に示す処理において、本発明は、web.xml及びsip.xmlによって取得されていたIF規定を、フレームワークアダプタ43がデータベース28を検索することによって取得するため、IF規定を更新する際にweb.xml又はsip.xmlをアップデートする必要が無くなり、結果サーブレットロジック実行部33−2を停止することなく、アップデートをすることが可能となる。
また、本発明は、データベース28を用いることによって、各テーブルの情報にロックをかけることができるため、データベース28の情報を更新する際も、システムを停止しなくてもよい。
また、本発明は、ステップ55において、情報端末から送信される処理要求メッセージに含まれた入力情報を、アプリケーションロジック46に対応した入力値に変換する。そして同じく、ステップ61において、アプリケーションロジック46から出力された出力値を、情報端末に対応した出力値に変換する。
以下において、世代番号を用いたアプリケーションロジック46の実行を説明する。
図20、図21、図22、及び、図23に示すシーケンス図を用いて、ロジック開発端末16から本発明のフレームワーク部32にアプリケーションロジック46の新規登録、削除、ロジックアップデート、前世代ロジックの削除を行うケースについて説明する。
図20は、本発明の第1の実施形態のフレームワーク部32にアプリケーションロジック46を新規登録する処理を示すシーケンス図である。
以下に示す登録作業は、すべてロジック開発端末16によって行われる。
アプリケーションロジック46の新規登録において、ロジック開発端末16は、まずステップ201において新アプリケーションロジック46のIF名称を決め、アプリケーションロジック管理テーブル36にIF名称とプログラムのバイナリデータとを新規レコードとして登録する。そして、カラム154のクラス名称には、登録する新アプリケーションロジック46のプログラムバイナリ内で定義される新アプリケーションロジック46のクラス名称が登録され、カラム155には、新アプリケーションロジック46のプログラムバイナリ内のクラスで定義されるロジックメソッド名称が登録され、カラム155の世代番号には、新規登録である為、”1”を付与されたレコードが登録される。
次に、ステップ202において新規登録するアプリケーションロジック46の引数情報について、入力値管理テーブル37に入力値変換ルールが登録される。カラム162には、ステップ201において登録されたアプリケーションロジック46のIF名称が登録される。カラム163には、アプリケーションロジック46のメソッドの引数の順番が登録される。
例えば、アプリケーションロジック46のメソッドが、
“public String MethodA(String id、 int no){・・・”
と定義されていた場合、引数”id”は、第1引数なのでカラム163の値は”1”となり、引数”no”は第2引数なのでカラム163の値は”2”となる。
もし、引数がJavaクラスの形式を採り、その下位メンバを入力値管理テーブル37において定義する場合、カラム163の値は、親のクラスの番号に合わせるか、又は、値を入れないか、いずれかの方法によって登録されてよいが、本実施形態においては、特に記載方法については限定しない。
カラム164には、上記の様にこの引数が親クラスの下位メンバである場合、親クラスのカラム166の引数名の値が登録される。カラム165には、この引数のJavaクラス名が登録される。カラム166には、この引数の引数名を登録時に定義され、その値が登録される。カラム167には、この引数が情報端末の送信する処理要求に含まれる入力値の内で本引数に対応させるパラメータ名を登録する。カラム168には、ステップ201において、登録されたアプリケーションロジック46と同じ世代番号が登録される。
この様にして、アプリケーションロジック46の全引数(ある引数がJavaクラスである場合は、その下位メンバも含めて)は、1引数1レコードの形式によって登録される。
次に、ステップ203において、新規登録するアプリケーションロジック46の戻り値情報について、出力値管理テーブル38に出力値変換ルールが登録される。カラム182には、ステップ201において登録されたアプリケーションロジック46のIF名称が登録される。カラム183には、入力値登録における入力値管理テーブル37のカラム164と同じく、出力値に親クラスが存在する場合、親クラスのカラム185の戻り値名が登録される。
カラム184には、この戻り値のJavaクラス名が登録される。カラム185には、この戻り値の戻り値名を登録時に定義し、その値が登録される。カラム186には、この戻り値が情報端末へ送信する処理応答に含ませる出力値の中に出力値を記載する時に指定されるパラメータ名が登録される。カラム168は、ステップ201において登録されたアプリケーションロジック46と同じ世代番号が登録される。
この様にして、アプリケーションロジック46の全戻り値(戻り値がJavaクラスである場合は、その下位メンバも含めて複数となる可能性もある)は、1戻り値1レコードの形式によって登録される。
次に、ステップ204において新規登録したアプリケーションロジック46に対応するアドレス情報を登録する。カラム172には、このアプリケーションロジック46を呼び出すフレームワークアダプタの識別子が登録される。カラム173には、情報端末が本アプリケーションロジック46を実行する為にカラム172に登録されたフレームワークアダプタ43に送信する処理要求に記載するアドレス情報が登録される。ただし、前述した様にシステムによっては、このカラム173に、サーバドメインの情報を加えられたアドレス情報が登録されてもよい。カラム174には、ステップ201において登録されたアプリケーションロジック46のIF名称が登録される。
次に、ステップ205において、新規登録するアプリケーションロジック46の引数及び戻り値が、独自に定義するJavaクラスであった場合、そのプログラムのバイナリデータが登録される。カラム291には、ステップ201において登録されたアプリケーションロジック46のIF名称が登録される。カラム292には、入出力によって利用されるクラスのプログラムバイナリが登録される。カラム293には、カラム292に登録されたプログラムによって定義されたクラス名称が登録される。カラム294には、ステップ201において登録されたアプリケーションロジック46と同じ世代番号が登録される。
以上によって、ステップ201からステップ206までのアプリケーションロジック46の新規登録時の処理シーケンスを説明したが、これら処理の順番は、システムに従って前後してもよい。
図21は、本発明の第1の実施形態のフレームワーク部32からアプリケーションロジック46を削除する処理を示すシーケンス図である。
本実施形態におけるアプリケーションロジック46を削除する処理は、ステップ211、212、213、214、215、及び216の順番によって、各テーブルに登録されたアプリケーションロジック46に関するレコードを全て削除することによって行われる。図20に示す新規登録の処理と同じく、ロジック開発端末16は、アプリケーションロジック管理テーブル36、入力情報管理テーブル37、出力情報管理テーブル38、アダプタIF管理テーブル39、入出力クラスバイナリ管理テーブル40、及びエラー出力管理テーブル306から、アプリケーションロジック46に関するレコードを全て削除する。
本処理もアプリケーションロジック46の新規登録と同じく、処理の順番をシステムに従って変更されてもよい。
図22は、本発明の第1の実施形態のフレームワーク部32にすでに登録済みのアプリケーションロジック46を新しいバージョンにアップデートする処理を示すシーケンス図である。
アプリケーションロジック46をアップデートする処理において、ロジック開発端末16は、まずステップ221において新バージョンのアプリケーションロジック46をアプリケーションロジック管理テーブル36に登録する。この登録処理において、本実施形態のロジック開発端末16は、既存のアプリケーションロジック46のレコードを上書きしない。かわりに、ロジック開発端末16は、アプリケーションロジック管理テーブル36に新しいレコードを登録する。
ロジック開発端末16が新しく登録するレコードは、アプリケーションロジック管理テーブル36におけるカラム152、154、及び155の値が、バージョンアップ対象となるアプリケーションロジック46の元の値を踏襲して登録され、カラム153の値が新しいアプリケーションロジック46のプログラムバイナリを登録される。
新しく登録されるレコードのカラム156の世代番号には、アプリケーションロジック管理テーブル36に登録されたIF名称が同一のアプリケーションロジック46のうち、登録処理時点において、最大値である世代番号に+1した値の世代番号が登録される。例えば、レコード331の様に、IF名称”function1”のアプリケーションロジック46をアップデートした場合、レコード331のカラム156の値”1”を+1した”2”が、レコード332の様にカラム156の世代番号に登録される。
本実施形態においては、世代番号を正の整数で示し、世代番号はアップデートされる毎に+1される方法によって世代を識別する方法を示したが、本発明では、世代管理の方法を特に限定しない。
次に、ロジック開発端末16は、ステップ222、223、224、及び225において、それぞれ入力値管理テーブル37、出力値管理テーブル38、入出力クラスバイナリ管理テーブル40、及びエラー出力管理テーブル306に、アップデート後のアプリケーションロジック46についての各種情報を登録する。ただし、これらの登録は、各情報がアップデートによって変更される場合と変更されない場合において、それぞれ処理が異なる。
各種情報がアップデートによって変更される場合、基本的な処理内容は、前述したアプリケーションロジック46の新規登録時の処理と同様である。ただし、各テーブルの世代番号を示すカラムの値は、アプリケーションロジック管理テーブル36のカラム156に登録した値と同じ値が登録される。
各種情報がアップデートによって変更されない場合、各テーブルについて、アップデート前のアプリケーションロジック46を示すレコードを抽出し、該当レコードの世代番号を示すカラムの値をアップデート後のアプリケーションロジック46の世代番号(アプリケーションロジック管理テーブル36のカラム156に登録した値)に更新する。
この様に、世代番号のみを更新することによって、アップデート後のアプリケーションロジック46を動作させる場合は、アプリケーションサーバ11は、同一世代番号の情報を用いてアップデート後のアプリケーションロジック46を動作させることができる。また、アップデート前のアプリケーションロジック46を動作させる場合、同一世代番号のアプリケーションロジック46の情報が上記更新によって無くなる為、アプリケーションサーバ11は、「自分の世代番号以上の値のうち最も小さな値」の世代番号を持つアプリケーションロジック46の情報を用いて、アップデート前のアプリケーションロジック46を動作させる。
例えば、入力値管理テーブル37について、世代番号”1”のアプリケーションロジック46がアップデートされて、世代番号”2”のアプリケーションロジック46が登録されたが入力値は変更されない場合、世代番号”1”の入力値情報のレコードは、世代番号”2”に更新される。その後、さらにアプリケーションロジック46がアップデートされて世代番号”3”のアプリケーションロジック46が登録され、入力値が変更される場合、世代番号”2”の入力値情報のレコードはそのまま変更されず、世代番号”3”の入力値情報のレコードを新規登録する。
前述の場合、世代番号”1”のアプリケーションロジック46が入力値情報を求める際は、自分の世代番号である1よりも大きい値を示す世代番号のうち、最小の世代番号の値を持つアプリケーションロジック46を抽出する。そして、世代番号”2”の入力値情報のレコードはまだ存在している為、このレコードを利用することとなる。つまり、入力値情報が変更された世代番号”3”の入力値情報は用いられず、正しい入力値情報である世代番号”2”の入力値情報を用いることができる。
これらのアップデート処理も、アプリケーションロジック46の新規登録時と同じく、処理の順番をシステムに応じて前後されてもよい。
図23は、本発明の第1の実施形態の所定の世代のアプリケーションロジック46のみを削除する処理を示すシーケンス図である。フレームワーク部32に登録済みのアプリケーションロジック46は、複数世代に渡ってフレームワーク部32に登録されているものとする。
アプリケーションロジック46のうち、所定の世代番号を持つアプリケーションロジック46のみを削除する処理は、まずステップ221においてアプリケーションロジック管理テーブル36から該当アプリケーションロジック46のレコードを削除する。
次にステップ222、223、224、及び225において、ロジック開発端末16は、入力値管理テーブル37、出力値管理テーブル38、入出力クラスバイナリ管理テーブル40、及びエラー出力管理テーブル306に、必要があれば各情報を更新、又は削除する。以下更新、及び削除を実施するときの処理手順について、図24に示すフローチャートを用いて説明する。
図24は、本発明の第1の実施形態のアプリケーションロジック46の特定世代のみを削除する処理を示すフローチャート図である。
まず、アプリケーションサーバ11は、ロジック開発端末16からロジック削除(ステップ221)の要求を受けると、ステップ351において、各テーブルのレコードに、削除するアプリケーションロジック46と同一のIF名称であり、かつ同一の世代番号であるレコードの存在の有無を判定する。
該当するレコードが存在しない場合、アプリケーションサーバ11は、更新対象がない為、更新処理を行わずに処理を終了する。
該当するレコードが存在する場合、アプリケーションサーバ11は、ステップ353において、アプリケーションロジック管理テーブル36上に登録された同一IF名称のアプリケーションロジック46のうち、削除するアプリケーションロジック46の世代番号より小さく、かつ最も大きな世代番号の値を取得する。
例えば、世代番号が”1”、”3”、”4”、及び”6”であるアプリケーションロジック46がアプリケーションロジック管理テーブル36に存在し、世代番号”6”のアプリケーションロジック46を削除する場合、取得する世代番号は、”4”となる。この処理は、アプリケーションロジック管理テーブル36上に存在する同一IF名称のアプリケーションロジック46の中で、削除対象ロジックの一つ前の世代番号を取得する処理である。
世代番号を取得する処理において、削除するアプリケーションロジック46の世代番号から−1した値を取得する対象としない理由は、すでに−1した値の世代番号を持つアプリケーションロジック46が削除済みであり、世代番号が歯抜けの状態である場合、単純に−1した値を取得する対象とすることはできないからである。
次にステップ354において、アプリケーションサーバ11は、更新及び/又は削除対象となるアプリケーションロジック管理テーブル36上に、ステップ353において取得された世代番号のレコードが存在するか否かを判定する。
ステップ353において取得されたレコードが存在しない場合は、アプリケーションサーバ11は、ステップ355において、削除されるアプリケーションロジック46の世代番号を持つレコードのカラム156の値を、ステップ353において取得された値に更新する。
これは、ステップ353において取得された世代番号のアプリケーションロジック46から、削除対象となる世代番号のアプリケーションロジック46にアップデートする時に、対象情報に変更はなく、ステップ353において取得された世代番号のアプリケーションロジック46が、削除対象となる世代番号の情報を参照して作成されている為である。また、削除対象のアプリケーションロジック46の世代番号の情報を、そのまま削除してしまうと、ステップ353において取得された世代番号のアプリケーションロジック46が用いる各種情報が存在しなくなったり、又は間違った世代の情報が参照されてしまったりする。
削除対象となる世代番号を持つレコードの値を、ステップ353において取得された世代番号の値に更新することによって、ステップ353において取得された世代番号のアプリケーションロジック46は、正確な各種情報を参照することができる。
ステップ353において取得されたレコードが存在する場合は、アプリケーションサーバ11は、ステップ353において取得されたレコードを削除する(ステップ356)。これは、ステップ353において取得された世代番号のアプリケーションロジック46から削除対象となる世代番号のアプリケーションロジック46にアップデートする時に、対象となる情報に変更が発生し、新たに各種情報のレコードを登録した為、該当レコードを削除しても、ステップ353において取得された一つ前の世代番号のアプリケーションロジック46が利用する各種情報には影響が出ない為である。
前述の様な処理を、各テーブルについて実施することによって、不要な各種情報を削除することができる。また、本処理もアプリケーションロジック46の新規登録と同じく、処理の順番をシステムに従って前後させてもよい。
図25は、本発明の第1の実施形態のアプリケーションロジック46のアップデート又は削除が行われる際に、情報端末から処理要求を受信した場合のアクセスを切り分けるシステムを示す説明図である。
図25は、アプリケーションロジック46が世代管理された状態において、アプリケーションロジック46がアップデートを実施された瞬間、又はアプリケーションロジック46を削除された瞬間に、処理要求を送信する情報端末毎に適切な世代のアプリケーションロジック46を処理させる為の、アプリケーションサーバ11内部の装置構成を示した図である。また、図25の説明とあわせて、ユーザからの要求を処理する途中でアプリケーションロジック46のアップデート、又は、削除が発生した場合のアプリケーションサーバ11による処理について説明する。
アプリケーションロジック46をアップデートした場合、図22に示すシーケンスの様にアプリケーションロジック管理テーブル36、入力値管理テーブル37、出力値管理テーブル38、入出力クラスバイナリ管理テーブル40、及びエラー情報管理テーブル304の各テーブルに、図25に示すロジック情報246、入力情報249、出力情報252、入出力バイナリ258、及びエラー情報371の様に新しい世代番号のアプリケーションロジック46に関連する情報を新規登録するか、又は、既存情報の世代番号の更新を実行する。図25に示す例では全て新規登録する(前世代番号と内容が変わる)ケースについて記載する。
ある世代番号の処理を実施中に、次の世代番号のアプリケーションロジック46が登録された場合、図25に示すロジック情報245及び246、入力情報248及び249、出力情報251及び252、入出力バイナリ257及び258、並びに、エラー情報260及び371の様に、各テーブルに同じアプリケーションロジック46について、世代番号が異なる二つ以上のレコードが存在することになる。
アプリケーションサーバ11は、この様な場合においても、間違った世代番号のデータを利用しない様にする為に、図6に示すステップ57において、これから実行するアプリケーションロジック46の世代番号を確認した後、ステップ58において図25に示すメモリ241の様に、アプリケーションサーバ11内部のメモリ22上に現在処理中のアプリケーションロジック46の世代番号を記憶する。
メモリ241には、処理番号と、世代番号とが格納される。処理番号とは、アプリケーションサーバ11が現在処理中の処理要求を識別する為に処理を開始する毎に付与されるアプリケーションサーバ11内でユニークな識別子である。また、図6に示すステップ58以降の処理において、各テーブルからアプリケーションロジック46情報を取得する時は、必ずメモリ241に含まれる世代番号が用いられる。この様に処理開始の時点で世代番号を記憶しておくことによって、以後の処理においても正しい世代番号のアプリケーションロジック46情報を取得することが可能となる。
アプリケーションロジック46を削除する場合、アプリケーションサーバ11は、図21に示すシーケンス図の様にアプリケーションロジック管理テーブル36、入力値管理テーブル37、出力値管理テーブル38、アダプタIF管理テーブル39、入出力クラスバイナリ管理テーブル40、及びエラー情報管理テーブル304の各テーブルから、図25に示すロジック情報244、入力情報247、出力情報250、入出力バイナリ情報256、エラー情報259の様に、アプリケーションロジック46に関連する情報を削除する。
しかし、あるアプリケーションロジック46の処理を実行中にそのアプリケーションロジック46を削除した場合、図25に示すロジック情報244、入力情報247、出力情報250、入出力バイナリ情報256、及びエラー情報259の様に各テーブルからアプリケーションロジック46についてのレコードが削除された状態となる。この様な状態が発生すると、処理途中においてアプリケーション情報が必要になった時にレコードが存在せず処理が出来ない状態が発生する。
そこでアプリケーションサーバ11は、アプリケーションロジック46を削除する時、図25に示すメモリ22を参照し、メモリ241に相当する全データを参照する。そこで、削除対象となるアプリケーションロジック46を利用しているデータが抽出できた場合、削除処理を一旦保留し、全利用情報が無くなった時点で削除する。
ただし、上記処理については、アプリケーションロジック46のアップデート時に、処理中のフローが正しい世代の情報を参照でき、かつ、処理中のフローが存在する状態でアプリケーションロジック46を削除しても処理に矛盾が生じない様にできれば、他の方法を用いてもよい。
次に、アプリケーションロジック46が複数世代登録されていた状態において、各ユーザからの処理要求に対してどの世代のアプリケーションロジック46を呼び出すかを振り分ける為の方法について説明する。本発明においては、アプリケーションロジック46の振り分け方法について、以下四つの例を挙げ、順に説明する。
1.アプリケーションサーバ11を利用して情報端末に表示される、Web画面上での操作に対する世代振り分け
2.処理要求を受信したときのreferer(送信元URL情報)を利用した、世代振り分け
3.SIPのUser−Agentヘッダを利用した世代振り分け
4.アプリケーションロジック46の連携パターンによる世代振り分け
まず、アプリケーションサーバ11を利用して表示するWeb画面上の操作に対する世代振り分けを行う方法を図27に示すシーケンス図、図29に示すテーブル構成図、及び図26に示す構成図を用いて説明する。
アプリケーションサーバ11は、Java Http Servletの機能も有する為、ユーザに対してHTMLを送信し、Web画面の表示を制御することも可能である。本実施形態において、このアプリケーションサーバ11は、自身が生成するHTML画面上で、ユーザがアプリケーションロジック46への処理要求を送信する為のアクションが記載されている部分(HTML画面におけるformタグ等)にhiddenタグ等を用いることによって、利用するアプリケーションロジック46の世代番号を埋めこむ。
図27に示すシーケンス図と、図26に示す説明図とを用いて、その手順を説明する。
図26は、本発明の第1の実施形態のアプリケーションサーバ11を利用して、情報端末に表示されるWeb画面上の操作に世代振り分けを行うサーブレットフィルタを示す説明図である。
図26に示す構成は、図2に示すアプリケーションサーバ11の構成に、サーブレットフィルタ部452を追加した構成である。サーブレットフィルタ部452には、世代番号付与部453が備わる。その他のフレームワーク部32、及びサーブレット処理要求送受信制御部33−1等は、図2に示す構成と同じである。また、アプリケーションサーバ11に接続される各データベースも、図2に示す各データベースと同じである。
フレームワークアダプタ43は、情報端末において表示される画面のHTMLを生成する。また、世代番号付与部453は、生成されたHTMLに世代番号を付与する。
図27は、本発明の第1の実施形態のアプリケーションサーバ11を利用して、情報端末に表示されるWeb画面上の操作に世代振り分けを行う処理を示すシーケンス図である。
まず、UserAが用いる情報端末Webブラウザ14は、自身のWebブラウザに画面を表示する為に、ステップ381において、URLが指定されたHTTP GET(画面HTMLの取得要求)をアプリケーションサーバ11に送信する。このHTTP GETは、図26に示すユーザ処理要求パケット受信部41によって受信され、受信パケット分析部42によってその内容を分析される。そして、分析されたHTTP GETがサーブレットロジック実行部に送信されると、サーブレットロジック実行部33−2に登録されたサーブレットロジック303の中から、呼び出すサーブレットロジック303が選択される。
これら一連の処理は、図6に示すステップ53及び54の処理と同じである。既存技術のみで実現可能なJava HTTP Servletを利用したWeb画面表示の様なケースでは、図4に示す設定ファイルに、一般的なHTTP Servletと同じ様にURLとサーブレットロジックの組み合わせを記載すればよい。
その後、アプリケーションサーバ11は、フレームワークアダプタ43を呼び出し、図27のステップ382において、HTMLを生成する。
その後、アプリケーションサーバ11は、サーブレットフィルタ部452の世代番号付与部453によって、ステップ382において生成されたHTMLの必要な部分に、世代番号情報を埋め込む(ステップ383)。サーブレットフィルタ部452は、既存のJava Servletに用意された機能であり、図4において説明したサーブレット設定ファイルにフィルタを実行する為のURLパターンと呼び出すフィルタロジックとを記載することによって、自由なフィルタプログラムを呼び出すことが可能である。
本実施形態においては、フレームワーク部32用に用意された世代番号付与部453をフィルタとして用意して、実行させる。世代番号付与部453の処理について、図28のフローチャートを用いて詳述する。
図28は、本発明の第1の実施形態のアプリケーションサーバ11を利用して情報端末に表示される、Web画面上の操作に対する世代振り分けを行う方法によって世代番号を付与するフィルタの処理を示すフローチャートである。
図28のフローチャートにおいて、世代番号付与部453は、まずアプリケーションサーバ11のフレームワークアダプタ43によって生成されたHTMLを受信し、受信したHTMLの中に、フレームワーク部32において実行されるアプリケーションロジック46に処理要求をする為の表記があるか否かを判定する。すなわち、世代番号付与部453は、ステップ461において、HTMLに含まれるアドレス情報と、アダプタIF管理テーブル39に含まれるアドレス情報とが一致(マッチ)する、アダプタIF管理テーブル39のレコード(マッチング箇所)を取得する。
Web画面上からアプリケーションロジック46に処理要求をする場合、情報端末から送られるHTMLには、そのアドレス情報(URL)が含まれる。この為、アダプタIF管理テーブル39のカラム173によって管理されるアドレス情報の何れかがHTMLに含まれる場合、世代番号付与部453は、アプリケーションロジック46を呼び出す処理であると判定できる。
世代番号付与部453は、ステップ462において、マッチング箇所が取得されたか否かを判定する。
マッチング箇所が取得された場合、すなわち、HTMLにアドレス情報と、アダプタIF管理テーブル39に含まれるアドレス情報とが一致する場合、世代番号付与部453は、該当アドレス情報が記載されたアダプタIF管理テーブル39のレコード内のカラム174が示されるIF名称を、後述する処理の為に記憶する。そして、ステップ463に進む。
また、マッチング箇所が取得されなかった場合、世代番号付与部453は、そのまま処理を終了する。
世代番号付与部453は、ステップ463において、URL−世代番号管理テーブル391の情報を利用して、ステップ461において取得されたアプリケーションロジック46に対する処理要求についての記載部分に、呼び出すロジックの世代番号情報を埋め込む処理を実施する。
図29は、本発明の第1の実施形態のURL−世代番号管理テーブル391を示す説明図である。
URL−世代番号管理テーブル391において、カラム392の値がIF名称を示す。カラム393の値が、表示するWeb画面のURLを示す。カラム394の値が、対応する世代番号を示す。URL−世代番号管理テーブル391は、データベース28に格納される。
すなわち、このURL−世代番号管理テーブル391は、例えば、あるユーザがカラム393に格納されたURLにアクセスし、Web画面を表示させようとする際において、一方で、アプリケーションサーバ11から返信されるHTML情報の中には、カラム392に格納されたIF名称のアプリケーションロジック46に処理要求を実行する様な記載がある場合、返信されるHTML情報の世代番号には、カラム394に記載された値が格納される、といった情報を示す。
世代番号付与部453は、ステップ461において取得されたアダプタIF管理テーブル39のカラム174のIF名称の値と、図27に示すステップ381のHTTP GETメッセージによって情報端末Webブラウザ14が指定したURLとに基づいて、URL−世代番号管理テーブル391を検索し、該当レコードのカラム394が示す世代番号の値を取得する。そして、HTML記述の中にhiddenタグ等を用いて、この世代番号を埋め込む(ステップ463)。
ステップ463の処理が完了すると、世代番号付与部453は、ステップ464において、全てのHTMLを解析したか否かを判定する。解析されていないHTMLが残っている場合、アプリケーションサーバ11はステップ461に戻り再度解析を開始する。そして、全てのHTMLを解析した場合、処理を終了させる。
前述の処理、すなわち図28に示す処理であり、図27に示すステップ383に相当する処理によって、HTMLの情報に世代番号を埋め込んだ後、世代番号付与部453は、ステップ384において、UserAが用いる情報端末Webブラウザ14にHTML情報を返信する。
その後、UserA(ユーザ)が使用する情報端末Webブラウザ14に表示されたWeb画面上で、ユーザがステップ385の様にアプリケーションロジック46に処理要求を送信するボタンを押下するなどの操作を行うと、ステップ386において、アプリケーションサーバ11にアプリケーションロジック46を実行する処理要求(本実施形態においては、HTTP POSTメッセージ)を送信する。
アプリケーションサーバ11は、HTTP POSTメッセージによる処理要求を受信すると、図6に示すステップ53からステップ62までの処理を実行する。その際に、ステップ57の世代番号確認の処理において、HTMLに埋め込まれ、HTTP POSTのパラメータの一部として処理要求に付与されてきた世代番号を取得することによって、呼び出すアプリケーションロジック46の世代番号を取得する(図27に示すステップ387のバージョン番号確認が本処理に相当する)。その後、取得された世代番号のアプリケーションロジック46を実行し(図27に示すステップ388に相当。詳細は図6に記載)、ステップ389によって処理結果を返信する。
この様に、フィルタ機能、すなわち、サーブレットフィルタ部452が備える世代番号付与部453を利用して、アプリケーションサーバ11自身が生成するHTMLに世代番号を付与することによって、アプリケーションサーバ11が備える内部情報のみにおいて利用されるアプリケーションロジック46の世代番号を管理することが可能となる。また、Java Servletによって規定されたフィルタ機能を用いて世代番号付与部453を導入する為、サーブレットロジック(フレームワークアダプタ43)をフレームワーク部32専用に開発しなくても世代番号を付与することが可能となり、利用可能なサーブレットロジックの幅が広がる。
また、本実施形態において、ユーザに送信するHTMLに世代番号を埋め込むことによって、世代振り分けを実現したが、Java Servletのセッションオブジェクトを利用してもよい。
さらに、HTTPには、Cookie等を用いることによって、HTTPリクエストメッセージが一連性を持つことを示すセッションの概念がある。セッションオブジェクトとは、Java Servletがユーザからの同一HTTPセッション上でのアクセスに対して、サーバ内部でそのセッションにおいて用いられる一時的な情報をメモリ上に保持しておく為の格納領域のことである。ユーザからのHTTPアクセスに対してアプリケーションサーバ11側が前のアクセスと同一セッションであると判定した場合、メモリ22上から前回アクセス時に生成した情報を取り出すことができる。
例えば、Webショッピングサイトなどにおいて、前に表示されたWeb画面上で選択された商品を、次の画面上に表示させる様な処理は、前のWeb画面上において選択された商品の情報をセッションオブジェクトに一旦保持し、次のWeb画面を表示する時は、セッションオブジェクトから商品情報を取得して表示することによって実現される。
今回のフレームワーク部32の場合においても、上記説明内のHTMLに世代管理番号を埋め込む処理の代わりに、セッションオブジェクトに世代管理番号を記憶する処理に変更すれば、ユーザが同一セッション内でアクセスしてくる限り、サーバ側で保持する世代管理番号を利用することができ、上記説明と同様の機能を実現することができる。
次に、処理要求を受信したときのreferer(送信元URL情報)を利用した世代振り分け方法について、図9及び図30を用いて説明する。
一般的なHTTPメッセージには、図9に示す記載84の様なRefererヘッダが付与されている。このRefererヘッダは、情報端末Webブラウザ14がHTTPメッセージを送信する時に付与するヘッダであり、送信するHTTPメッセージがどのURLのWebページを辿って送信されているかを示す情報を含む。
例えば、ユーザが、”http://aaa.co.jp/index.html”のURLによって表示されるWebページ上にあるリンクをクリックして”http://bbb.co.jp/index.html”のURLのページを表示する場合、Webサーバに送信するHTTPメッセージには、”http://aaa.co.jp/index.html”が含まれたRefererヘッダが付与される。本発明のフレームワーク部32は、referer−世代番号管理テーブル401と、このRefererヘッダの値とを利用して、アプリケーションロジック46の世代振り分けを可能にする。
図30は、本発明の第1の実施形態のreferer−世代番号管理テーブル401を示す説明図である。
referer−世代番号管理テーブル401において、カラム402の値がIF名称を示す。カラム403の値が、ユーザから受信する処理要求に含まれるRefererヘッダの値を示す。カラム404の値が、アプリケーションロジック46の世代番号を示す。referer−世代番号管理テーブル401は、データベース28に格納される。
本実施形態においてアプリケーションサーバ11は、ユーザからの処理要求を受信し、図11に示すステップ92においてIF名称を取得し、ステップ93において対応IF名称が存在することを判定する。そして、アプリケーションサーバ11は、ステップ94の処理の前にreferer−世代番号管理テーブル401を、受信した処理要求に記載されていたRefererヘッダの値とIF名称とを用いて検索し、検索結果として得られたレコードのカラム404の値をアプリケーションロジック46の世代番号として処理を続ける。
この様に、アプリケーションサーバ11が、Webブラウザ14等がデフォルトで付与するヘッダ情報を利用してアプリケーションロジック46の世代番号を管理することによって、アプリケーションサーバ11以外のサーバが生成したHTMLからの処理要求についてアプリケーションロジック46の世代振り分けを実行することが可能となる。
次に、SIPのUser−Agentヘッダを利用した世代振り分け方法について、図7と図31とを用いて説明する。
一般的なSIPメッセージには、図7に示す記載76の様なUser−Agentヘッダが付与される。このUser−Agentヘッダは、IP電話等のSIP端末がSIPメッセージを送信する時に付与されるヘッダであり、自身の端末の種類、及び端末のバージョン番号をSIPサーバに通知する為に用いる。本発明のフレームワーク部32においてはUser−Agent−世代番号管理テーブル411と、このUser−Agentヘッダとの値を利用してアプリケーションロジック46の世代振り分けを可能にする。
図31は、本発明の第1の実施形態のUser−Agent−世代番号管理テーブル411を示す説明図である。
User−Agent−世代番号管理テーブル411において、カラム412の値が、IF名称を示す。カラム413の値が、ユーザから受信する処理要求に含まれるUser−Agentヘッダの値を示す。カラム414の値が、アプリケーションロジック46の世代番号を示す。User−Agent−世代番号管理テーブル411は、データベース28に格納される。
SIPメッセージを受信した場合の、アプリケーションロジック46を振り分ける方法は、前述のRefererヘッダを用いた世代番号の振り分け方法における処理と同じである。アプリケーションサーバ11は、図11に示すステップ94の処理の前にUser−Agent−世代番号管理テーブル411を、受信した処理要求に含まれたUser−Agentヘッダの値とIF名称とを用いて検索する。そして、検索結果として得られたレコードのカラム414の値を、アプリケーションロジック46の世代番号とし、以降の処理を続ける。
この様に、情報端末SIPクライアント15がデフォルトで付与するヘッダ情報を利用してアプリケーションロジック46の世代番号を管理することによって、情報端末SIPクライアントからの処理要求についてアプリケーションロジック46の世代振り分けを実行することが可能となる。
次に、アプリケーションロジック46の連携パターンによる世代振り分けの方法について図32、及び33を用いて説明する。この方法は、あるアプリケーションロジック46が他のアプリケーションロジック46を呼び出す様な、アプリケーションロジック46間の連携が発生する場合に、用いられる方法である。
図32は、本発明の第1の実施形態のアプリケーションロジック46の連携パターンで世代振り分けを行う処理を示すシーケンス図である。
図32に示すステップ431において、UserAが用いる情報端末SIPクライアント15がアプリケーションサーバ11に処理要求を送信し、ステップ432においてAPP1のアプリケーションロジック46が実行されるまでは、図6に示すシーケンス図におけるステップ59までの処理と同じである。処理が完了して、処理応答を返信するとき(図6に示すステップ60から)、アプリケーションサーバ11は、図32に示すステップ433において処理されたAPP1ロジックの世代番号、及び、APP1ロジックを実行したことを示す情報を含んだ処理応答を、情報端末SIPクライアント15に返信する。
次に、UserAが用いる情報端末SIPクライアント15は、ステップ436において、アプリケーションサーバ11にAPP2のアプリケーションロジック46を実行する為の処理要求を送信する。その際に、情報端末SIPクライアント15は、ステップ434において受信したAPP1の世代番号情報を付与して処理要求を送信する。
アプリケーションサーバ11は、ステップ437の世代特定処理の部分で、アプリケーションロジック連携世代番号管理テーブル421を検索することによって、この処理で実行するAPP2の世代番号を判定する。
図33は、本発明の第1の実施形態のアプリケーションロジック連携世代管理テーブル421を示す説明図である。
アプリケーションロジック連携世代管理テーブル421において、カラム422の値は、連携元アプリケーションロジック46のIF名称を示す。カラム423の値は、連携元アプリケーションロジック46の世代番号を示す。カラム424の値は、連携先アプリケーションロジック46のIF名称を示す。カラム425の値は、連携先アプリケーションロジック46の世代番号を示す。
ステップ437の世代特定処理では、アプリケーションサーバ11は、ステップ436において受信した処理要求に含まれる、前に処理されたアプリケーションロジック46のIF名称と、世代番号と、図11のステップ92において取得された、これから処理するアプリケーションロジック46のIF名称とを用いて、アプリケーションロジック連携世代管理テーブル421を検索する。この検索によって取得されたレコードのカラム425の値を、これから処理するアプリケーションロジック46の世代番号として、以降のAPP2のアプリケーションロジック46の実行(ステップ438)、及び、情報端末SIPクライアント15への結果応答(ステップ439)を行う。
この様に、連携元のアプリケーションロジック46は自分の世代番号を付与し、アプリケーションサーバ11が連携元と先の世代番号との対応関係をアプリケーションロジック連携世代管理テーブル421上で管理することによって、連携元のアプリケーションロジック46は、連携先のアプリケーションロジック46が現在保持する世代番号を気にせずにアプリケーションロジック46間の連携を実現することが可能となる。
すなわち、連携元のアプリケーションロジック46が、呼び出す連携先のアプリケーションロジック46の世代番号を変更する場合、連携元及び連携先のアプリケーションロジック46の変更は不要であり、アプリケーションロジック連携世代管理テーブル421の設定を変更するのみによって、呼び出し世代番号の変更を実現可能である。
また、図32に示すシーケンス図においては、APP1の処理が完了した後、ステップ434において、UserAが用いる情報端末SIPクライアント15に処理結果を返信した後、UserAが用いる情報端末SIPクライアント15が次の処理であるAPP2に処理要求を送信している。しかし、本シーケンス図のステップ434、及び436を省略して、アプリケーションサーバ11内部でアプリケーションロジック46間の連携を実行してもよい。
この様な場合においても基本的な考え方は同じであり、アプリケーションサーバ11は、ステップ433において付与された世代番号を、アプリケーションサーバ11内部でアプリケーションロジック46間の連携を行い、APP2を呼び出す際に付与することによって、APP2の世代番号を取得する。
なお、本実施形態において、世代番号は図2に示す各データベース内の1カラムに格納されたが、アプリケーションロジック46をキーとして世代番号のデータベースに格納されてもよい。
前述の通り本実施形態によれば、既存のJava Servletの上位部分に、アプリケーションロジック46を管理する為のフレームワーク部32を備える。また、フレームワーク部32において、各アプリケーションロジック46は、外部IF、アプリケーション本体情報、入力情報、出力情報、入出力情報において利用されるプログラムバイナリ、及びエラー情報を組み合わせて、所定のデータベースのテーブル上で管理される。
また、Java Servlet側には本フレームワーク部32と既存Servletの橋渡しを行うアダプタを備え、入出力値、及びアプリケーションロジック46のエラー出力に対する変換処理を行う。また、アプリケーションロジック46の世代情報が、上記各情報に付随して管理される。
これらの構成によって、本発明は以下の処理が可能となる。
1.IF情報とアプリケーションロジック46情報とを関連付けてデータベース管理することによって、アプリケーションの追加又は削除、アップデートを、web.xml、sip.xmlの書き換え無しに、行うことができる。その結果、システムを停止することなく、アプリケーションロジック46の追加、削除、又は、アップデートが可能となる。
2.アプリケーションロジック46の入出力情報についても合わせて管理し、フレームワーク部32部分において変換を実施する為、アプリケーションロジック46側の引数、戻り値を自由に設定することが可能である。また、入力値が間違った処理要求を受信しても、アプリケーションロジック46を実行する前に、フレームワーク部32部分でエラー判定を行うことができる。
3.アプリケーションファイル本体に加え、入出力情報、及びエラー出力情報等をデータベース上で管理することによって、アプリケーションロジック46のプログラム仕様がJava Servletの規定に縛られなくなり、自由度が高くなる。
4.Java Servlet上にフレームワーク部32を構築する為、Java Servletの規定を満足するサーバであれば本体を選ばない。
5.アプリケーションロジック46情報をデータベース28上で管理する為、アプリケーション追加、削除、又はアップデートが容易になる。従来のサーブレットでは、アプリケーションサーバ11に対してSSH又はTelnetでログインし、web.xml、sip.xmlを書き換え、さらにアプリケーションファイルを配置する必要があったが、これら操作を全てデータベース接続とSQLクエリ発行で実施可能となる為である。開発環境側でのアプリケーション追加、削除、又は、アップデートツール作成もサーバへのSSH、Telnet接続、又はファイルコピー操作等を実施せず、一般的なDB接続のみによって実行可能となる為、容易になる。

Claims (18)

  1. ネットワークを介して少なくとも1以上のクライアントから1以上の処理要求を受信し、前記受信した処理要求をJavaサーブレットを用いて処理するためのアプリケーションを実行する計算機であって、
    前記処理要求は、前記処理の要求先である1以上のアドレスを含み、
    前記計算機は、前記アプリケーションを一意に識別する識別子と、前記アプリケーションを実行するためのバイナリロジックとを対応させたアプリケーション情報、及び、前記識別子と前記各アドレスとを対応させたアダプタ情報を含むデータベースに接続され、
    前記計算機は、
    前記処理要求を受信した場合、前記受信した処理要求に含まれるアドレスに基づいて、前記バイナリロジックを特定し、
    前記特定されたバイナリロジックを実行することによって、前記アプリケーションを実行することを特徴とする計算機。
  2. 前記計算機は、
    前記アプリケーションを実行するフレームワークと、前記受信した処理要求を前記フレームワークに送る1以上のフレームワークアダプタとを備え、
    前記各フレームワークアダプタは、
    前記データベースに接続され、
    前記アダプタ情報を検索することによって、前記受信した処理要求に含まれるアドレスに対応する前記識別子を取得し、
    前記フレームワークは、
    前記取得した識別子に基づいて、実行されるアプリケーションのバイナリロジックを前記アプリケーション情報から特定し、
    前記データベースの更新が要求された場合には、前記識別子に対応するアプリケーション情報に従って処理を実行し、当該処理の終了後に前記データベースが更新されることを特徴とする請求項1に記載の計算機。
  3. 前記データベースは、前記アプリケーションへの入力形式に変換するための入力値情報と、前記アプリケーションからの出力形式を変換するための出力値情報とを含み、
    前記フレームワークアダプタは、
    前記識別子に基づいて、前記アプリケーションへの入力形式に変換するための情報を前記入力値情報から取得し、
    前記入力値情報から取得した情報を用いて、前記受信した処理要求に含まれる入力値を、前記取得した入力形式に変換し、
    前記取得した識別子に基づいて、前記アプリケーションからの出力形式を変換するための情報を前記出力値情報から取得し、
    前記出力値情報から取得した情報を用いて、前記アプリケーションからの出力を、前記クライアントに送信する形式に変換することを特徴とする請求項2に記載の計算機。
  4. 前記データベースは、前記識別子と、前記アプリケーションに入力値を入力するための入力クラス及び前記アプリケーションからの出力値を出力するための出力クラスとを対応させた入出力クラス情報を含み、
    前記フレームワークアダプタは、前記取得した識別子に基づいて、前記入力クラスを前記入出力情報から取得し、
    前記アプリケーションは、前記取得した入力クラスを参照して、前記入力値を受け取ることを特徴とする請求項3に記載の計算機。
  5. 前記データベースは、前記識別子と、前記アプリケーションから出力されたエラーの種類と、前記エラーを前記クライアントに応答するための形式とを対応させたエラー情報を含み、
    前記フレームワークアダプタは、
    前記取得した識別子に基づいて、前記エラーを前記クライアントに応答するための形式を、前記エラー情報から取得し、
    前記エラー情報から取得したエラー情報を用いて、前記アプリケーションから出力されたエラーを、前記クライアントに応答するための形式に変換することを特徴とする請求項3に記載の計算機。
  6. 前記データベースは、前記アプリケーションを、その変更毎に一意に識別するための世代番号を含み、
    前記フレームワークアダプタは、前記クライアントから送られた処理要求に対する応答に、前記処理要求を処理した前記アプリケーションの前記世代番号を付与し、
    前記フレームワークは、前記クライアントから再度送られた処理要求に前記世代番号が含まれる場合、前記処理要求に含まれる世代番号によって識別されるアプリケーションによって、前記処理要求を処理することを特徴とする請求項3に記載の計算機。
  7. ネットワークを介して少なくとも1以上のクライアントから1以上の処理要求を受信し、前記受信した処理要求をJavaサーブレットを用いて処理するためのアプリケーションを実行する計算機を備える計算機システムであって、
    前記処理要求は、前記処理の要求先である1以上のアドレスを含み、
    前記計算機は、前記アプリケーションを一意に識別する識別子と、前記アプリケーションを実行するためのバイナリロジックとを対応させたアプリケーション情報、及び、前記識別子と前記各アドレスとを対応させたアダプタ情報を含むデータベースに接続され、
    前記計算機は、
    前記処理要求を受信した場合、前記受信した処理要求に含まれるアドレスに基づいて、前記バイナリロジックを特定し、
    前記特定されたバイナリロジックを実行することによって、前記アプリケーションを実行することを特徴とする計算機システム。
  8. 前記計算機は、
    前記アプリケーションを実行するフレームワークと、前記受信した処理要求を前記フレームワークに送る1以上のフレームワークアダプタとを備え、
    前記各フレームワークアダプタは、
    前記データベースに接続され、
    前記アダプタ情報を検索することによって、前記受信した処理要求に含まれるアドレスに対応する前記識別子を取得し、
    前記フレームワークは、
    前記取得した識別子に基づいて、実行されるアプリケーションのバイナリロジックを前記アプリケーション情報から特定し、
    前記データベースの更新が要求された場合には、前記識別子に対応するアプリケーション情報に従って処理を実行し、当該処理の終了後に前記データベースが更新されることを特徴とする請求項7に記載の計算機システム。
  9. 前記データベースは、前記アプリケーションへの入力形式に変換するための入力値情報と、前記アプリケーションからの出力形式を変換するための出力値情報とを含み、
    前記フレームワークアダプタは、
    前記識別子に基づいて、前記アプリケーションへの入力形式に変換するための情報を前記入力値情報から取得し、
    前記入力値情報から取得した情報を用いて、前記受信した処理要求に含まれる入力値を、前記取得した入力形式に変換し、
    前記取得した識別子に基づいて、前記アプリケーションからの出力形式を変換するための情報を前記出力値情報から取得し、
    前記出力値情報から取得した情報を用いて、前記アプリケーションからの出力を、前記クライアントに送信する形式に変換することを特徴とする請求項8に記載の計算機システム。
  10. 前記データベースは、前記識別子と、前記アプリケーションに入力値を入力するための入力クラス及び前記アプリケーションからの出力値を出力するための出力クラスとを対応させた入出力クラス情報を含み、
    前記フレームワークアダプタは、前記取得した識別子に基づいて、前記入力クラスを前記入出力情報から取得し、
    前記アプリケーションは、前記取得した入力クラスを参照して、前記入力値を受け取ることを特徴とする請求項9に記載の計算機システム。
  11. 前記データベースは、前記識別子と、前記アプリケーションから出力されたエラーの種類と、前記エラーを前記クライアントに応答するための形式とを対応させたエラー情報を含み、
    前記フレームワークアダプタは、
    前記取得した識別子に基づいて、前記エラーを前記クライアントに応答するための形式を、前記エラー情報から取得し、
    前記エラー情報から取得したエラー情報を用いて、前記アプリケーションから出力されたエラーを、前記クライアントに応答するための形式に変換することを特徴とする請求項9に記載の計算機システム。
  12. 前記データベースは、前記アプリケーションを、その変更毎に一意に識別するための世代番号を含み、
    前記フレームワークアダプタは、前記クライアントから送られた処理要求に対する応答に、前記処理要求を処理した前記アプリケーションの前記世代番号を付与し、
    前記フレームワークは、前記クライアントから再度送られた処理要求に前記世代番号が含まれる場合、前記処理要求に含まれる世代番号によって識別されるアプリケーションによって、前記処理要求を処理することを特徴とする請求項9に記載の計算機システム。
  13. ネットワークを介して少なくとも1以上のクライアントから1以上の処理要求を受信し、前記受信した処理要求をJavaサーブレットを用いて処理するための計算機におけるアプリケーション実行方法であって、
    前記処理要求は、前記処理の要求先である1以上のアドレスを含み、
    前記計算機は、前記アプリケーションを一意に識別する識別子と、前記アプリケーションを実行するためのバイナリロジックとを対応させたアプリケーション情報、及び、前記識別子と前記各アドレスとを対応させたアダプタ情報を含むデータベースに接続され、
    前記方法は、
    前記計算機が、前記処理要求を受信した場合、前記受信した処理要求に含まれるアドレスに基づいて、前記バイナリロジックを特定し、
    前記計算機が、前記特定されたバイナリロジックを実行することによって、前記アプリケーションを実行することを特徴とするアプリケーション実行方法。
  14. 前記計算機は、前記アプリケーションを実行するフレームワークと、前記受信した処理要求を前記フレームワークに送る1以上のフレームワークアダプタとを備え、
    前記各フレームワークアダプタは、前記データベースに接続され、
    前記方法は、
    前記各フレームワークアダプタが、前記アダプタ情報を検索することによって、前記受信した処理要求に含まれるアドレスに対応する前記識別子を取得し、
    前記フレームワークが、前記取得した識別子に基づいて、実行されるアプリケーションのバイナリロジックを前記アプリケーション情報から特定し、
    前記フレームワークが、前記データベースの更新が要求された場合には、前記識別子に対応するアプリケーション情報に従って処理を実行し、当該処理の終了後に前記データベースが更新されることを特徴とする請求項13に記載のアプリケーション実行方法。
  15. 前記データベースは、前記アプリケーションへの入力形式に変換するための入力値情報と、前記アプリケーションからの出力形式を変換するための出力値情報とを含み、
    前記方法は、
    前記フレームワークアダプタが、前記識別子に基づいて、前記アプリケーションへの入力形式に変換するための情報を前記入力値情報から取得し、
    前記フレームワークアダプタが、前記入力値情報から取得した情報を用いて、前記受信した処理要求に含まれる入力値を、前記取得した入力形式に変換し、
    前記フレームワークアダプタが、前記取得した識別子に基づいて、前記アプリケーションからの出力形式を変換するための情報を前記出力値情報から取得し、
    前記フレームワークアダプタが、前記出力値情報から取得した情報を用いて、前記アプリケーションからの出力を、前記クライアントに送信する形式に変換することを特徴とする請求項14に記載のアプリケーション実行方法。
  16. 前記データベースは、前記識別子と、前記アプリケーションに入力値を入力するための入力クラス及び前記アプリケーションからの出力値を出力するための出力クラスとを対応させた入出力クラス情報を含み、
    前記方法は、
    前記フレームワークアダプタが、前記取得した識別子に基づいて、前記入力クラスを前記入出力情報から取得し、
    前記アプリケーションが、前記取得した入力クラスを参照して、前記入力値を受け取ることを特徴とする請求項15に記載のアプリケーション実行方法。
  17. 前記データベースは、前記識別子と、前記アプリケーションから出力されたエラーの種類と、前記エラーを前記クライアントに応答するための形式とを対応させたエラー情報を含み、
    前記方法は、
    前記フレームワークアダプタが、前記取得した識別子に基づいて、前記エラーを前記クライアントに応答するための形式を、前記エラー情報から取得し、
    前記フレームワークアダプタが、前記エラー情報から取得したエラー情報を用いて、前記アプリケーションから出力されたエラーを、前記クライアントに応答するための形式に変換することを特徴とする請求項15に記載のアプリケーション実行方法。
  18. 前記データベースは、前記アプリケーションを、その変更毎に一意に識別するための世代番号を含み、
    前記方法は、
    前記フレームワークアダプタが、前記クライアントから送られた処理要求に対する応答に、前記処理要求を処理した前記アプリケーションの前記世代番号を付与し、
    前記フレームワークが、前記クライアントから再度送られた処理要求に前記世代番号が含まれる場合、前記処理要求に含まれる世代番号によって識別されるアプリケーションによって、前記処理要求を処理することを特徴とする請求項15に記載のアプリケーション実行方法。
JP2009250115A 2009-10-30 2009-10-30 計算機、計算機システム、及び、アプリケーション実行方法 Withdrawn JP2011096045A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009250115A JP2011096045A (ja) 2009-10-30 2009-10-30 計算機、計算機システム、及び、アプリケーション実行方法
EP10008150A EP2317436A3 (en) 2009-10-30 2010-08-04 Computer, computer system, and application execution method
US12/853,414 US20110107156A1 (en) 2009-10-30 2010-08-10 Computer, computer system, and application execution method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009250115A JP2011096045A (ja) 2009-10-30 2009-10-30 計算機、計算機システム、及び、アプリケーション実行方法

Publications (1)

Publication Number Publication Date
JP2011096045A true JP2011096045A (ja) 2011-05-12

Family

ID=43569705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009250115A Withdrawn JP2011096045A (ja) 2009-10-30 2009-10-30 計算機、計算機システム、及び、アプリケーション実行方法

Country Status (3)

Country Link
US (1) US20110107156A1 (ja)
EP (1) EP2317436A3 (ja)
JP (1) JP2011096045A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015178159A1 (ja) * 2014-05-19 2015-11-26 株式会社日立製作所 分散処理システム
CN111240896A (zh) * 2020-01-06 2020-06-05 深圳市随手科技有限公司 一种终端数据同步方法、装置、服务器及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9648049B2 (en) 2013-02-04 2017-05-09 Oracle International Corporation System and method for extending IP multimedia subsystem to HTML5 environments
US9712593B2 (en) 2013-02-04 2017-07-18 Oracle International Corporation Javascript API for WebRTC
US10476915B2 (en) 2013-02-04 2019-11-12 Oracle International Corporation Real-time communication signaling gateway
US9331967B2 (en) 2013-02-04 2016-05-03 Oracle International Corporation Browser/HTML friendly protocol for real-time communication signaling
US9307031B2 (en) 2013-02-04 2016-04-05 Oracle International Corporation Generic model for customizing protocol behavior through javascript
US9509745B2 (en) * 2013-02-04 2016-11-29 Oracle International Corporation Java API for programming web real-time communication applications
US9473581B2 (en) * 2013-02-04 2016-10-18 Oracle International Corporation Integrated web-enabled session border controller

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6041365A (en) * 1985-10-29 2000-03-21 Kleinerman; Aurel Apparatus and method for high performance remote application gateway servers
US7062540B2 (en) * 2000-08-15 2006-06-13 I2 Technologies Us, Inc. System and method for remotely monitoring and managing applications across multiple domains
JP3661580B2 (ja) 2000-09-20 2005-06-15 日本電気株式会社 世代管理方式
US7127517B2 (en) * 2000-12-27 2006-10-24 International Business Machines Corporation Protocol adapter framework for integrating non-IIOP applications into an object server container
US7546576B2 (en) * 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
EP1274011B1 (en) * 2001-07-06 2017-05-03 Alcatel Lucent A method and system for routing and logging a request
US7337441B2 (en) * 2001-07-17 2008-02-26 Bea Systems, Inc. System and method for prepreparing a transaction process involving a chain of servers in a circular flow
US7080119B2 (en) * 2001-07-17 2006-07-18 Bea Systems, Inc. System and method for transaction processing with delegated commit feature
US7213049B2 (en) * 2001-07-17 2007-05-01 Bea Systems, Inc. System and method for transaction processing with transaction property feature
US6922695B2 (en) * 2001-09-06 2005-07-26 Initiate Systems, Inc. System and method for dynamically securing dynamic-multi-sourced persisted EJBS
US7003570B2 (en) * 2001-10-05 2006-02-21 Bea Systems, Inc. System for integrating java servlets with asynchronous messages
US7516440B2 (en) * 2001-10-18 2009-04-07 Bea Systems, Inc. System and method for providing a java interface to an application view component
US20030182361A1 (en) * 2002-03-22 2003-09-25 Sun Microsystems, Inc. Business-model agnostic service deployment management service
AU2003228512A1 (en) * 2002-04-10 2003-10-27 Instasolv, Inc. Method and system for managing computer systems
US20040039468A1 (en) * 2002-08-23 2004-02-26 Vladimir Zahorack Method, system and apparatus for an industrial framework based on integrated applications via adapters
AU2003299301A1 (en) * 2003-12-01 2005-06-24 France Telecom System for providing services in response to a communications session message
US7668904B2 (en) * 2005-07-28 2010-02-23 International Business Machines Corporation Session replication
US8239862B2 (en) * 2007-11-26 2012-08-07 Ricoh Company, Ltd. Apparatus, method, and computer program product for processing information
JP5123800B2 (ja) * 2008-09-16 2013-01-23 株式会社リコー 情報処理装置、情報処理方法及びプログラム
US8239526B2 (en) * 2008-11-14 2012-08-07 Oracle International Corporation System and method for performance data collection in a virtual environment
US8019839B2 (en) * 2009-05-11 2011-09-13 Accenture Global Services Limited Enhanced network adapter framework
US8179889B2 (en) * 2009-06-30 2012-05-15 Avaya Inc. SIP servlet applications co-hosting

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015178159A1 (ja) * 2014-05-19 2015-11-26 株式会社日立製作所 分散処理システム
JP2015219732A (ja) * 2014-05-19 2015-12-07 株式会社日立製作所 分散処理システム
US10216593B2 (en) 2014-05-19 2019-02-26 Hitachi, Ltd. Distributed processing system for use in application migration
CN111240896A (zh) * 2020-01-06 2020-06-05 深圳市随手科技有限公司 一种终端数据同步方法、装置、服务器及存储介质
CN111240896B (zh) * 2020-01-06 2024-04-02 深圳市卡数科技有限公司 一种终端数据同步方法、装置、服务器及存储介质

Also Published As

Publication number Publication date
EP2317436A2 (en) 2011-05-04
US20110107156A1 (en) 2011-05-05
EP2317436A3 (en) 2012-04-11

Similar Documents

Publication Publication Date Title
JP2011096045A (ja) 計算機、計算機システム、及び、アプリケーション実行方法
US5634010A (en) Managing and distributing data objects of different types between computers connected to a network
US7729363B2 (en) System and method for managing communication for component applications
KR100881985B1 (ko) 상황 인식 시스템을 위한 OSGi 기반 동적 서비스 관리방법
US7085851B2 (en) SNMP interface to existing resource management extension-enabled management agents
US20060168355A1 (en) System and method for provisioning component applications
JP4620784B2 (ja) 現存するitリソース構造を自動的に複製する方法及びシステム
TWI506553B (zh) 偵測與解析應用程式介面之方法與系統
CN116018788A (zh) 为动态发现的对等体或网络功能配置服务网格联网资源
JP2004533687A (ja) コンピュータ・ネットワークにおけるサービスの動的配備
WO2005069544A1 (en) Automatic update system and method for using a meta mib
JP2005149387A (ja) リアルタイムWeb共有システム
CN113973129B (zh) 一种支持多种注册中心微服务的网关
CN100505711C (zh) 管理组件应用程序的通信的系统和方法
CN113556359B (zh) 一种通讯协议转换方法、设备、系统及网关设备
US8326913B2 (en) Method and system for service contract discovery
CN105516390A (zh) 域名管理的方法和装置
JPWO2002078385A1 (ja) 機器の設定更新システム
JP2014209365A (ja) 装置へのコンテンツの分配を管理するシステムと方法とプログラムを提供する記憶媒体
JP2005228183A (ja) プログラム実行方法、および、プログラム実行のための計算機システム
US8972604B1 (en) Network address retention and assignment
AU2005208065A1 (en) Defining nodes in device management system
CN109495319B (zh) Cdn节点的故障信息确定方法、装置及设备
CN111338717A (zh) 接口调用方法、应用程序升级方法及服务器和客户端
Kristensen Sip servlet api version 1.0

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20120626