ヘッダーをスキップ
Oracle® WebLogic Server SIP Container管理者ガイド
11g リリース1(11.1.1)
B61429-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 デプロイ済SIPアプリケーションのアップグレード

次の項では、アクティブ・コールを失わずに、デプロイ済SIPサーブレットおよびコンバージドSIP/HTTPアプリケーションを同じアプリケーションの新しいバージョンにアップグレードする方法について説明します。

8.1 SIPアプリケーションのアップグレードの概要

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アプリケーションのアップグレードと同一の機能を提供しますが、次の例外があります。

8.2 デプロイ済アプリケーションをアップグレードする場合の要件と制限

Oracle WebLogic Server SIP Containerのアプリケーション・アップグレード機能を使用する場合の要件と制限は次のとおりです。

8.3 デプロイ済SIPアプリケーションをアップグレードする手順

デプロイ済SIPアプリケーションを新しいバージョンにアップグレードするには、次の手順に従います。

  1. 「バージョン識別子の割当」-バージョン識別子を使って更新バージョンのアプリケーションをパッケージ化します。

  2. 「更新バージョンのアプリケーションのデプロイ」-更新バージョンのアプリケーションを以前のバージョンと並行してデプロイし、アップグレード処理を開始します。

  3. 「以前のバージョンのアプリケーションのアンデプロイ」-以前のバージョンのアプリケーションが確立されたコールへのすべてのSIPメッセージの処理を終了すると、そのバージョンを安全にアンデプロイすることができます。これにより、それ以降のすべてのコールの処理は、新しくデプロイされたアプリケーションに任されます。

次の項で、それぞれの手順について説明します。新しくデプロイされたアプリケーションで問題が検出した場合は、アップグレード処理をロールバックもできます。複数のSIPサーブレットで構成されるアプリケーションでは、アプリケーション名とバージョン識別子にアクセスするためにApplicationRuntimeMBeanを使用する必要がある場合もあります。

8.4 バージョン識別子の割当

Oracle WebLogic Server SIP Containerでは、アプリケーション名に追加されるバージョン識別子(文字列値)を使用して、同じアプリケーションの複数のバージョンを区別します。バージョン文字列には最大で215文字まで指定できます。表8-1に示す有効な文字以外しか使用できません。

表8-1 有効な文字と無効な文字

有効なASCII文字 無効なバージョン構成コンストラクト

a-z

..

A-Z

.

0-9


他の文字と組み合せたピリオド(「.」)、アンダースコア(「_」)、ハイフン(「-」)



デプロイ可能なSIPサーブレットWARファイルの場合、アプリケーションのMANIFEST.MFファイルでバージョン識別子を定義するか、デプロイメント時にコマンドラインで指定する必要があります。

8.4.1 マニフェストでのバージョンの定義

WARおよびEARデプロイメントでは、MANIFEST.MFファイルでバージョン識別子を指定する必要があります。例8-1に、バージョン識別子「v2」を指定したアプリケーションを表示します。

例8-1 マニフェストのバージョン識別子

Manifest-Version: 1.0
Created-By: 1.4.1_05-b01 (Sun Microsystems Inc.)
Weblogic-Application-Version: v2

バージョン識別子を割り当てずにアプリケーションをデプロイし、後からバージョン識別子を割り当ててデプロイした場合、Oracle WebLogic Server SIP Containerはそれらのデプロイメントを同じアプリケーションの異なるバージョンとして認識します。

8.5 更新バージョンのアプリケーションのデプロイ

アップグレード処理を開始するには、管理コンソール、または、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項「バージョン識別子の割当」で説明した方法でバージョン情報を指定し始める前にパッケージ化されたアプリケーションも簡単にアップグレードすることができます。

8.6 以前のバージョンのアプリケーションのアンデプロイ

既存のアプリケーションの新しいバージョンをデプロイした後、元のデプロイメントは、現在処理中のコール(元のデプロイメントを使用して開始されたコール)へのメッセージのみを処理するようになります。処理中のコールが完了した後は、元のデプロイメントは新しい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 :

8.7 アップグレード処理のロールバック

アプリケーションの新しいバージョンをデプロイする場合や問題が見つかった場合は、次の手順に従ってアップグレード処理をロールバックすることもできます。

  1. アクティブなバージョンのアプリケーションをアンデプロイします。

  2. 以前のバージョンのアプリケーションをアクティブ化します。例:

    java weblogic.Deployer -name MyApp -appversion v1 -start
    

    注意:

    アプリケーションのアクティブなバージョンをアンデプロイすると、以前のアプリケーションのバージョンは管理モードのままになります。アプリケーションに新しいリクエストを転送するために以前のバージョンを明示的にアクティブ化しなければなりません。

かわりに、-startオプションを使用すると、以前のバージョンのアプリケーションが起動して新しいリクエストを処理し、新しいバージョンがリタイアします。

8.8 アプリケーション名とバージョン識別子へのアクセス

Oracle WebLogic Server SIP Containerの製品アップグレード機能を利用する予定がある場合は、複数のSIPサーブレットで構成されるアプリケーションでアプリケーション名をハードコード化しないでください。アプリケーション名をハードコード化するかわりに、ApplicationRuntimeMBeanのいくつかのヘルパー・メソッドを使用することにより、アプリケーションからデプロイメント名、またはバージョン識別子に動的にアクセスできます。

8.9 管理モードの使用

オプションで、-adminmodeオプションとweblogic.Deployerを使用して、管理モードでアプリケーションの新しいバージョンをデプロイされます。管理モードでは、TLSトランスポートを持つsips-adminという構成されたネットワーク・チャネル名を介してのみSIPトラフィックを受け付けます。sips-adminチャネルが構成されていない場合、または、別のチャネルを使用してリクエストを受けた場合は、サーバーは503メッセージを返してリクエストを拒否します。

管理モードから一般に利用可能なモードにアプリケーションを遷移するには、weblogic.Deployer-startオプションを使用します。


注意:

お使いのアプリケーションでTLSを使用できない場合は、サーブレット・ロール・マッピング・ルールを変更して1ユーザーしかアプリケーションの新しいバージョンを使用できないように設定することもできます。これにより、新しいバージョンへのアクセスを制限しながら、以前のバージョンと並行して新しいバージョンをデプロイすることができます。