ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverアプリケーションの開発
11g リリース1(10.3.4)
B60990-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストヘ移動
製品
目次へ移動
目次

前
 
次
 

6 本番再デプロイメント用アプリケーションの開発

次の項では、本番再デプロイメント方式を使用してアプリケーションをプログラムおよび管理する方法について説明します。

本番再デプロイメントとは

本番再デプロイメントを使用すると、デプロイされたアプリケーションを停止せずに(アプリケーションのクライアントへの可用性を中断することなく)、本番環境でアプリケーションの新しいバージョンを再デプロイできます。本番再デプロイメントのしくみは、更新されたアプリケーションの新しいバージョンを、同じアプリケーションの古いバージョンと並行してデプロイすることです。WebLogic Serverは、新しいクライアント・リクエストのみが新しいバージョンに転送されるように、自動的にクライアント接続を管理します。再デプロイメント時にアプリケーションにすでに接続していたクライアントは、作業が完了するまで古いバージョンのアプリケーションを使用し続けます。

詳細は、「本番再デプロイメントを使用したアプリケーションのアップグレード」を参照してください。

サポートされているアプリケーションとサポートされていないアプリケーションの種類

本番再デプロイメントでサポートされるのはHTTPクライアントとRMIクライアントのみです。開発および設計段階において、サポートされないクライアントが、本番再デプロイメントを使用しているアプリケーションにアクセスしないようにしておく必要があります。WebLogic Serverはサポートされないクライアントがアプリケーションにアクセスしたことを検出せず、本番再デプロイメント時にはサポートされないクライアント接続を保護しません。

エンタープライズ・アプリケーションには、サポートされているJava EEモジュールであれば、どのタイプでも格納できます。エンタープライズ・アプリケーションには、アプリケーション・スコープのJMSモジュールやJDBCモジュールも格納できます。

エンタープライズ・アプリケーションにJCAリソース・アダプタ・モジュールが含まれる場合、モジュールは:

新しいバージョンのEARのリソース・アダプタがデプロイされる前に、旧バージョンのアプリケーションのリソース・アダプタがコールバックを受け取ります。その後で、新しいバージョンのアプリケーションがデプロイされ、旧バージョンのEAR全体が廃止されます。

リソース・アダプタの本番再デプロイメント要件の一覧については、『Oracle WebLogic Serverリソース・アダプタのプログラミング』の本番再デプロイメントに関する項を参照してください。

追加アプリケーション・サポート

本番再デプロイメントでは、グローバルなJMS送り先からの着信JMSメッセージによってアクセスされるエンタープライズ・アプリケーションおよび1つまたは複数のメッセージドリブンBeanをコンシューマとして使用するエンタープライズ・アプリケーションもサポートされます。この種類のアプリケーションの場合、WebLogic Serverは、廃止された旧バージョンのアプリケーションのメッセージドリブンBeanを保留してから、新しいバージョンのメッセージドリブンBeanをデプロイします。グローバルJMS送り先に対してJMS APIを使用するJMSコンシューマの場合、本番再デプロイメントはサポートされません。メッセージドリブンBeanが、保留中にパブリッシュされたメッセージなど、トピックからパブリッシュされたメッセージをすべて受信する必要がある場合は、恒久サブスクライバを使用します。

プログラミングの要件と規約

WebLogic Serverは、本番再デプロイメントを実行する際に、アプリケーションの2つのインスタンスを同時にデプロイします。アプリケーションの複数のインスタンスがWebLogic Serverドメインに共存できるようにするには、一定のプログラミング規約に従う必要があります。次の項では、本番再デプロイメントで必須のプログラミング規約について説明します。

アプリケーションが自己完結型であることが必要

インプレース再デプロイメント方式を使用するアプリケーションは、リソースの使用に際して自己完結型となるのが最善の方法です。つまり、バージョン管理されたアプリケーションの場合は通常、グローバル・リソースではなく、アプリケーション・スコープのJMSおよびJDBCリソースを可能な限り使用します。

アプリケーションがグローバル・リソースを使用する必要がある場合、アプリケーションが複数のインスタンスによる安全な同時アクセスをサポートするようにプログラミングする必要があります。これは、アプリケーションが外部(別にデプロイされた)アプリケーションまたは外部プロパティ・ファイルを使用する場合にも当てはまります。WebLogic Serverでは、バージョン管理されたアプリケーションでグローバル・リソースを使用できない仕様にはなっていないので、リソースへのアクセスが安全な方法で行われるようにする必要があります。

バージョン管理されたアプリケーション内からグローバルJNDIリソースをルックアップすると、警告メッセージが表示されます。このチェックを無効にするには、JNDIルックアップ時にJNDI環境プロパティweblogic.jndi.WLContext.ALLOW_GLOBAL_RESOURCE_LOOKUPtrueに設定します。

同様に、外部アプリケーションをルックアップしたときに警告が表示されないようにするには、JNDI環境プロパティweblogic.jndi.WLContext.ALLOW_EXTERNAL_APP_LOOKUPtrueに設定します。

バージョン管理されているアプリケーションが現在のバージョンのJNDIツリーにデフォルトでアクセスすること

WebLogic Serverは、JMSおよびJDBCアプリケーション・モジュールなどのアプリケーション・スコープのリソースを、アプリケーションで使用可能なローカルJNDIツリーにバインドします。バージョン管理されていないアプリケーションと同様に、バージョン管理されているアプリケーションは、このローカル・ツリーからアプリケーション・スコープのリソースを直接ルックアップできます。アプリケーション・スコープJMSモジュールには、JMS APIまたはメッセージドリブンBeanなどのサポートされているJMSインタフェースを介してアクセスできます。

グローバルJNDIツリーにバインドされているアプリケーション・モジュールには、同じアプリケーション・バージョン内からのみアクセスする必要があります。WebLogic Serverは、バージョン管理されているアプリケーションでデプロイされたグローバル・リソースに対してバージョン対応JNDIルックアップとバインドを実行します。デフォルトでは、グローバル・リソースに対する内部JNDIルックアップは、同じバージョンのアプリケーションに対するバインドを返します。

現在のバージョンのアプリケーションが見つからない場合は、JNDI環境プロパティweblogic.jndi.WLContext.RELAX_VERSION_LOOKUPを使用して、同じバージョンではなく、現在アクティブなバージョンのアプリケーションからバインドを返します。


注意::

ルックアップしている新旧バージョンのリソースが互換可能であることが明らかな場合にのみ、weblogic.jndi.WLContext.RELAX_VERSION_LOOKUPtrueに設定します。

セキュリティ・プロバイダに互換性があることが必要

アプリケーションで使用するセキュリティ・プロバイダは、WebLogic ServerアプリケーションのバージョニングSSPIをサポートする必要があります。デフォルトのWebLogic Serverセキュリティ・プロバイダ(許可、ロール・マッピング、および資格証明マッピング・プロバイダ)は、アプリケーション・バージョニングSSPIをサポートしています。

アプリケーションがバージョン識別子を指定することが必要

本番再デプロイメントを使用するには、アプリケーションの現在のデプロイされているバージョンと更新されたバージョンの双方が一意のバージョン識別子を指定する必要があります。「アプリケーションのバージョンの割当て」を参照してください。

アプリケーションが名前と識別子にアクセスできることが必要

バージョン管理されたアプリケーションは、各バージョンで共通しているアプリケーション名とアプリケーションのバージョンごとに変わるアプリケーション識別子の両方をプログラムで取得できます。デプロイされたバージョンに関係なく、アプリケーション名を参照するエラー・メッセージまたは基本表示には、アプリケーション名を使用します。アプリケーションのデプロイされたバージョンに対してアプリケーションが一意の識別子を提供する必要がある場合は、アプリケーションIDを使用します。名前と識別子を提供するMBean属性の詳細は、「バージョン情報へのアクセス」を参照してください。

クライアント・アプリケーションが可能な限り同じバージョンを使用することが必要

「本番再デプロイメントとは」の説明にあるとおり、WebLogic Serverは、進行中のクライアントの全作業が完了するまで、クライアント・アプリケーションのリクエストを同じバージョンのアプリケーションにルーティングします。ただし、アプリケーションのバージョンがタイムアウト期間によって廃止されるか、デプロイされていない場合、クライアントのリクエストは、アクティブなバージョンのアプリケーションにルーティングされます。つまり、指定したアプリケーション・バージョンに対するクライアントの関連付けは、best-effortに基づいて維持されます。

リクエストの処理時に別のアプリケーションに再帰的にアクセスするクライアント・アプリケーションの場合、この性質は問題となる場合があります。WebLogic Serverは、再帰的にアクセスされたアプリケーションの同じバージョンにリクエストをディスパッチしようとしますが、中間のアプリケーション・バージョンが手動でデプロイされていないこと、およびタイムアウト期間後であることを保証しません。厳密なバージョン要件を持つ関連アプリケーションのグループがある場合は、本番再デプロイメント時のバージョンの一貫性を維持するために、全アプリケーションをまとめてパッケージ化することをお薦めします。

アプリケーションのバージョンの割当て

アプリケーションのMANIFEST.MFのバージョン識別子を指定し、新しいアプリケーションがデプロイメント用にリリースされるたびにバージョンを自動的にインクリメントするように指定することをお勧めします。これにより、管理者またはデプロイヤがアプリケーションを再デプロイするたびに、本番再デプロイメントが実行されるようになります。

テスト目的で、デプロイヤが、デプロイメントおよび再デプロイメント時にバージョン識別子をアプリケーションに割り当てることもできます。『Oracle WebLogic Serverへのアプリケーションへのデプロイ』のデプロイメントおよび再デプロイメント中のバージョン識別子の割当てに関する項を参照してください。

アプリケーションのバージョンの規約

WebLogic Serverは、MANIFEST.MFファイルのWeblogic-Application-Versionプロパティの値からアプリケーション・バージョンを取得します。バージョン文字列には、215文字までの長さを指定できます。文字列は、表6-1で示す有効な文字で構成する必要があります。

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

有効なASCII文字 無効なバージョン構成

a-z

..

A-Z

.

0-9


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



たとえば、次のマニフェスト・ファイルの内容は、バージョン「v920.beta」のアプリケーションを示します。

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

アプリケーションのアップグレードによる本番再デプロイメントの使用

WebLogic Server 9.2へのデプロイメント用にアプリケーションをアップグレードする場合、AppDeploymentMBeanから取得されたName属性は、デプロイされたアプリケーション名およびアプリケーションのバージョン文字列で構成された一意のアプリケーション識別子を戻します。デプロイされたアプリケーション名が必要なアプリケーションは、Name属性ではなく、新しいApplicationName属性を使用する必要があります。一意の識別子が必要なアプリケーションは、Name属性とApplicationIdentifier属性のどちらでも使用できます(「バージョン情報へのアクセス」を参照)。

バージョン情報へのアクセス

アプリケーション・コードは、新しいMBean属性を使用して、表示やロギングなどに使用するバージョン情報を取得できます。次の表では、ApplicationMBeanで利用できる読取り専用属性を示します。

表6-2 ApplicationMBeanの読取り専用のバージョン属性

属性名 説明
ApplicationName

アプリケーションのデプロイメント名を表す文字列

VersionIdentifier

同じアプリケーションのすべてのバージョンの中から、現在のアプリケーションのバージョンを一意に識別する文字列

ApplicationIdentifier

デプロイされたすべてのアプリケーションおよびバージョンの中から、現在のアプリケーションのバージョンを一意に識別する文字列


ApplicationRuntimeMBeanでも、新しい読取り専用属性のバージョン情報を利用できます。次の表を参照してください。

表6-3 ApplicationRuntimeMBeanの読取り専用のバージョン属性

属性名 説明
ApplicationName

アプリケーションのデプロイメント名を表す文字列

ApplicationVersion

アプリケーションのバージョンを表す文字列

ActiveVersionState

アクティブなアプリケーション・バージョンの現在の状態を示す整数。アクティブなバージョンの有効な状態は次のとおりです。

  • ACTIVATED - アプリケーションの1つまたは複数のモジュールがアクティブで、新しいクライアント・リクエストで使用可能になっていることを示します。

  • PREPARED - WebLogic Serverが、アプリケーションの1つまたは複数のモジュールを準備しているものの、まだアクティブになっていないことを示します。

  • UNPREPARED - アプリケーションのどのモジュールも準備されておらず、アクティブになっていないことを示します。

詳細は、Oracle WebLogic Server APIリファレンスを参照してください。

管理者が本番再デプロイメント・プロセスを逆転させる場合もあるため、現在アクティブなバージョンが、最後にデプロイされたバージョンに対応しているとは限りません。詳細は、『Oracle WebLogic Serverへのアプリケーションのデプロイ』の本番再デプロイメント・プロセスのロールバックに関する項を参照してください。