以下の節では、アクティブな呼を失わずに、デプロイ済み SIP Servlets およびコンバージド SIP/HTTP アプリケーションを新しいバージョンにアップグレードする方法について説明します。
Oracle WebLogic Communication Services では、アプリケーションで処理中の既存の呼を失わずに、デプロイ済み SIP アプリケーションを新しいバージョンにアップグレードすることができます。このような形でアプリケーションのアップグレードを行うには、新しいバージョンのアプリケーションを以前のバージョンと並行してデプロイします。Oracle WebLogic Communication Services は、新しいリクエストが新しいバージョンに転送されるように SIP サーブレットのマッピングを自動的に管理します。確立されている既存のダイアログへのメッセージは、それ以降も呼が完了するまで以前のバージョンのアプリケーションに転送されます。既存のダイアログがすべて完了し、以前のバージョンのアプリケーションが処理する呼がなくなった後で、そのアプリケーションを安全にアンデプロイすることができます。
Oracle WebLogic Communication Services のアップグレード機能を利用すると、プロダクション アプリケーションのアップグレード中に呼が失われることがなくなります。また、アプリケーションのアップグレード処理を元に戻す (またはロールバックする) こともできます。たとえば、新しいバージョンのデプロイ済みアプリケーションに問題があると判断した場合は、新しいバージョンをアンデプロイして以前のバージョンをアクティブ化することができます。
注意 : アプリケーションのアクティブなバージョンをアンデプロイすると、以前のアプリケーションのバージョンは管理モードのままになります。アプリケーションに新しいリクエストを転送するには、以前のバージョンを明示的にアクティブ化しなければなりません。 |
SIP 管理チャネルでアップグレード機能を使用すると、最終テストへのアクセスを制限して新しいアプリケーション バージョンをデプロイすることもできます。管理チャネルを使用して最終テストを行った後、アプリケーションを一般的な SIP トラフィックに開くことができます。
Oracle WebLogic Communication Services アプリケーションのアップグレードは、Oracle WebLogic Server 10g リリース 3 アプリケーションのアップグレードと同一の機能を提供しますが、以下の例外があります。
Oracle WebLogic Communication Services では、以前のバージョンのアプリケーションの「滞りのない」リタイアをサポートしていません。代わりに、-retiretimeout
オプションを weblogic.Deployer
に対して使用することによる、タイムアウト ベースのアンデプロイメントのみをサポートします。
SIP サーブレットまたはコンバージド アプリケーションで管理モードを使用する場合は、TLS 転送を使用する sips-admin
チャネルのコンフィグレーションが必要です。
Oracle WebLogic Communication Services は、レプリケートされた環境とレプリケートされない環境では、異なる方法でアプリケーションのアップグレードを処理します。レプリケートされた環境で、サーバは weblogic.xml
コンフィグレーション ファイルで save-sessions-enabled
要素が true に設定された場合と同じように動作します。これにより、再デプロイメント処理間のセッションを維持します。
レプリケートされない環境では、セッションは再デプロイメント後直ちに破棄されます。
Oracle WebLogic Communication Services のアプリケーション アップグレード機能を使用する場合の要件と制約は以下のとおりです。
以前のバージョンのアプリケーションと区別するために、新しいアプリケーションにバージョン情報を割り当てる必要があります。バージョン情報の割り当てが必要なのは、新しいバージョンのアプリケーションだけです。現在デプロイされているアプリケーションにバージョンの指定がない場合、Oracle WebLogic Communication Services はそのアプリケーションを自動的に「以前の」バージョンとして扱います。節 17.4「バージョン識別子の割り当て」を参照してください。
同時にデプロイできるバージョン違いの同じアプリケーションは 2 つまでです。
アプリケーション名の使用をハードコード化しているアプリケーション (たとえば、1 つの呼を複数の SIP サーブレットで処理するように構成されたアプリケーション) の場合は、そのアプリケーション名を、基本アプリケーション名を取得するヘルパー メソッドの呼で置き換える必要があります。WebLogic Server には、基本アプリケーション名とバージョン識別子を取得すると共に、現在のバージョンのアプリケーションがアクティブか廃止中かを確認する ApplicationRuntimeMBean
メソッドが用意されています。節 17.8「アプリケーション名とバージョン識別子へのアクセス」を参照してください。
アプリケーションが (アプリケーション構成手法を使って) 構成されたアプリケーションに参加するときに、基本名しか指定されていない場合は、Oracle WebLogic Communication Services は常にアプリケーションの最新バージョンを使用します。
管理モードてアプリケーションをデプロイする場合、TLS 転送を使用する sips-admin
チャネルのコンフィグレーションが必要です。
デプロイ済み SIP アプリケーションを新しいバージョンにアップグレードするには、次の手順に従います。
バージョン識別子の割り当て - バージョン識別子を使って新しいバージョンのアプリケーションをパッケージ化します。
新しいバージョンのアプリケーションのデプロイ - 新しいバージョンのアプリケーションを以前のバージョンと並行してデプロイし、アップグレード処理を開始します。
以前のバージョンのアプリケーションのアンデプロイ - 確立された呼への SIP メッセージを以前のバージョンのアプリケーションがすべて処理し終わると、そのバージョンを安全にアンデプロイすることができます。それ以降のすべての呼の処理は、新しくデプロイされたアプリケーションに任されます。
以下の節で、それぞれの手順について説明します。新しくデプロイされたアプリケーションで問題が見つかった場合は、アップグレード処理をロールバックすることもできます。複数の SIP サーブレットで構成されるアプリケーションでは、アプリケーション名とバージョン識別子へアクセスするために ApplicationRuntimeMBean
を使用する場合もあります。
Oracle WebLogic Communication Services では、アプリケーション名の後ろに追加されるバージョン識別子 (文字列値) を使用して、同じアプリケーションの複数のバージョンを区別します。バージョン文字列には最大で 215 文字まで指定できます。表 17-1 に示す有効な文字以外は使用できません。
表 17-1 有効な文字と無効な文字
有効な ASCII 文字 | 無効なバージョン文字 |
---|---|
a-z |
.. |
A-Z |
. |
0-9 |
|
他の文字と組み合わせたピリオド (「.」)、アンダースコア (「_」)、ハイフン (「-」) |
デプロイ可能な SIP サーブレット WAR ファイルの場合、アプリケーションの MANIFEST.MF ファイルでバージョン識別子を定義するか、デプロイメント時にコマンド ラインで指定する必要があります。
WAR および EAR のデプロイメントでは、どちらも MANIFEST.MF ファイルでバージョン識別子を指定する必要があります。例 17-1 に、バージョン識別子「v2」を指定したアプリケーションを示します。
アップグレード処理を開始するには、Administration Console または weblogic.Deployer
ユーティリティを使用して、新しいアプリケーション アーカイブをデプロイします。一定の時間後に以前のバージョンのアプリケーションを自動的にアンデプロイするには、weblogic.Deployer
ユーティリティに -retiretimeout
オプションを使用します。次に例を示します。
java weblogic.Deployer -name MyApp -version v2 -deploy -retiretimeout 7
Oracle WebLogic Communication Services は、マニフェスト ファイルでバージョン識別子を調べ、現在アプリケーションの他のバージョンがデプロイされているか確認します。2 つのバージョンがデプロイされている場合、サーバは最後にデプロイされたアプリケーションに自動的に新しいリクエストを転送し始めます。もう一方のアプリケーションには新しい呼を転送せず、現在処理中の呼を完了できるようにします。この処理を、以前のバージョンのアプリケーションの「廃止」と呼びます。最終的に、以前のバージョンのアプリケーションは SIP メッセージを処理しなくなるからです。
Oracle WebLogic Communication Services は、デプロイされている 2 つのアプリケーションの実際のバージョン文字列を比較して、新しい方のバージョンを見分けるわけではありません。新しい呼は、常に最後にデプロイされたアプリケーションに転送されます。
Oracle WebLogic Communication Services は、バージョン識別子が指定されていない (マニフェストにバージョン文字列がない) デプロイメントと、バージョン識別子が指定されたそれ以降のバージョンのデプロイメントとを区別することもできます。このため、節 17.4「バージョン識別子の割り当て」で説明した方法でバージョン番号を指定し始める前にパッケージ化されたアプリケーションも簡単にアップグレードすることができます。
既存のアプリケーションの新しいバージョンをデプロイした後、元のデプロイメントは、現在処理中の呼 (元のデプロイメントを使って開始された呼) へのメッセージだけを処理するようになります。処理中の呼が完了した後は、元のデプロイメントは新しい SIP メッセージを処理しません。ほとんどのプロダクション環境では、アプリケーションをアンデプロイする前に、元のデプロイメントがメッセージを処理していないことを確認する必要があります。
デプロイ済みアプリケーションがメッセージを処理しているかどうかを確認するには、アプリケーションの SipApplicationRuntimeMBean
インスタンスからアクティブなセッション数を取得します。例 17-2 に、デフォルトの単一サーバ ドメインの findme
サンプル アプリケーションのアクティブなセッション数を表示する WLST コマンドの例を示します。
アクティブなセッション数の値に基づいて、アプリケーションを安全にアンデプロイするか (処理中の呼は失われない)、強制的にアンデプロイするか (アンデプロイメントの時点でアクティブなセッションが失われる) を判断します。
適切なデプロイメントをアンデプロイするには、Administration Console または weblogic.Deployer
ユーティリティを使用します。
例 17-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 Communication Services のプロダクション アップグレード機能を利用する予定がある場合は、複数の SIP サーブレットで構成されるアプリケーションでアプリケーション名をハードコード化しないでください。アプリケーション名をハードコード化する代わりに、ApplicationRuntimeMBean
のいくつかのヘルパー メソッドを使用することにより、アプリケーションからデプロイメント名、またはバージョン識別子に動的にアクセスすることができます。
-adminmode
オプションと weblogic.Deployer
を必要に応じて使用して、管理モードでアプリケーションの新しいバージョンをデプロイすることができます。管理モードでは、TLS 転送を持つ sips-admin
というコンフィグレーションされたネットワーク チャネル名を通してのみ SIP トラフィックを受け付けます。sips-admin
チャネルがコンフィグレーションされていない場合、または別のチャネルを使用してリクエストを受けた場合は、サーバは 503 メッセージを返してリクエストを拒否します。
管理モードから一般に利用可能なモードにアプリケーションを遷移するには、weblogic.Deployer
の -start
オプションを使用します。
注意 : お使いのアプリケーションで TLS を使用できない場合は、サーブレット ロール マッピング ルールを変更して 1 ユーザしかアプリケーションの新しいバージョンを使用できないように設定することもできます。これにより、新しいバージョンへのアクセスを制限しながら、以前のバージョンと並行して新しいバージョンをデプロイすることができます。 |