次の項では、アクティブ・コールを失わずに、デプロイ済SIPサーブレットおよびコンバージドSIP/HTTPアプリケーションを同じアプリケーションの新しいバージョンにアップグレードする方法について説明します。
Oracle WebLogic Server SIP Containerでは、アプリケーションで処理中の既存のコールを失わずに、デプロイ済SIPアプリケーションを新しいバージョンにアップグレードすることができます。このような形でアプリケーションのアップグレードを行うには、新しいバージョンのアプリケーションを以前のバージョンと並行してデプロイします。Oracle WebLogic Server SIP Containerは、新しいリクエストが新しいバージョンに転送されるようにSIPサーブレットのマッピングを自動的に管理します。確立されている既存のダイアログへのメッセージは、それ以降もコールが完了するまで以前のバージョンのアプリケーションに転送されます。既存のダイアログがすべて完了し、以前のバージョンのアプリケーションが処理するコールが完了した後で、そのアプリケーションを安全にアンデプロイします。
Oracle WebLogic Server SIP Containerのアップグレード機能を利用すると、本番アプリケーションのアップグレード中にコーるが失われることがなくなります。また、アプリケーションのアップグレードの処理を元に戻す(ロールバックする)こともできます。たとえば、新しいバージョンのデプロイ済アプリケーションに問題があることが判明した場合は、新しいバージョンをそのままアンデプロイし、以前のバージョンをアクティブにすることができます。
注意: アプリケーションのアクティブなバージョンをアンデプロイすると、以前のアプリケーションのバージョンは管理モードのままになります。アプリケーションに新しいリクエストを転送するには、以前のバージョンを明示的にアクティブ化しなければなりません。 |
SIP管理チャネルでアップグレード機能を使用すると、最終テストへのアクセスを制限して新しいアプリケーション・バージョンをデプロイすることもできます。管理チャネルを使用して最終テストを行った後、アプリケーションを一般的なSIPトラフィックに開くことができます。
Oracle WebLogic Server SIP Containerアプリケーションのアップグレードは、Oracle WebLogic Server 10g リリース3アプリケーションのアップグレードと同一の機能を提供しますが、次の例外があります。
Oracle WebLogic Server SIP Containerでは、以前のバージョンのアプリケーションの「正常な」リタイアをサポートしていません。かわりに、-retiretimeout
オプションをweblogic.Deployer
に対して使用することによる、タイムアウト・ベースのアンデプロイメントのみをサポートします。
SIPサーブレットまたはコンバージド・アプリケーションで管理モードを使用する場合は、TLSトランスポートを使用するsips-admin
チャネルの構成が必要です。
Oracle WebLogic Server SIP Containerは、レプリケートされた環境、また、レプリケートされない環境では、異なる方法でアプリケーションのアップグレードを処理します。レプリケートされた環境では、サーバーはweblogic.xml
構成ファイルでsave-sessions-enabled
要素がtrueに設定された場合と同じように動作します。これにより、再デプロイメント処理間のセッションを保持します。
レプリケートされない環境では、セッションは再デプロイメント後直ちに破棄されます。
Oracle WebLogic Server SIP Containerのアプリケーション・アップグレード機能を使用する場合の要件と制限は次のとおりです。
以前のバージョンのアプリケーションと区別するために、更新したアプリケーションにバージョン情報を割り当てる必要があります。バージョン情報の割当てが必要なのは、新しいバージョンのデプロイされたアプリケーションのみです。現在デプロイされているアプリケーションにバージョンの指定がない場合、Oracle WebLogic Server SIP Containerはそのアプリケーションを自動的に「以前の」バージョンとして処理します。詳細は、8.4項「バージョン識別子の割当」を参照してください。
同時にデプロイできるバージョン違いの同じアプリケーションは2つまでです。
アプリケーション名の使用をハードコード化しているアプリケーション(たとえば、1つのコールを複数のSIPサーブレットで処理するように構成されたアプリケーション)の場合は、そのアプリケーション名を、基本アプリケーション名を取得するヘルパー・メソッドのコールで置き換える必要があります。WebLogic Serverには、基本アプリケーション名とバージョン識別子を取得するとともに、現在のバージョンのアプリケーションがアクティブかリタイア中かを確認するApplicationRuntimeMBean
メソッドが提供されています。詳細は、8.8項「アプリケーション名とバージョン識別子へのアクセス」を参照してください。
アプリケーションが(アプリケーション構成手法を使用して)構成されたアプリケーションに参加するときに、基本名しか指定されていない場合は、Oracle WebLogic Server SIP Containerは常にアプリケーションの最新バージョンを使用します。
管理モードでアプリケーションをデプロイする場合、TLSトランスポートを使用するsips-admin
チャネルの構成が必要です。
デプロイ済SIPアプリケーションを新しいバージョンにアップグレードするには、次の手順に従います。
「バージョン識別子の割当」-バージョン識別子を使って更新バージョンのアプリケーションをパッケージ化します。
「更新バージョンのアプリケーションのデプロイ」-更新バージョンのアプリケーションを以前のバージョンと並行してデプロイし、アップグレード処理を開始します。
「以前のバージョンのアプリケーションのアンデプロイ」-以前のバージョンのアプリケーションが確立されたコールへのすべてのSIPメッセージの処理を終了すると、そのバージョンを安全にアンデプロイすることができます。これにより、それ以降のすべてのコールの処理は、新しくデプロイされたアプリケーションに任されます。
次の項で、それぞれの手順について説明します。新しくデプロイされたアプリケーションで問題が検出した場合は、アップグレード処理をロールバックもできます。複数のSIPサーブレットで構成されるアプリケーションでは、アプリケーション名とバージョン識別子にアクセスするためにApplicationRuntimeMBean
を使用する必要がある場合もあります。
Oracle WebLogic Server SIP Containerでは、アプリケーション名に追加されるバージョン識別子(文字列値)を使用して、同じアプリケーションの複数のバージョンを区別します。バージョン文字列には最大で215文字まで指定できます。表8-1に示す有効な文字以外しか使用できません。
表8-1 有効な文字と無効な文字
有効なASCII文字 | 無効なバージョン構成コンストラクト |
---|---|
a-z |
.. |
A-Z |
. |
0-9 |
|
他の文字と組み合せたピリオド(「.」)、アンダースコア(「_」)、ハイフン(「-」) |
デプロイ可能なSIPサーブレットWARファイルの場合、アプリケーションのMANIFEST.MFファイルでバージョン識別子を定義するか、デプロイメント時にコマンドラインで指定する必要があります。
WARおよびEARデプロイメントでは、MANIFEST.MFファイルでバージョン識別子を指定する必要があります。例8-1に、バージョン識別子「v2」を指定したアプリケーションを表示します。
アップグレード処理を開始するには、管理コンソール、または、weblogic.Deployer
ユーティリティを使用して、更新したアプリケーション・アーカイブをデプロイします。一定の時間後に以前のバージョンのアプリケーションを自動的にアンデプロイするには、weblogic.Deployer
ユーティリティに-retiretimeout
オプションを使用します。例:
java weblogic.Deployer -name MyApp -version v2 -deploy -retiretimeout 7
Oracle WebLogic Server SIP Containerは、マニフェスト・ファイルでバージョン識別子を調べ、現在アプリケーションの他のバージョンがデプロイされているか確認します。2つのバージョンがデプロイされている場合、サーバーは最後にデプロイされたアプリケーションに自動的に新しいリクエストをルーティングし始めます。他のアプリケーションには新しい呼出しを転送せず、現在処理中の呼出しを完了できるようにします。最終的に、以前のバージョンのアプリケーションはSIPメッセージを処理しなくなるため、この処理は、以前のバージョンのアプリケーションの「リタイア」と呼ばれます。
Oracle WebLogic Server SIP Containerは、デプロイされている2つのアプリケーションの実際のバージョン文字列を比較して、どちらが新しいバージョンなのかを見分けるわけではありません。新しいコールは、常に最後にデプロイされたアプリケーションにルーティングされます。
Oracle WebLogic Server SIP Containerは、バージョン識別子が指定されていない(マニフェストにバージョン文字列がない)デプロイメントと、バージョン識別子が指定されたそれ以降のバージョンのデプロイメントとを区別することもできます。このため、8.4項「バージョン識別子の割当」で説明した方法でバージョン情報を指定し始める前にパッケージ化されたアプリケーションも簡単にアップグレードすることができます。
既存のアプリケーションの新しいバージョンをデプロイした後、元のデプロイメントは、現在処理中のコール(元のデプロイメントを使用して開始されたコール)へのメッセージのみを処理するようになります。処理中のコールが完了した後は、元のデプロイメントは新しいSIPメッセージを処理しません。ほとんどの本番環境では、アプリケーションをアンデプロイする前に、元のデプロイメントがメッセージを処理していないことを確認する必要があります。
デプロイ済アプリケーションがメッセージを処理しているかどうかを確認するには、アプリケーションのSipApplicationRuntimeMBean
インスタンスからアクティブ・セッション・カウントを取得します。例8-2に、デフォルトの単一サーバー・ドメインのfindme
サンプル・アプリケーションのアクティブ・セッション・カウントを表示するWLSTコマンドのサンプルを示します。
アクティブなセッション数の値に基づいて、アプリケーションを安全にアンデプロイするか(処理中の呼出しは失われない)、強制的にアンデプロイするか(アンデプロイメントの時点でアクティブなセッションが失われる)を判断します。
正しいデプロイメント名をアンデプロイするには、管理コンソール、または、weblogic.Deployer
ユーティリティのいずれかを使用します。
例8-2 セッション・カウントを調べるWLSTセッションのサンプル
connect() custom() cd ('examples:Location=myserver,Name=myserver_myserver_findme_findme,ServerRuntime=myserver,Type=SipApplicationRuntime') ls() -rw- ActiveAppSessionCount 0 -rw- ActiveSipSessionCount 0 -rw- AppSessionCount 0 -rw- CachingDisabled true -rw- MBeanInfo weblogic.management.tools.In fo@5ae636 -rw- Name myserver_myserver_findme_fin dme -rw- ObjectName examples:Location=myserver,N ame=myserver_myserver_findme_findme,ServerRuntime=myserver,Type=SipApplicationRu ntime -rw- Parent examples:Location=myserver,N ame=myserver,Type=ServerRuntime -rw- Registered false -rw- SipSessionCount 0 -rw- Type SipApplicationRuntime -rwx preDeregister void :
アプリケーションの新しいバージョンをデプロイする場合や問題が見つかった場合は、次の手順に従ってアップグレード処理をロールバックすることもできます。
アクティブなバージョンのアプリケーションをアンデプロイします。
以前のバージョンのアプリケーションをアクティブ化します。例:
java weblogic.Deployer -name MyApp -appversion v1 -start
注意: アプリケーションのアクティブなバージョンをアンデプロイすると、以前のアプリケーションのバージョンは管理モードのままになります。アプリケーションに新しいリクエストを転送するために以前のバージョンを明示的にアクティブ化しなければなりません。 |
かわりに、-start
オプションを使用すると、以前のバージョンのアプリケーションが起動して新しいリクエストを処理し、新しいバージョンがリタイアします。
Oracle WebLogic Server SIP Containerの製品アップグレード機能を利用する予定がある場合は、複数のSIPサーブレットで構成されるアプリケーションでアプリケーション名をハードコード化しないでください。アプリケーション名をハードコード化するかわりに、ApplicationRuntimeMBean
のいくつかのヘルパー・メソッドを使用することにより、アプリケーションからデプロイメント名、またはバージョン識別子に動的にアクセスできます。
オプションで、-adminmode
オプションとweblogic.Deployer
を使用して、管理モードでアプリケーションの新しいバージョンをデプロイされます。管理モードでは、TLSトランスポートを持つsips-admin
という構成されたネットワーク・チャネル名を介してのみSIPトラフィックを受け付けます。sips-admin
チャネルが構成されていない場合、または、別のチャネルを使用してリクエストを受けた場合は、サーバーは503メッセージを返してリクエストを拒否します。
管理モードから一般に利用可能なモードにアプリケーションを遷移するには、weblogic.Deployer
で-start
オプションを使用します。
注意: お使いのアプリケーションでTLSを使用できない場合は、サーブレット・ロール・マッピング・ルールを変更して1ユーザーしかアプリケーションの新しいバージョンを使用できないように設定することもできます。これにより、新しいバージョンへのアクセスを制限しながら、以前のバージョンと並行して新しいバージョンをデプロイすることができます。 |