ナビゲーションをスキップ

WebLogic Server アプリケーションの開発

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

プロダクション再デプロイメント用アプリケーションの開発

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

 


プロダクション再デプロイメントとは

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

詳細については、「プロダクション再デプロイメントを使用したアプリケーションの更新」を参照してください。

 


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

プロダクション再デプロイメントは、主に Web アプリケーションのエントリ ポイントを持つアプリケーション (HTTP クライアント) 用にサポートされています。WebLogic Server 9.0 は、HTTP クライアント エントリ ポイントを管理して、アプリケーションの新しいバージョンへの接続と古いバージョンへの接続とを自動的に分離することができます。つまり、スタンドアロン Web アプリケーション モジュールでも、埋め込み Web アプリケーション モジュールを介してアクセスするエンタープライズ アプリケーションでも、プロダクション再デプロイメントの対象となります。

アプレットなど Java クライアントを介してアクセスするアプリケーションに対しては、プロダクション再デプロイメントはサポートされません。Java クライアントが、バージョン管理されているアプリケーションに対してグローバル バインディングの JNDI ルックアップを実行する場合は、警告が表示されます。これらのルックアップは、アプリケーション廃止時に WebLogic Server によるクライアント エントリ ポイントの自動管理に干渉し、アプリケーションのバージョンが前倒しで廃止する原因にもなるので、避ける必要があります。クライアントでこのチェックを無効にするには、JNDI ルックアップ時に weblogic.jndi.WLContext.ALLOW_EXTERNAL_APP_LOOKUPtrue に設定します。

エンタープライズ アプリケーションには、Web サービス モジュールを除き、サポートされている J2EE モジュールのいずれかのタイプを格納できます。Web サービス モジュールは、WAR ファイルにパッケージ化した場合でも、プロダクション再デプロイメントの対象にはなりません。プロダクション再デプロイメント操作が要求されると、WebLogic Server デプロイメント API は、Web サービス モジュールがあるかどうかをチェックし、あった場合は例外を送出します。エンタープライズ アプリケーションも、アプリケーション スコープの JMS および JDBC モジュールを含むことができます。

エンタープライズ アプリケーションに JCA リソース アダプタ モジュールが含まれる場合、モジュールは以下の条件を満たす必要があります。

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

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

プロダクション再デプロイメントでは、グローバルな 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 のバージョン識別子を指定し、新しいアプリケーションがデプロイメント用にリリースされるたびにバージョンを自動的にインクリメントするように指定することをお勧めします。これにより、管理者またはデプロイ担当者がアプリケーションを再デプロイするたびに、プロダクション再デプロイメントが実行されるようになります。

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

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

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

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

有効な ASCII 文字

無効なバージョン作成

a-z

..

A-Z

.

0-9


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



 

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

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

 


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

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

 


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

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

表 7-2 ApplicationMBean の読み込み専用のバージョン属性

属性名

解説

ApplicationName

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

VersionIdentifier

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

ApplicationIdentifier

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


 

ApplicationRuntimeMBean でも、新しい読み込み専用属性を利用できます。「表 7-3 ApplicationRuntimeMBean の読み込み専用のバージョン属性」を参照してください。

表 7-3 ApplicationRuntimeMBean の読み込み専用のバージョン属性

属性名

解説

ApplicationName

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

ApplicationVersion

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

ActiveVersionState

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

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

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

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

詳細については、『BEA WebLogic Server 9.0 API Reference』を参照。

管理者によって、プロダクション再デプロイメント プロセスが逆順になる場合もあるので、現在アクティブなバージョンが、最後にデプロイされたバージョンに対応しているとは限らない。『WebLogic Server 9.0 アプリケーションのデプロイメント』の「プロダクション再デプロイメント プロセスのロールバック」を参照。


 

 

フッタのナビゲーションのスキップ  ページの先頭 前 次