PK »~@oa«,mimetypeapplication/epub+zipPK»~@iTunesMetadata.plistŽqû artistName Oracle Corporation book-info cover-image-hash 889840440 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 550800889 publisher-unique-id b65896 unique-id 879533247 genre Oracle Documentation itemName Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1) releaseDate 2011-11-21T13:00:33Z year 2011 PKû[D‡“ŽPK»~@META-INF/container.xmlâÿ PKYuìçâPK»~@ OEBPS/toc.htmÜ_#  目次

目次

タイトルおよび著作権情報

はじめに

1 概要とロードマップ

2 トランザクションについて

3 トランザクションの構成

4 トランザクションの管理

5 トランザクション・サービス

6 Java Transaction APIとOracle WebLogicの拡張機能

7 ロギング・ラスト・リソース・トランザクションの最適化

8 EJBアプリケーションのトランザクション

9 RMIアプリケーションのトランザクション

10 WebLogic ServerでのJDBC XAドライバの使い方

11 WebLogic Serverトランザクション・マネージャでのXAResourceの調整

12 サード・パーティ・トランザクション・マネージャで管理されるトランザクションへの参加

13 トランザクションのトラブルシューティング

PK/…ÌŽá_Ü_PK»~@OEBPS/img_text/rmitrx.htmG¸ü Description of the illustration rmitrx.gif

This figure shows how transactions work in a WebLogic Server RMI application. Both client and server applications use JNDI to begin and commit the transaction. In the case of an exception, the transaction can also be rolled back. When the transaction is committed, WebLogic Server calls the transaction manager to complete the transaction. The transaction manager is responsible for coordinating with the resource managers to update any databases.

PKjn?”LGPK»~@#OEBPS/img_text/client_interp_tm.htm _ú Description of the illustration client_interp_tm.gif

This figure shows the flow of interactions between a foreign transaction manager, WebLogic Server client-side JTA objects, and the WebLogic Server transaction manager to import a transaction to a client. The flow of execution takes place in the following sequence:

  1. The third-party client gateway invokes a set of WebLogic Server client-side JTA objects, which are hosted on the client, to obtain the client interposed transaction manager that is hosted on WebLogic Server.

  2. A deserialized object reference to the client interposed transaction manager is returned to the third-party client gateway.

  3. The client gateway uses the deserialized object to obtain the XAResource object associated with the interposed transaction manager.

  4. The client interposed transaction manager returns an XAResource object to the client.

  5. The client uses the XAResource object to start, prepare, commit, and end the transaction.

PKTáG{¥ PK»~@OEBPS/img_text/trxejbap.htm‘nü Description of the illustration trxejbap.gif

This figure shows how transactions work in a WebLogic Server EJB application. The transaction may be managed by either the EJB container, or the EJB itself. In container-managed transactions, transaction attributes in the EJB deployment descriptor determine how the WebLogic Server EJB container handles transactions with each method invocation. By contrast, in bean-managed transactions, the EJB makes explicit method invocations on the UserTransaction object to begin, commit, and roll back transactions.

PK¬¤%*–‘PK»~@ OEBPS/img_text/imp_tx_client.htm€û Description of the illustration imp_tx_client.gif

This figure shows the interaction between two transaction managers and the client-side gateway. One transaction manager is hosted on a third-party system, and another on WebLogic Server. The transaction manager hosted on WebLogic Server is called the client interposed transaction manager, and it is accessed directly from the third-party application, typically from a gateway in the third-party application.

The transaction manager in the third-party system then sends the prepare and commit messages to the gateway, which propagates the message to the WebLogic Server transaction manger. The WebLogic Server transaction manager then acts as a subordinate transaction manager and coordinates the transaction participants within WebLogic Server.

PK6…|ý„PK»~@ OEBPS/img_text/imp_tx_server.htmˆwú Description of the illustration imp_tx_server.gif

This figure shows the interaction between two transaction managers and the server-side gateway. The server interposed transaction manager in WebLogic Server drives the two-phase commit process for transactions that are coordinated by a third-party transaction manager. The following sequence occurs:

  1. The server interposed transaction manager is accessed by creating a server-side gateway on WebLogic Server.

  2. The server-side gateway is registered with the transaction manager in the third-party system, and the gateway also obtains a reference to the server imposed transaction manager in WebLogic Server.

  3. The transaction manager in the third-party system then sends the prepare and commit messages to the server-side gateway.

  4. The server-side gateway propagates the messages to the W ebLogic Server transaction manger.

  5. The WebLogic Server transaction manager coordinates the transaction participants within WebLogic Server.

PKk™Ü†ˆPK»~@OEBPS/img_text/exp_tx.htmô ý Description of the illustration exp_tx.gif

This figure shows the process for third-party systems to participate in transactions coordinated by the WebLogic Server transaction manager. At server startup, the third party system must register its XAResource object with the WebLogic Server transaction manager. Then during transaction processing, the XAResource object is enlisted with each transaction object.

PKíºùôPK»~@OEBPS/trxejb.htm€ÿ EJBアプリケーションのトランザクション

8 EJBアプリケーションのトランザクション

この章では、Oracle WebLogic Serverで動作するEnterprise JavaBeans (EJB)アプリケーションでトランザクションを実装する方法について説明します。

始める前に

開始する前に、第2章「トランザクションについて」(特に次のトピック)を読んでください。

ここでは、Enterprise JavaBeansでのトランザクションのOracle WebLogic Server実装について説明します。ここで説明する情報は、「Enterprise JavaBeans仕様2.1」を補足するものです。


注意:

この章を読み進める前に、EJB仕様2.1のドキュメントの内容、特に第16章「Support for Transactions」に記載されている概念やデータをよく理解しておく必要があります。

WebLogic ServerアプリケーションでのEnterprise JavaBeansの実装については、Oracle Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansバージョン2.10のプログラミングを参照してください。

ガイドライン

以下のガイドラインは、WebLogic Server向けのEJBアプリケーションでトランザクションを実装するときに適用されます。

WebLogic Serverトランザクション・サービスのガイドラインについては、「機能と制限」を参照してください。

トランザクション属性

この節の内容は以下のとおりです。

EJBのトランザクション属性について

トランザクション属性では、トランザクションがEJBアプリケーションでどのように管理されるのかが指定されます。各EJBについて、トランザクション属性により、トランザクションの境界がWebLogic Server EJBコンテナによって設定されるのか(コンテナ管理のトランザクション)、またはEJB自体によって設定されるのか(Bean管理のトランザクション)が指定されます。EJBがコンテナ管理とBean管理のどちらであるのかは、デプロイメント記述子のtransaction-type要素の設定で決まります。transaction-type要素の詳細は、EJB仕様2.1の第16章「Support for Transactions」と第21章「Deployment Descriptor」を参照してください。

概して、Bean管理のトランザクションよりもコンテナ管理のトランザクションの方がよく使用されます。なぜなら、その方がアプリケーションのコードがシンプルになるからです。たとえば、コンテナ管理のトランザクションでは、トランザクションを明示的に開始する必要がありません。

WebLogic Serverでは、EJB仕様2.1のセクション16.4で定義されているメソッド・レベルのトランザクション属性が完全にサポートされています。

コンテナ管理のトランザクションのトランザクション属性

コンテナ管理のトランザクションの場合、トランザクション属性はデプロイメント記述子のcontainer-transaction要素で指定します。コンテナ管理のトランザクションには、すべてのエンティティBeanと、transaction-typeがContainerに設定されているステートフルまたはステートレスのセッションBeanが含まれます。これらの要素の詳細は、Oracle Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansバージョン2.1のプログラミングを参照してください。

EJBとそのビジネス・メソッドに対して指定できるトランザクション属性は以下のとおりです。

  • NotSupported

  • Supports

  • Required

  • RequiresNew

  • Mandatory

  • Never

trans-attribute設定でWebLogic Server EJBコンテナがどのように機能するのかについては、EJB仕様2.1のセクション17.6.2 (http://java.sun.com/products/ejb/docs.html)を参照してください。

デプロイメント記述子でタイムアウト値が定義されていない場合は、WebLogic Server EJBコンテナによって自動的にトランザクションのタイムアウトが設定されます。コンテナではTimeoutSeconds構成パラメータの値が使用されます。デフォルトのtimeout値は30秒です。

コンテナ管理のトランザクションを使用するEJBの場合、EJBはjavax.transaction.UserTransactionインタフェースにアクセスすることができず、また、開始と終了のトランザクション・コンテキストが一致していなければなりません。さらに、コンテナ管理のトランザクションを使用するEJBでは、javax.ejb.EJBContextインタフェースのsetRollbackOnlyメソッドとgetRollbackOnlyメソッドのサポートが制限されています(EJB仕様2.1のセクション16.4.4.2と16.4.4.3で規定されている規則によって呼出しが制限されます)。

Bean管理のトランザクションのトランザクション属性

Bean管理のトランザクションの場合は、Beanがjavax.transaction.UserTransactionインタフェースのメソッドを使用してトランザクションの境界設定を指定します。Bean管理のトランザクションには、transaction-typeがBeanに設定されているステートフルまたはステートレスのセッションBeanが含まれます。エンティティBeanでは、Bean管理のトランザクションは使用できません。

ステートレス・セッションBeanの場合は、開始と終了のトランザクション・コンテキストが一致していなければなりません。ステートフル・セッションBeanの場合は、開始と終了のトランザクション・コンテキストが必ずしも一致している必要はありません。一致していない場合は、WebLogic Server EJBコンテナによってBeanと未終了のトランザクションとの関連付けが維持されます。

Bean管理のトランザクションを使用するセッションBeanでは、javax.ejb.EJBContextインタフェースのsetRollbackOnlyメソッドとgetRollbackOnlyメソッドは使用できません。

トランザクションへの参加

EJB仕様2.1で使用される「トランザクションに参加する」という表現は、Beanが以下のいずれかの条件を満たしていると解釈します。

トランザクション・セマンティクス

この節の内容は以下のとおりです。

EJB仕様2.1では、EJBの種類(エンティティBean、ステートレス・セッションBean、またはステートフル・セッションBean)とトランザクションの種類(コンテナ管理またはBean管理)に基づいてトランザクション処理の動作を決定するセマンティクスが規定されています。それらのセマンティクスでは、メソッドが呼び出されるときのトランザクション・コンテキストが規定されており、また、EJBがjavax.transaction.UserTransactionインタフェースのメソッドにアクセスできるかどうかが定義されています。EJBアプリケーションは、それらのセマンティクスに注意して設計する必要があります。

コンテナ管理のトランザクションのトランザクション・セマンティクス

コンテナ管理のトランザクションの場合、トランザクション・セマンティクスはBeanの種類によって異なります。

ステートフル・セッションBeanのトランザクション・セマンティクス

表8-1は、コンテナ管理のトランザクションのステートフル・セッションBeanのトランザクション・セマンティクスを示したものです。

表8-1 コンテナ管理のトランザクションのステートフル・セッションBeanのトランザクション・セマンティクス

メソッドメソッドが起動された時点でのトランザクション・コンテキストユーザー・トランザクション・メソッドにアクセスできるか
Constructor

指定なし

いいえ

setSessionContext()

指定なし

いいえ

ejbCreate()

指定なし

いいえ

ejbRemove()

指定なし

いいえ

ejbActivate()

指定なし

いいえ

ejbPassivate()

指定なし

いいえ

ビジネス・メソッド

トランザクション属性によって「はい」または「いいえ」

いいえ

afterBegin()

はい

いいえ

beforeCompletion()

はい

いいえ

afterCompletion()

いいえ

いいえ


ステートレス・セッションBeanのトランザクション・セマンティクス

表8-2は、コンテナ管理のトランザクションのステートレス・セッションBeanのトランザクション・セマンティクスを示したものです。

表8-2 コンテナ管理のトランザクションのステートレス・セッションBeanのトランザクション・セマンティクス

メソッドメソッドが起動された時点でのトランザクション・コンテキストユーザー・トランザクション・メソッドにアクセスできるか
Constructor

指定なし

いいえ

setSessionContext()

指定なし

いいえ

ejbCreate()

指定なし

いいえ

ejbRemove()

指定なし

いいえ

ビジネス・メソッド

トランザクション属性によって「はい」または「いいえ」

いいえ


エンティティBeanのトランザクション・セマンティクス

表8-3は、コンテナ管理のトランザクションのエンティティBeanのトランザクション・セマンティクスを示したものです。

表8-3 コンテナ管理のトランザクションのエンティティBeanのトランザクション・セマンティクス

メソッドメソッドが起動された時点でのトランザクション・コンテキストユーザー・トランザクション・メソッドにアクセスできるか

コンストラクタ

指定なし

いいえ

setEntityContext()

指定なし

いいえ

unsetEntityContext()

指定なし

いいえ

ejbCreate()

対応するcreateのトランザクション属性で決まります

いいえ

ejbPostCreate()

対応するcreateのトランザクション属性で決まります

いいえ

ejbRemove()

対応するremoveのトランザクション属性で決まります

いいえ

ejbFind()

対応するfindのトランザクション属性で決まります

いいえ

ejbActivate()

指定なし

いいえ

ejbPassivate()

指定なし

いいえ

ejbLoad()

ejbLoad()を呼び出したビジネス・メソッドのトランザクション属性で決まります

いいえ

ejbStore()

ejbStore()を呼び出したビジネス・メソッドのトランザクション属性で決まります

いいえ

ビジネス・メソッド

トランザクション属性によって「はい」または「いいえ」

いいえ


Bean管理のトランザクションのトランザクション・セマンティクス

Bean管理のトランザクションの場合、トランザクション・セマンティクスはステートフルとステートレスのセッションBeanで異なります。エンティティBeanでは、Bean管理のトランザクションは利用できません。

ステートフル・セッションBeanのトランザクション・セマンティクス

表8-4は、Bean管理のトランザクションのステートフル・セッションBeanのトランザクション・セマンティクスを示したものです。

表8-4 Bean管理のトランザクションのステートフル・セッションBeanのトランザクション・セマンティクス

メソッドメソッドが起動された時点でのトランザクション・コンテキストユーザー・トランザクション・メソッドにアクセスできるか

コンストラクタ

指定なし

いいえ

setSessionContext()

指定なし

いいえ

ejbCreate()

指定なし

はい

ejbRemove()

指定なし

はい

ejbActivate()

指定なし

はい

ejbPassivate()

指定なし

はい

Business method

通常は、Beanでの直前のメソッド実行がトランザクション・コンテキストの中で終了していないかぎり、「いいえ」

はい

afterBegin()

適用なし

適用なし

beforeCompletion()

適用なし

適用なし

afterCompletion()

適用なし

適用なし


ステートレス・セッションBeanのトランザクション・セマンティクス

表8-5は、Bean管理のトランザクションのステートレス・セッションBeanのトランザクション・セマンティクスを示したものです。

表8-5 Bean管理のトランザクションのステートレス・セッションBeanのトランザクション・セマンティクス

メソッドメソッドが起動された時点でのトランザクション・コンテキストユーザー・トランザクション・メソッドにアクセスできるか

コンストラクタ

指定なし

いいえ

setSessionContext()

指定なし

いいえ

ejbCreate()

指定なし

はい

ejbRemove()

指定なし

はい

ビジネス・メソッド

いいえ

はい


セッションの同期

コンテナ管理のトランザクションを使用するステートフル・セッションBeanでは、javax.ejb.SessionSynchronizationインタフェースを実装してトランザクション同期通知を提供できます。その場合、ステートフル・セッションBeanのすべてのメソッドでは、REQUIRES_NEW、MANDATORY、またはREQUIREDのいずれかのトランザクション属性をサポートしなければなりません。javax.ejb.SessionSynchronizationインタフェースの詳細は、EJB仕様2.1のセクション6.5.3を参照してください。

トランザクション時の同期

BeanでSessionSynchronizationが実装されている場合、通常、WebLogic Server EJBコンテナではトランザクションのコミット時にBeanに対して次のコールバックが行われます。

EJBコンテナは、beforeCompletionメソッドで他のBeanを呼び出すか、またはXAリソースを追加することができます。呼出しの回数は、beforeCompletionIterationLimit属性によって制限されます。この属性は、トランザクションがロールバックされるまでに処理されるコールバックのサイクル数を指定します。同期サイクルは、登録されているオブジェクトがbeforeCompletionコールバックを受信し、リソースが追加されるか、または以前に同期されていたオブジェクトが再登録されたときに発生します。反復制限を利用することで、同期サイクルが無限に繰り返されることを防止できます。

トランザクション・タイムアウトの設定

EJBアプリケーションのトランザクションには、タイムアウトを指定できます。トランザクションの存続期間がタイムアウトの設定値を超えた場合、トランザクション・サービスによってそのトランザクションは自動的にロールバックされます。


注意:

トランザクションでbegin()を実行する前に、タイムアウトを設定する必要があります。タイムアウトを設定しても、すでに開始されているトランザクションには反映されません。

タイムアウトの指定方法は、トランザクションの種類によって異なります。

EJBトランザクションでの例外処理

WebLogic Server EJBアプリケーションでは、トランザクションの途中でスローされた特定の例外を取得して処理する必要があります。例外処理の詳細は、EJB仕様2.1の「Exception Handling」を参照してください。

EJBトランザクションでビジネス・メソッドによって例外がどのようにスローされるのかについては、セクション17.3にある表12 (コンテナ管理のトランザクション)および表13 (Bean管理のトランザクション)を参照してください。

クライアントの観点から見た例外については、セクション17.4を参照してください。特に、セクション12.4.1 (アプリケーション例外)、セクション17.4.2 (java.rmi.RemoteException)、セクション17.4.2.1 (javax.transaction.TransactionRolledBackException)、およびセクション17.4.2.2 (javax.transaction.TransactionRequiredException)の参照をお薦めします。

PKmUŒsªiªPK»~@OEBPS/trxman.htm€ÿ トランザクションの管理

4 トランザクションの管理

この章では、トランザクションの管理に使用される管理タスクに関する情報を提供します。これらのタスクには、トランザクションの監視、ヒューリスティックな終了の処理、トランザクションの破棄方法、処理中のトランザクションの解決、およびトランザクションのリカバリが含まれます。

統計およびモニターの機能を使用して、サーバー上のトランザクションをモニターできます。管理コンソールでは、それらの機能を構成したり、結果出力を表示したりできます。

トランザクションのモニタリング

管理コンソールで、ドメイン内の各サーバーのトランザクションをモニターできます。トランザクションの統計は、ドメイン全体ではなく、特定のサーバーについて表示されます。

手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプにある次のページを参照してください。

ヒューリスティックな終了の処理

ヒューリスティックな終了 (ヒューリスティックな決定)は、更新をコミットまたはロールバックする分散トランザクションの終了段階で、リソースが一方だけの決定を行ったときに発生します。これにより、分散されたデータは不確定な状態のままになります。ヒューリスティックな終了の原因としては、ネットワークの障害またはリソースのタイムアウトが考えられます。ヒューリスティックな終了が発生すると、以下のヒューリスティックな結果例外のいずれかがスローされます。

ヒューリスティックな終了が発生すると、サーバー・ログにメッセージが書き込まれます。ヒューリスティックな終了を解決する方法については、データベース・ベンダーが提供するドキュメントを参照してください。

一部のリソース・マネージャでは、ヒューリスティックな終了のコンテキスト情報が保存されます。この情報は、リソース・マネージャのデータの矛盾を解決するときに便利です。WebLogicコンソールのJTAパネルでForgetHeuristics属性が選択されている(trueに設定されている)場合、この情報はヒューリスティックな終了の後で削除されます。コンテキスト情報を保存するリソース・マネージャを使用するときには、ForgetHeuristics属性をfalseに設定することをお薦めします。

サーバーの移動

サーバー・インスタンスは、そのURL (IPアドレスまたはDNS名にリスニング・ポートの番号を付加したもの)によって特定されます。サーバーを新しいマシンに移動したり、同じマシン上でサーバーのリスニング・ポートを変更したりした結果URLが変わると、サーバーを移動したことになり、トランザクション・ログに保持されている情報ではサーバーを特定できなくなる場合があります。

移植性を向上させるため、サーバー・インスタンスにはIPアドレスではなくDNS名を使用することをお薦めします。

サーバーを新しいマシンに移動する必要がある場合は、「クラスタリングされていないサーバーで障害が発生した場合のトランザクションのリカバリ」を参照してください。

トランザクションの破棄

指定した時間の経過後に未完了のトランザクションを破棄することもできます。分散トランザクションの2フェーズ・コミット・プロセスでは、トランザクション・マネージャはトランザクションに参加するすべてのリソース・マネージャを調整します。すべてのリソース・マネージャがコミットまたはロールバックを支持すると、トランザクション・マネージャはリソース・マネージャに、変更に対してコミットまたはロールバックのいずれかの動作を行うよう通知します。2フェーズ・コミット・プロセスにおける、この第2フェーズでは、トランザクション・マネージャはすべてのリソース・マネージャでトランザクションの終了が示されるまで、トランザクションを終了しようとし続けます。AbandonTimeoutSeconds属性を使用すると、トランザクション・マネージャがコミット・プロトコルの第2フェーズでトランザクションの終了を試み続ける最長時間を秒単位で設定できます。デフォルト値は86400秒、つまり24時間です。この時間を過ぎると、利用できないリソースや、トランザクションの結果を承認できないリソースが関わるトランザクションでそれ以上の解決は行われません。破棄される前にトランザクションの準備が完了していた場合、トランザクション・マネージャは破棄されるトランザクションにかわってトランザクションをロールバックし、ロックを解放してから、サーバー・ログにヒューリスティック・エラーを書き込みます。

以下の関連情報を参考にできます。

トランザクション処理のチューニング

2フェーズ・コミット・プロトコルの最初のフェーズは準備フェーズと呼ばれます。要求される更新がトランザクション・ログ・ファイルに記録され、リソースは、リソース・マネージャを通じて変更の準備ができていることを表明する必要があります。リソースは、更新をコミットするのか、または前の状態にロールバックするのかを意思表示できます。第2フェーズまたはコミット・フェーズで何が行われるかは、リソースの意思表示によって決まります。すべてのリソースがコミットを支持すると、トランザクションに関わっているすべてのリソースが更新されます。1つまたは複数のリソースがロールバックを支持した場合は、トランザクションに関わっているすべてのリソースが前の状態にロールバックされます。WebLogic Serverには、トランザクションの処理にかかる時間を調整する次のパラメータがあります。

  • トランザクションの開始から、トランザクションの最初のフェーズの終わりまでの処理にかかる最大時間は、transaction-timeout属性の値を設定して制御します。

  • トランザクションの第2フェーズの処理にかかる最大時間は、completion-timeout-seconds属性の値を設定して制御します。

WebLogic Server 10.3.3以前では、第2フェーズの処理の最大所要時間は、デフォルトのtransaction-timeoutの値(最大値120秒、調整不可能)の約2倍でした。ほとんどの環境の場合、第2フェーズの完了に割り当てられる時間は十分なものです。ただし、システムの負荷が高い環境やネットワークの待機時間が長い環境では、コミット・フェーズの完了に使用可能な最大時間を超える可能性があり、トランザクション・マネージャはSystemExceptionをスローします。SystemExceptionは、トランザクションの結果に対して決定的ではないため、アプリケーション環境では、この場合の特別な例外処理を用意する必要があります。この例外処理には、トランザクション・アクティビティやトランザクションに関連するリソースの状態を手動で解析する処理も含まれる場合があります。アプリケーション・スタックは、より複雑になるため、トランザクションの結果の解決はさらに難しくなります。completion-timeout-seconds属性では、コミット・フェーズにより長い処理時間を割り当てることで、多くの場合、成功するか決定的な完了になります。

completion-timeout-secondsの値が、abandon-timeout-secondsに設定された値を超えると、abandon-timeout-secondsは、completion-timeout-secondsの値をオーバーライドします。トランザクションを破棄する場合、SystemExceptionがスローされます。一般に、transaction-completion-seconds属性に大きな値が必要なトランザクションは、システムのチューニングが必要になります。


注意:

abandon-timeout-seconds値が60秒未満に設定されている場合は、デフォルトのcompletion-timeout-seconds設定によって無効にされるので注意してください。また、トランザクション・サービスが起動してから最初の600秒(10分)以内に、abandon-timeout-seconds設定は完全に無効になります。

構成情報の詳細は次のトピックを参照してください。

  • Oracle WebLogic Serverの管理コンソール・オンライン・ヘルプの高度なドメインJTAオプションの構成に関する項

  • Oracle WebLogic Server MBeanリファレンスのCompletionTimeoutSecondsに関する項


注意:

completion-timeout-seconds属性は、JCAトランザクションなどのインポート済トランザクションや、リカバリ・トランザクションには適用されません。

現在(処理中)のトランザクションの手動での解決

場合によってはトランザクションが完了しないことがあります。通常は、システムまたはネットワークの障害が原因です。このような状況では、保留中のトランザクションのためにロックが保持され、他のトランザクションの進捗を妨げている可能性があります。「破棄タイムアウト」の期間が経過すると、WebLogic Serverトランザクション・マネージャが内部データ構造からトランザクションを削除し、サーバー・ログにヒューリスティック・エラーを書き込みます。「行き詰まった」トランザクションを手動で解決することもできます。

トランザクションを手動で解決するには、「サーバー」→「監視」→「JTA」タブで、現在(処理中)のトランザクションを確認します(Oracle WebLogic Server管理コンソール・ヘルプの「現在のトランザクションの表示」を参照)。その後、トランザクションIDをクリックして特定のトランザクションの詳細を表示します。トランザクションのステータスに応じて、コミットまたはロールバックを強制できます。


注意:

トランザクションのステータスはサーバーごとに異なることがあります。たとえば、調整を行うサーバーではトランザクションがコミットされていても、リモートの参加者がコミットの指示を受け取っていない場合があります。

次の表は、トランザクションのステータスと解決のオプションに関する情報を示します。

表4-1 トランザクション・ステータスの定義と手動解決のオプション

ステータス定義強制コミット強制ロールバック

アクティブ

アプリケーションがトランザクションを処理しています。トランザクションは、まだ2フェーズ・コミット処理には到達していません。


可

準備中

トランザクション・マネージャが2PCプロトコルの最初のフェーズでjavax.transaction.Synchronization beforeCompletion()コールバック処理を開始してから、すべての参加者がコミット可能と応答するまでの間隔に対応します。


可

準備完了

すべての参加者がコミット・ポイント(コミット・ログ・レコードがディスクにフラッシュされる)に備えるように反応してから、ロールバック処理開始までの間隔です。

可

可

コミット中

コミットの決定が行われてから、すべての参加者に結果が通知されて、javax.transaction.Synchronization afterCompletion()コールバックの処理が完了するまでの期間。

可


コミット完了

トランザクションがコミットされました。ヒューリスティックが存在する可能性が高いです。あるいは、トランザクションが完了していて、現在のトランザクションのリストに表示されません。

可


ロールバック中

この状態になるのは、ロールバック処理が開始されてから、すべての参加者がロールバックを指示されて、javax.transaction.Synchronization afterCompletion()コールバックの処理が完了するまでの期間です。


可

ロールバック済

トランザクションがロールバックされました。ヒューリスティックが存在する可能性が高いです。あるいは、トランザクションが破棄されていて、現在のトランザクションのリストに表示されません。


可

マーク済ロールバック

トランザクションがロールバックに関してマークされました。おそらく、setRollbackOnly操作の結果です。


可

トランザクションなし




不明

現在のステータスを判別できません。

可

可


手動でのコミットとロールバックのオプション

トランザクションを手動で解決するときは次に示すオプションから選択できます。オプションの制約は、表4-1「トランザクション・ステータスの定義と手動解決のオプション」で説明しています。

  • ローカル・コミットの強制: サーバーに登録されている各参加リソースに、指定したトランザクションのコミット操作が発行されます。トランザクションは、ローカル・トランザクション・マネージャのデータ構造から削除されます。ローカル・サーバーがトランザクションのコーディネータである場合、コミット・レコードは解放されます。Oracle WebLogic Server管理コンソール・ヘルプの「ローカル・コミットの強制」を参照してください。

  • グローバル・コミットの強制: 各参加サーバーで、指定したトランザクションのローカル・コミット操作が試行されます。調整を行うサーバー以外でこのオプションが呼び出されると、操作を処理するようにコーディネータが指示されます。調整を行うサーバーは、各参加サーバーに非同期リクエストを発行します。Oracle WebLogic Server管理コンソール・ヘルプの「グローバル・コミットの強制」を参照してください。

  • ローカル・ロールバックの強制:€ÿ ローカル・サーバーに登録されている各参加リソースに、指定したトランザクションのロールバック操作が発行されます。トランザクションがローカル・トランザクション・マネージャのデータ構造から削除されます。Oracle WebLogic Server管理コンソール・ヘルプの「ローカル・ロールバックの強制」を参照してください。

  • グローバル・ロールバックの強制: 各参加サーバーで、指定したトランザクションのローカル・ロールバック操作が試行されます。調整を行うサーバー以外でこのオプションが呼び出されると、操作を処理するようにコーディネータが指示されます。調整を行うサーバーは、各参加サーバーに非同期リクエストを発行します。Oracle WebLogic Server管理コンソール・ヘルプの「グローバル・ロールバックの強制」を参照してください。


    注意:

    これらのオプションからどれを選択しても、WebLogic Serverによってサーバー・ログにエントリが書き込まれます。

ローカル・オプションとグローバル・オプションの違いは、ローカル・オプションが、現在のサーバー・リソース(管理コンソールの左側のペインにあるナビゲーション・ツリーで選択したサーバーのリソース)だけに作動するのに対して、グローバル・オプションはすべての参加サーバーで操作を実行しようとすることです。グローバル操作が、ローカル・サーバーによって調整されていないトランザクションに対して起動されると、そのトランザクションのコーディネータが操作を実行するように指示されます。コーディネータと通信できない場合、操作はjavax.transaction.SystemExceptionで失敗します。

このケースでは、調整を行うサーバーではトランザクションがコミットされている(コミット済ステータス)ときに、リモートの参加者がコミットの指示を受け取っていません(準備完了ステータス)。リモート参加者でローカル・コミットを強制すると、このトランザクションを完了できます。このケースでは、トランザクションの状態は準備完了のままであるため、リモート参加者でロールバックを強制することもできます。ただし、トランザクションはヒューリスティックに完了します。グローバル・ロールバックの強制を試行すると、コーディネータの状態がコミット中であるため、操作が失敗します。コミット中のステータスではトランザクションをロールバックできません。

サーバーに障害が発生した後のトランザクションのリカバリ

WebLogic Serverのトランザクション・マネージャは、ユーザーによる最低限の介入でシステムのクラッシュからリカバリするように設計されています。トランザクション・マネージャは、クラッシュが何度も発生した後や、クラッシュのリカバリ中であっても、リソース・マネージャによって準備されたトランザクション・ブランチをコミットまたはロールバックによって解決するために、あらゆる努力を払います。

クラッシュ後のリカバリを容易にするため、WebLogic Serverではトランザクション・リカバリ・サービスを提供しています。このサービスでは、システムの起動時にトランザクションの回復が自動的に行われます。「クラッシュ後のトランザクション・リカバリ・サービスのアクション」で説明するように、トランザクション・リカバリ・サービスは、起動時にすべてのトランザクション・ログ・レコードを解析して未完了のトランザクションを見つけ、そのトランザクションを終了させます。

トランザクション・リカバリ・サービスは、クラッシュ後にトランザクションのリカバリを正常に処理するよう設計されているため、サーバーがクラッシュした場合は再起動し、トランザクション・リカバリ・サービスによって未完了のトランザクションを処理することをお薦めします。

サーバーがクラッシュして、適切な時間内に再起動できそうにない場合は、ユーザーによる処理が必要になることがあります。サーバーの障害発生後にトランザクションをリカバリする手順は、WebLogic Serverの環境によって異なります。クラスタリングされていないサーバーの場合は、手動でサーバー(およびデフォルト永続ストアのDATファイル)を別のシステム(マシン)に移動することでトランザクションをリカバリできます。詳細は、「クラスタリングされていないサーバーで障害が発生した場合のトランザクションのリカバリ」を参照してください。クラスタ内のサーバーについては、同じクラスタ内の別のサーバーに、サーバー全体またはトランザクション・リカバリ・サービスを手動で移行できます。トランザクション・リカバリ・サービスの移行には、トランザクションをリカバリするためのトランザクション・ログにアクセスできるサーバーを選択し、次に管理コンソールまたはWebLogicコマンドライン・インタフェースを使用してサービスを移行することが必要です。


注意:

クラスタリングされていないサーバーの場合は、サーバー全体を新しいシステムに移動することしかできません。クラスタリングされたサーバーの場合は、サーバー全体を移行することも、トランザクション・リカバリ・サービスを一時的に移行することも可能です。

トランザクション・リカバリ・サービスの移行に関する詳細は、「クラスタリングされたサーバーで障害が発生した場合のトランザクションのリカバリ」を参照してください。クラスタの詳細は、『Oracle WebLogic Serverクラスタの使い方』を参照してください。

次の項では、障害発生後にトランザクションをリカバリする方法について説明します。

クラッシュ後のトランザクション・リカバリ・サービスのアクション

クラッシュ後にサーバーを再起動したり、トランザクション・リカバリ・サービスを別の(バックアップ)サーバーに移行したりすると、トランザクション・リカバリ・サービスは以下の処理を行います。

  • 2フェーズ・コミットの第2フェーズの準備が整っているトランザクションを終了します。

    コミットの決定が行われたが2フェーズ・コミット・プロセスの第2フェーズが終了していないトランザクション(トランザクション・ログに記録されているトランザクション)については、トランザクション・リカバリ・サービスがコミット・プロセスを終了させます。

  • 準備されたトランザクションを解決します。

    トランザクション・マネージャによってリソース・マネージャとの準備が整っているトランザクション(2フェーズ・コミット・プロセスの第1フェーズのトランザクション)の場合、トランザクション・リカバリ・サービスはクラッシュ・リカバリ中に、各リソース・マネージャに対してXAResource.recover()を呼び出す必要があります。次に、commit()、rollback()、またはforget()メソッドを呼び出すことで、recover()によって返されたすべてのトランザクションIDを最終的に解決します。

  • ヒューリスティックな終了を報告します。

    リソース・マネージャによってヒューリスティックな例外が報告されると、トランザクション・リカバリ・サービスはそのヒューリスティックな例外をサーバー・ログに記録し、「ヒューリスティックを無視」構成属性が有効になっている場合は、forget()を呼び出します。「ヒューリスティックを無視」構成属性が有効になっていない場合は、データベース・ベンダーのドキュメントでヒューリスティックな終了の解決に関する情報を参照してください。詳細については、「ヒューリスティックな終了の処理」を参照してください。

トランザクション・リカバリ・サービスには、次のような利点があります。

  • 複数のリソースにわたって一貫性を維持します。

    トランザクション・リカバリ・サービスは、一貫した予測しやすい方法でトランザクション・リカバリ処理を行います。クラッシュ前にコミットが決定されたがまだ行われておらず、XAResource.recover()からトランザクションIDが返されるトランザクションの場合、トランザクション・リカバリ・サービスは一貫してXAResource.commit()を呼び出します。クラッシュ前にコミットが決定しておらず、XAResource.recover()からトランザクションIDが返されるトランザクションの場合、トランザクション・リカバリ・サービスは一貫してXAResource.rollback()を呼び出します。トランザクションのリカバリが一貫性のある予測しやすいものであるため、トランザクション・マネージャがクラッシュしても、一部のブランチがコミットされ一部がロールバックされるという混合ヒューリスティックの終了は発生しません。

  • トランザクションの解決に固執します。

    リソース・マネージャがクラッシュすると、トランザクション・リカバリ・サービスでは準備されている各トランザクションについてcommit()またはrollback()を呼び出さなければなりません。commit()またはrollback()の呼出しは成功するまで続けられます。トランザクション解決の試行は、AbandonTimeoutSeconds構成属性を設定することで制限できます。詳細については、「トランザクションの破棄」を参照してください。

WebLogicプロキシ・プラグインを備えたApacheを使用する際のクラスタリング・フェイルオーバー

WebLogicプロキシ・プラグインを備えたApacheをクラスタのフロントエンドとして使用する際、プラグインは複数の構成パラメータを使用して、WebLogic Serverホストへの接続を待機する時間や、接続の確立後は、プラグインがレスポンスを待機する時間を判断します。

  • Apacheのidempotentフラグの設定を検証します。idempotentがONに設定されているときに、指定したWLIOTimeoutSecs値内でサーバーが応答しない場合は、プラグインがフェイルオーバーします。idempotentがONに設定され、サーバーがREAD_ERROR_FROM_SERVERなどのエラーで応答する場合にもプラグインはフェイルオーバーします。OFFに設定されている場合、プラグインはフェイルオーバーしません。詳細は、『Oracle WebLogic ServerにおけるWebサーバー1.1プラグインの使い方』のWebサーバー・プラグインのパラメータに関する項を参照してください。

  • WebLogicプロキシ・プラグインの再試行メカニズムの設定を確認します; たとえば、許可される再試行の最大回数が、ConnectTimeoutSecs値をConnectRetrySecs値で除算した値と等しいかどうかなどを確認します。詳細は、『Oracle WebLogic ServerにおけるWebサーバー1.1プラグインの使い方』のフェイルオーバー、Cookie、およびHTTPセッションに関する項を参照してください。

クラスタリングされていないサーバーで障害が発生した場合のトランザクションのリカバリ

障害が発生したサーバーでトランザクションをリカバリするには、次の手順に従います。

  1. すべてのトランザクション・ログ・レコードが含まれる永続ストアDATファイルを、障害が発生したサーバーから新しいサーバーへ移動します(新しいサーバーで利用できるようにします)。

  2. デフォルト永続ストアへのパスを、データ・ファイルへのパスと共に設定します。「デフォルト永続ストアへのパスの設定」を参照してください。

  3. 新しいサーバーを起動します。「クラッシュ後のトランザクション・リカバリ・サービスのアクション」で説明するように、トランザクション・リカバリ・サービスは、すべてのトランザクション・ログ・ファイルを解析して未完了のトランザクションを見つけ、そのトランザクションを終了させます。

サーバーに障害が発生した後でトランザクション・ログ・レコードを移動する場合は、すべてのトランザクション・ログ・レコードを新しいマシンで使用可能にしてから、そのマシンでサーバーを起動します。そうしないと、クラッシュ時にコミット中だったトランザクションが適切に解決できず、その結果、アプリケーション・データに矛盾が発生する場合があります。このような移行は、両方のマシンで使用可能なデュアル・ポート・ディスクに永続ストアのデータ・ファイルを格納することで実現できます。計画的な移行の場合は、新しいマシンでパス名が異なるときに、デフォルトのファイル・ストアのdirectory属性を新しいパス名で更新してからサーバーを起動します。


注意:

トランザクション・リカバリ・サービスは、クラッシュ後にトランザクションのリカバリを正常に行うために設計されたものです。サーバーがクラッシュした場合は、新しいマシンにサーバーを移動するよりも、サーバーを再起動し、トランザクション・リカバリ・サービスによって未完了のトランザクションを処理することをお薦めします。

クラスタリングされたサーバーで障害が発生した場合のトランザクションのリカバリ

クラスタリングされたサーバーで障害が発生した場合、以下のいずれかの方法でトランザクションをリカバリできます。

サーバーの移行

クラスタリングされたサーバーの場合、WebLogic Serverでは、トランザクション・リカバリ・サービスを含めて、障害が発生したサーバーを新しいマシンに移行できます。サーバーを別のマシンに移行する場合、トランザクションを完了またはリカバリするには、サーバーがトランザクション・ログ・レコードを見つけられるようにする必要があります。トランザクション・ログ・レコードは、サーバーのデフォルト永続ストアに格納されています。障害が発生したときに、クラスタリングされたサーバーを移行する計画がある場合は、障害が発生した移行可能なサーバーの移行先となり得る任意のマシンにアクセスできる、共有ストレージ・システムにレコードを格納するよう、デフォルト永続ストアを設定する必要があります。高い信頼性を実現するために、ストレージ・エリア・ネットワーク(SAN)などの、高可用性の備わっている共有ストレージ・ソリューションを使用してください。

サーバーの移行に関する詳細は、『Oracle WebLogic Serverクラスタの使い方』の「サーバー全体の移行」を参照してください。

デフォルト永続ストア・オプションの設定の詳細は、以下を参照してください。

トランザクション・リカバリ・サービスの手動移行

クラスタリングされたサーバーがクラッシュした場合は、管理コンソールまたはコマンドライン・インタフェースを使用して、同じクラスタ内でクラッシュしたサーバーから別のサーバーへ、トランザクション・リカバリ・サービスを手動で移行できます。管理コンソールを使用してトランザクション・リカバリ・サービスを手動で移行する手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのトランザクション・リカバリ・サービスの手動移行に関する項を参照してください。

シングルトン・サービスのWebLogic Serverヘルス監視を使用して、トランザクション・リカバリ・サービスが正常な候補サーバーに自動的に移行されるように構成することも可能です。「トランザクション・リカバリ・サービスの自動移行」を参照してください。

トランザクション・リカバリ・サービスの移行の仕組み

手動または自動のサービス移行が実施されると、以下のイベントが発生します。

  1. トランザクション・ログの所有権がクラッシュしたサーバーからバックアップ・サーバーのトランザクション・リカバリ・サービスに移ります。

  2. 「クラッシュ後のトランザクション・リカバリ・サービスのアクション」で説明するように、トランザクション・リカバリ・サービスは、障害が発生したサーバーからのすべてのトランザクション・ログ・レコードを解析して未完了のトランザクションを見つけ、そのトランザクションを終了させます。

  3. バックアップ・サーバーのトランザクション・リカバリ・サービスにより、障害が発生したサーバーで未完了のトランザクションがすべて正常に終了すると、サーバーでは障害が発生したサーバーのトランザクション・リカバリ・サービスに対する所有権が解放され、障害が発生したサーバーが再起動時にその所有権を再び要求できるようになります。

サーバーでは、障害が発生した複数のサーバーに対してトランザクション・リカバリを行うことができます。他のサーバーのトランザクションを回復している間に、バックアップ・サーバーは自身のトランザクションの処理および回復を続けます。リカバリ中にバックアップ・サーバーで障害が発生した場合は、さらに別のサーバーにトランザクション・リカバリ・サービスを移行できます。この別のサーバーで、トランザクション・リカバリは続行されます。また、管理コンソールまたはコマンドライン・インタフェースを使用して、トランザクション・リカバリ・サービスを元の障害が発生したサーバーに手動で移行して戻すこともできます。詳細は、「トランザクション・リカバリ・サービスの元のサーバーへの手動による移行」を参照してください。

サーバーのトランザクション・リカバリがバックアップ・サーバーで完了すると、バックアップ・サーバーではトランザクション・リカバリ・サービスの所有権が、障害が発生したサーバーに解放されます。障害が発生したサーバーを再起動すると、このサーバーはトランザクション・リカバリ・サービスの所有権を再び要求しようとします。障害が発生したサーバーを再起動したときに、バックアップ・サーバーがトランザクション・リカバリ処理中だった場合、バックアップ・サーバーはトランザクションのリカバリを中止し、内部クリーンアップを行い、トランザクション・リカバリ・サービスの所有権を解放して、障害が発生したサーバーがそれを再び要求して正しく起動できるようにします。その後、障害が発生したサーバーでは、自身のトランザクション・リカバリを完了します。

障害が発生したサーバーのトランザクション・リカバリ・サービスがまだバックアップ・サーバーで所有されており、障害が発生したサーバーを再起動しようとしたときにバックアップ・サーバーが非アクティブだった場合、バックアップ・サーバーがトランザクション・リカバリ・サービスの所有権を解放できないため、障害が発生したサーバーは起動しません。これは、フェイルバック・メカニズムが失敗した場合や、バックアップ・サーバーが管理サーバーと通信できない場合にも当てはまります。トランザクション・リカバリの移行は、管理コンソールまたはコマンドライン・インタフェースを使用して手動で行えます。

トランザクション・リカバリ・サービスの自動移行

サーバー・ヘルス監視サービスを使用することで、トランザクション・リカバリ・サービスを異常のあるサーバー・インスタンスから正常なサーバー・インスタンスに自動的に移行できます。これにより、障害が発生したサーバーのトランザクション処理をバックアップ・サーバーで完了できます。『Oracle WebLogic Serverクラスタの使い方』の「JTAトランザクション・リカバリ・サービスの自動移行を構成するロードマップ」を参照してください。

管理対象サーバーの独立性

WebLogic Server 10.0より前のリリースでは、クラスタのプライマリ管理対象サーバーの起動時に管理サーバーにアクセスできない場合(ほとんどの場合は管理サーバーがまだ起動していないことが原因)、プライマリ管理対象サーバーは自動的に管理対象サーバー独立(MSI)モードに移行し、ローカルの構成情報を使用して起動を続行していました。この状況では、トランザクション・リカバリ・サービスを手動で移行している間、プライマリ管理対象サーバーのかわりにバックアップ・サーバーでまだTLOGデータをリカバリ中である可能性があり、これらのサーバーがTLOGに同時にアクセスしてTLOGが破損するリスクがありました。

このTLOG破損のリスクを回避するためのプロパティが、JTAMigratableTargetMBeanのstrictOwnershipCheckです。このプロパティを使用することで、プライマリ管理対象サーバーの起動中に管理サーバー(JTA手動移行ポリシーの場合)またはシングルトン・マスター(JTA自動移行ポリシーの場合)に接続できないことが判明すると、次に示すようにstrictOwnershipCheckの値に従って管理対象サーバーの独立性が検証されるようになりました。

  • True - これが推奨設定です。プライマリ管理対象サーバーは、例外をスローして起動に失敗します。

  • False - プライマリ管理対象サーバーは、トランザクション・リカバリ・サービスのフェイルバックをスキップして正常に起動します。この場合は、WebLogic Server 9.2以前と同じようにTLOGが破損するリスクがあります。

トランザクション・リカバリ・サービスの移行に対する制限

トランザクション・リカバリ・サービスを自動または手動で移行する場合は、以下の制限があります。

  • トランザクション・リカバリ・サービスを、実行中のサーバーからバックアップ・サーバーへ移行することはできません。トランザクション・リカバリ・サービスを移行する前に、サーバーを停止する必要があります。

  • バックアップ・サーバーでは、障害が発生したサーバーに対する新しいトランザクション処理は受け付けません。終了していないトランザクションを処理するだけです。

  • バックアップ・サーバーでは、ヒューリスティック・ログ・ファイルは処理しません。

  • バックアップ・サーバーは、WebLogic Serverによって書き込まれたログ・レコードのみを処理します。WebLogic Tuxedoコネクタなどのゲートウェイ実装によって書き込まれたログ・レコードの処理は行いません。

以上の制限に加え、WebLogic Server 10.0以降でトランザクション・リカバリ・サービスが自動的に移行されるように構成する場合は以下のルールも適用されます。

  • 以前のWebLogic Serverリリースのサーバーがクラスタに含まれている場合でも、プライマリ・サーバーとバックアップ・サーバーはWebLogic Server 10.0以降にする必要があります。自動移行が有効になっている場合にこのルールが強制的に適用されるようにするため、管理コンソールの候補サーバーの「使用可能」リストにはWebLogic Server 10.0以降のサーバーのみが表示されるようになっています。

  • リリース9.2以前のサーバーとリリース10.0以降のサーバーの間の手動サービス移行は、移行スクリプトを使用していない場合にのみサポートされます。

トランザクション・リカバリ・サービスの移行準備

クラスタ内の障害が発生したサーバーから同じクラスタ内の別のサーバー(バックアップ・サーバー)にトランザクション・リカバリ・サービスを移行するには、障害が発生したサーバーのトランザクション・ログ・レコードにバックアップ・サーバーがアクセスできる必要があります。したがって、クラスタ内のすべての潜在的なバックアップ・サーバーにとって使用可能な永続ストレージ上に、デフォルト永続ストア・データ・ファイルを格納する必要があります。次の点を考慮してください。

  • ストレージ・エリア・ネットワーク(SAN)が推奨されます。

  • NFSファイル・システムを使用する場合、ディスク書込みがキャッシュEæºã•ã‚Œãªã„ようにNFSサーバーを構成します。

  • ストレージ・ソリューションにかかわらず、フェイルオーバーと移行をテストします。

    一部のストレージ・ソリューション、特に一部のバージョンのNFSでは、ファイルのロックが問題になる可能性があります。ファイル・ロックを効率的に処理するようにストレージ・サーバーを構成するか、WebLogicファイル・ストアのファイル・ロックを停止する必要があります。


    重要:

    NFS記憶域は、同期書込みリクエストが揮発性メモリーに警告なしでバッファされるように構成されているので、トランザクション・データを完全に保護しない場合があります。ファイル・ストアのディレクトリがNFSマウントに存在して、ファイル・ストアの同期書込みポリシーがDisabled以外である場合、NFS実装と構成をチェックして、同期の書込みがサポートされるように構成されていることを確認します。Disabledの同期書込みポリシーを使用すると、同期書込みが行われていないので、一般的にはトランザクションで安全ではありません。記憶域デバイスの物理機能を超える最大数の永続メッセージまたはトランザクション・スループットを表示すると、同期書込みリクエストの不要なバッファリングが発生する可能性があります。NFSサーバーで、ファイル・ストアをホストするエクスポート済のNFSディレクトリの同期書込み設定をチェックします。SANベースのファイル・ストアまたはJDBCストアでは、安全な集中型の記憶域を提供する簡単な方法が用意されている場合があります。『Oracle WebLogic Serverパフォーマンスおよびチューニング』のファイル・ロックとNFSに関する項を参照してください。

トランザクション・リカバリ・サービスを自動または手動で移行する際は、永続ストアに関する以下のルールが適用されます。

  • デフォルト永続ストアを、JTAを始めとする移行可能サービスの間で共有することはできません。移行可能ターゲットにターゲット指定されている他の移行可能サービス(たとえばJMSサービス)では、別途カスタム・ストアを使用する必要があります。

  • デフォルト・ストアのマウントやアンマウントを実行する移行前/移行後スクリプトを指定する場合は、候補マシンごとにノード・マネージャを構成して実行する必要があります。

プライマリ・サーバーが起動、フェイルオーバー、またはフェイルバックする際には、管理サーバーがアクセス可能な状態になっている必要があります。これは、トランザクション・リカバリ・サービスが、そのTLOGの排他的な所有権を競合なく適切に取得できるようにするためです。プライマリ・サーバーの起動時には、トランザクション・リカバリ・サービスが管理サーバーに接続し、JTAに関する最新の情報を取得します。フェイルオーバーやフェイルバックが発生した場合は、トランザクション・リカバリ・サービスがその最新情報を管理サーバーに保存します。

トランザクション・リカバリ・サービスをサーバーから移行するときには、実際に移行を行う前に障害が発生している、または障害が発生したサーバーを停止する必要があります。元のサーバーがまだ実行中の場合は、そこからトランザクション・リカバリ・サービスを移行することはできません。

移行に参加するサーバーはすべて、構成においてリスニング・アドレスが指定されている必要があります。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのリスニング・アドレスの構成に関する項を参照してください。

トランザクション・リカバリ・サービスの移行先になるサーバーの制限

クラスタ内のサーバーに対してトランザクション・リカバリ・サービスのバックアップ・サーバーとして使用するサーバーの選択肢を制限することもできます。たとえば、クラスタ内のすべてのサーバーがサーバーのトランザクション・ログ・レコードにアクセスできるとは限りません。管理コンソールの「サーバー」→「構成」→「移行」ページでは、使用可能な宛先サーバーを制限できます。手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのトランザクション・リカバリ・サービスの移行先とする候補サーバーの構成に関する項を参照してください。


注意:

必要に応じてトランザクション・リカバリ・サービスを手動で移行して元のサーバーに戻せるように、「選択済み」リストに移行元のサーバーを含めておく必要があります。管理コンソールでは、この規則に従わなくてはなりません。

トランザクション・リカバリ・サービスの現在のオーナーの表示

トランザクション・リカバリ・サービスをクラスタ内の別のサーバーに移行した場合、そのトランザクション・リカバリ・サービスの所有権は、未完了のトランザクションがすべて完了するまでバックアップ・サーバーに割り当てられます。トランザクションの完了後、バックアップ・サーバーはトランザクション・リカバリ・サービスの所有権を解放し、元のサーバーは所有権の返還を要求できます。現在のオーナーは、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの「サーバー: 制御: 移行」ページで確認できます。次の手順に従います。

  1. 管理コンソールの「ドメイン構造」ツリーで、「環境」を展開して「サーバー」をクリックします。

  2. トランザクション・リカバリ・サービスの移行元のサーバーを選択し、さらに「制御」>「移行」タブを選択します。

  3. 「詳細設定」をクリックします。「JTA移行」オプションの下の「ホスト・サーバー」に、トランザクション・リカバリ・サービスの現在のオーナーが表示されます。

トランザクション・リカバリ・サービスの元のサーバーへの手動による移行

バックアップ・サーバーは、障害が発生したサーバーのトランザクションのリカバリが完了すると、トランザクション・リカバリ・サービスの所有権を解放します。そのため、元のサーバーは再起動時にその所有権の返還を要求できます。トランザクションのリカバリが完了する前になんらかの理由でバックアップ・サーバーが停止(クラッシュ)すると、元のサーバーはトランザクション・リカバリ・サービスの所有権の返還を要求できなくなり、起動しません。

また、移行先サーバーとして元のサーバーを選択すると、トランザクション・リカバリ・サービスを手動で移行して元のサーバーに戻すことができます。元のサーバーにトランザクション・リカバリ・サービスを手動で移行して返還するときには、バックアップ・サーバーが稼動していてはいけません。次の手順に従います。


注意:

以下の点に注意してください。
  • トランザクション・リカバリ・アクションの完了前にバックアップ・サーバーで障害が発生した場合、プライマリ・サーバーは、トランザクション・リカバリ・サービスの所有権を要求できず、サーバーの再起動後にリカバリは再試行されません。そのため、トランザクション・リカバリ・サービスを別のバックアップ・サーバーに手動で再移行する必要があります。

  • バックアップ・サーバーによるトランザクションのリカバリ中に元のサーバーを再起動した場合は、バックアップ・サーバーが正常にトランザクション・リカバリ・サービスの所有権を解放します。バックアップ・サーバーを停止する必要はありません。「クラスタリングされたサーバーで障害が発生した場合のトランザクションのリカバリ」を参照してください。


管理コンソールを使用してトランザクション・リカバリ・サービスを手動で移行する手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのトランザクション・リカバリ・サービスの手動移行に関する項を参照してください。

トランザクション・レコードの削除方法

TLOGを削除する前に、できるだけ多くのトランザクションを完了できるようにWebLogic Serverインスタンスを正常に停止する必要があります。


注意:

TLOGを削除する必要があるのは極端な場合のみです。TLOGを削除すると、トランザクション・レコードが削除されるため、ヒューリスティック障害が発生します。たとえば、「サーバーの移行」を参照してください。

TLOGの場所は、デフォルトのストアとJDBC TLOGストアのどちらを使用しているか、またLLRがトランザクションの参加リソースであるかどうかによって異なります。

LLRデータベースでのTLOGの削除方法

LLR表のデフォルト名はWL_LLR_SERVERNAMEで、SERVERNAMEは、サーバー・インスタンスの名前です。Oracle WebLogic Server管理コンソール・オンライン・ヘルプの「サーバー: 構成: 全般」の「JDBC LLR表名」を参照してください。データベースに保持されているLLR TLOGを削除するには、drop table WL_LLR_SERVERNAMEを発行して、表からすべてのレコードを削除します。

デフォルト・ストアからのTLOGファイルの削除方法

デフォルト・ストアのTLOGを削除するには、次のパターンのファイルをすべて削除します。

$DOMAIN_HOME/servers/servername/data/store/default/_WLS_SERVERNAMExxxxxx.DAT

ここで、xxxxxxは、0から9の整数です。


注意:

構成済のJMSファイル・ストアがデフォルト・ストアに含まれる場合、TLOGを削除すると、JMSファイル・ストアも削除されます。この場合、TLOGファイルを削除する前に、JMSメッセージを別の場所にエクスポートします。その後、TLOGファイルを安全に削除して、JMSメッセージを元のストアにインポートすることができます。『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』のJMSメッセージの管理に関する項を参照してください。

JDBC TLOGストアからのTLOGの削除方法

JDBC TLOGストアの名前は、JDBC TLOGストアをホストするサーバー名の前に接頭辞名、最後に「_」を付けたものです。たとえば、デフォルトの接頭辞名を使用した有効なJDBC TLOGストア名はTLOG_MyServer_です。この場合、TLOG_が接頭辞名、MyServerがJDBC TLOGストアをホストするサーバーの名前です。データベース管理者が既存のTLOG情報をJDBC TLOGストアから削除できます。

PKëk¹À(EEPK»~@OEBPS/trxsvc.htm„a{ž トランザクション・サービス

5 トランザクション・サービス

この章では、WebLogic Serverサーバーで使用するトランザクション・アプリケーションを作成するために使用される情報を説明します。トピックには、トランザクション・サービスの機能や制限、EJBでの使用方法およびObject Transaction Service (OTS)が含まれます。

この章では、以下のトピックについて説明します。

トランザクション・サービスについて

WebLogic Serverは、EJBアプリケーションとRMIアプリケーションのトランザクションをサポートするトランザクション・サービスを備えています。WebLogic Server EJBコンテナでは、そのトランザクション・サービスにより、Enterprise JavaBeans仕様3.0 (http://java.sun.com/products/ejb/2.0.html)に記載されているトランザクション・サービスが実装されます。

WebLogic Serverではさらに、EJBとRMIのアプリケーション用として、JavaアプリケーションのJava Transaction API (JTA)を実装するjavax.transactionパッケージおよびjavax.transaction.xaパッケージが用意されています。JTAの詳細は、Java Transaction API (JTA)仕様1.1 (http://www.oracle.com/technetwork/java/javaee/jta/index.html)を参照してください。アプリケーションにおいてトランザクション境界の設定に使用されるUserTransactionオブジェクトの詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.UserTransactionに関する項を参照してください。

機能と制限

この節の内容は以下のとおりです。

以降の節では、EJBとRMIのアプリケーションをサポートするトランザクション・サービスの機能と制限について説明します。

軽量クライアントと委託コミット

軽量クライアントは、可用性が一定ではなく、管理のされていない、1ユーザー対象のデスクトップ・システムで動作します。デスクトップ・システムは、使用されないときは所有者によって電源が落とされます。そのような管理されていない、1ユーザー対象のデスクトップ・システムでは、トランザクションの調整などのネットワーク機能を行うべきではありません。特に、管理されていないシステムには、サーバー・リソースが関わるトランザクションにおいて、障害の影響を受けずに原子性、一貫性、隔離性、および持続性というACIDプロパティを維持するという役目を負わせるべきではありません。WebLogic Serverのリモート・クライアントは軽量クライアントです。

トランザクション・サービスを利用すると、軽量クライアントでは委託コミットを実行できます。つまり、軽量クライアントでは、トランザクションの調整をサーバー・マシン上のトランザクション・マネージャにまかせてトランザクションを開始および終了することができるのです。クライアント・アプリケーションは、ローカルのトランザクション・サーバーを必要としませんクライアント・アプリケーションは、ローカル・トランザクション・サーバーを必要としません。EJBクライアントまたはRMIクライアントで使用されるUserTransactionのリモート実装によって、トランザクション調整の実際の作業がサーバー上のトランザクション・マネージャに委託されます。

クライアントが開始するトランザクション

アプレットなどのクライアントでは、JNDIを使用してUserTransactionオブジェクトおよびTransactionManagerオブジェクトの参照を取得できます。クライアントでは、いずれかのオブジェクト参照を使用してトランザクションを開始できます。現在のスレッドのTransactionオブジェクトを取得するには、クライアント・プログラムは((TransactionManager)tm).getTransaction()メソッドを呼び出さなければなりません。

トランザクションの整合性

トランザクションの動作を管理すると、そのトランザクションに関わるすべてのトランザクション・オブジェクトでトランザクション・リクエストの処理が完了しないかぎりcommitが成功しないので、トランザクションの整合性が確保されます。トランザクション・サービスで行うことができるトランザクション動作の管理は、Open Groupによって定義されているリクエストとレスポンスのプロセス間通信モデルにより実現されるものと同等です。

トランザクションの終了

WebLogic Serverでは、トランザクションはそのトランザクションを生成したクライアントによってのみ終了することができます。


注意:

クライアントは、別のオブジェクトのサービスをリクエストしたサーバー・オブジェクトの場合もあります。

フラット・トランザクション

WebLogic Serverでは、フラット・トランザクション・モデルが実装されています。ネスト・トランザクションはサポートされていません。

トランザクション・サービスのトランザクション処理との関係

トランザクション・サービスは、様々なトランザクション処理のサーバー、インタフェース、プロトコル、および規格と以下のように関連しています。

  • Open Group XAインタフェースのサポート。Open Group Resource Managerは2フェーズ・コミット・プロトコルをOpen Group XAインタフェースを通じて管理できるようにすることで分散トランザクションに関与できるリソース・マネージャです。WebLogic ServerではOpen Group Resource Managerとの対話がサポートされています。

  • OSI TPプロトコルのサポート。Open Systems Interconnect Transaction Processing (OSI TP)は国際標準化機構(ISO)によって定義されたトランザクション対応プロトコルです。WebLogic ServerではOSI TPトランザクションとの対話はサポートされていません。

  • LU 6.2プロトコルのサポート。Systems Network Architecture (SNA) LU 6.2はIBMによって定義されたトランザクション対応のプロトコルです。WebLogic ServerではLU 6.2トランザクションとの対話はサポートされていません。

  • ODMG規格のサポート。ODMG-93はObject Database Management Group (ODMG)によって定義された規格であり、Object Database Management Systemにアクセスするための移植可能なインタフェースを規定しています。WebLogic Serverでは、ODMGトランザクションとの対話はサポートされていません。

マルチスレッド・トランザクション・クライアントのサポート

WebLogic Serverでは、マルチスレッド・トランザクション・クライアントがサポートされています。クライアントでは、複数のスレッドで同時にトランザクション・リクエストを行うことができます。

トランザクションID

トランザクション・サービスでは、各トランザクションにトランザクション識別子(Xid)が割り当てられます。このIDは、ログ・ファイル内で特定トランザクションの情報を他と区別するために使用できます。トランザクション識別子は、weblogic.transaction.TransactionインタフェースのgetXIDメソッドを使用して取り出すことができます。トランザクション識別子を取得するメソッドの詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.Transactionに関する項を参照してください。

トランザクションの名前とプロパティ

WebLogic JTAでは、トランザクションの命名とユーザー定義プロパティをサポートするjavax.transaction.Transactionの拡張機能が提供されます。これらの拡張機能は、weblogic.transaction.Transactionインタフェースに含まれています。

トランザクション名は、トランザクションの種類(送金やチケット購入など)を示します。したがって、サーバー上の一意のトランザクションを識別するトランザクションIDとは混同しないでください。トランザクション名を利用すると、例外やログ・ファイルでトランザクションの種類を簡単に識別できます。

ユーザー定義のプロパティはキーと値の組み合わせです。この場合のキーはプロパティを識別する文字列であり、値はプロパティに割り当てられた現在の値です。トランザクション・プロパティの値は、Serializableインタフェースを実装するオブジェクトでなければなりません。アプリケーションでは、weblogic.transaction.Transactionインタフェースで定義されているsetメソッドとgetメソッドを使用してプロパティを管理します。一度設定されたプロパティは、存続期間が終わるまでトランザクションとともに存在し、トランザクションがシステムを移動するときにはマシン間で受け渡しされます。プロパティはトランザクション・ログに保存され、クラッシュのリカバリ処理で復元されます。トランザクション・プロパティが複数回にわたって設定された場合は、最後に設定された値が保持されます。

トランザクション名とトランザクション・プロパティを設定および取得するメソッドの詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.Transactionに関する項を参照してください。

トランザクション・ステータス

Java Transaction APIでは、javax.transaction.Statusクラスを使用してトランザクションのステータス・コードが提供されます。weblogic.transaction.TransactionのgetStatusAsStringメソッドを使用すると、トランザクションのステータスを文字列として返すことができます。文字列には、javax.transaction.Statusで指定されているメジャー状態と、追加のマイナー状態(loggingやpre-preparingなど)が含まれます。

トランザクションの統計

トランザクションの統計は、サーバー上のトランザクション・マネージャで処理されるすべてのトランザクションについて提供されます。それらの統計には、トランザクションの総数、特定の結果(コミット、ロールバック、ヒューリスティックな終了など)を持つトランザクションの数、ロールバックされたトランザクションの理由別の数、およびトランザクションがアクティブな状態を維持した合計時間が含まれます。トランザクションの統計の詳細は、「トランザクションのモニタリング」を参照してください。

制約

トランザクション・サービスには以下の制約があります。

  • WebLogic Serverでは、クライアントまたはサーバー・オブジェクトは別のトランザクションに参加しているオブジェクトのメソッドを呼び出すことができません。クライアントまたはサーバーによってそのようなメソッド呼出しが発行された場合は例外が返されます。

  • WebLogic Serverでは、Java Transaction API (Javaアプリケーション用)のサード・パーティ実装を使用するクライアントはサポートされていません。

  • トランザクション・ログ・バッファは250KBに制限されています。この値を超えるトランザクション・ログ書込みを必要とする大規模なトランザクションがアプリケーションにある場合、WebLogic Serverは例外をスローします。このような場合、バッファ・サイズの制限に対処するようにアプリケーションを再構成する必要があります。

トランザクションのスコープ

トランザクションのスコープは、そのトランザクションが実行される環境を表します。WebLogic Serverでは、スタンドアロン・サーバーでのトランザクション、クラスタリングされていないサーバー間でのトランザクション、ドメイン内のクラスタリングされたサーバー間でのトランザクション、およびドメイン間のトランザクションがサポートされています。ドメイン間トランザクションのサポートを有効化するには、「ドメイン間およびドメイン内トランザクションのセキュアな通信の構成」を参照してください。

EJBアプリケーションでのトランザクション・サービス

WebLogic Server EJBコンテナでは、WebLogic Server EJBアプリケーションでの以下の2種類のトランザクションをサポートするトランザクション・サービスが提供されます。

EJBアプリケーションにおけるトランザクション管理の概要については、「WebLogic Server EJBアプリケーションのトランザクション」および「トランザクションのサンプルEJBコード」を参照してください。

RMIアプリケーションでのトランザクション・サービス

WebLogic Serverは、WebLogic Server RMIアプリケーションのトランザクションをサポートするトランザクション・サービスを備えています。RMIアプリケーションでは、クライアント・アプリケーションまたはサーバー・アプリケーションがUserTransactionオブジェクトに対する明示的なメソッド呼出しを行って、トランザクションの開始、コミット、およびロールバックが行われます。

UserTransactionのメソッドの詳細は、オンラインのJavadocを参照してください。RMIアプリケーションにおけるトランザクション管理の概要については、「WebLogic Server RMIアプリケーションのトランザクション」および「トランザクションのサンプルRMIコード」を参照してください。

OTSとの相互運用をサポートするトランザクション・サービス

WebLogic Serverは、OTS (Object Transaction Service)との相互運用をサポートするトランザクション・サービスを備えています。Java Transaction Service (JTS)仕様(http://www.oracle.com/technetwork/java/javaee/tech/jts-140022.html)を参照してください。このリリースのWebLogic Serverでは、以下の状況においてOTSとの相互運用が行われます。

サーバー間の2PC

この状況では、サーバー間の2フェーズ・コミット(2PC)トランザクションを介在によって完了します。発信側サーバーは、Xidを作成し、ターゲット・サーバーにトランザクションを伝播します。ターゲット・サーバーは、自身をリソースとして発信側サーバーに登録します。発信側サーバーが、トランザクションを完了させます。第7章「ロギング・ラスト・リソース・トランザクションの最適化」で説明されているように、ロギング・ラスト・リソース(LLR)トランザクションはサポートされていません。

クライアントによって境界設定されたトランザクション

クライアントが、OTSクライアントAPIを使用してサーバー上でトランザクションを開始します。次に、このトランザクションからXidを取得し、トランザクションがコミットされるまで、このXidをリクエストごとに伝播します。トランザクションを開始するのはクライアントですが、コミット処理はすべてサーバー上で実行されます。

PKS<Øp‰a„aPK»~@OEBPS/jtatximp.htm‚g}˜ サード・パーティ・トランザクション・マネージャで管理されるトランザクションへの参加

12 サード・パーティ・トランザクション・マネージャで管理されるトランザクションへの参加

この章では、WebLogic Serverが、サード・パーティ・システム(外部トランザクション・マネージャと呼ばれる)が調整する分散トランザクションに参加する方法を説明します。WebLogic Serverの処理は、外部トランザクションの処理の一部として行われます。外部トランザクション・マネージャは、コミット処理の一部としてWebLogic Serverのトランザクション・マネージャを駆動します。これを、WebLogic Serverへのトランザクションの「インポート」と言います。

以下の節では、外部管理トランザクションの構成および外部管理トランザクションへの参加のプロセスについて説明します。

外部管理トランザクションへの参加の概要

WebLogic Serverのトランザクション・マネージャは、weblogic.transaction.InterposedTransactionManagerインタフェースを通じて、javax.transaction.xa.XAResource実装を公開します。外部トランザクション・マネージャは、InterposedTransactionManagerインタフェースにアクセスして、コミット処理時にWebLogic Serverトランザクション・マネージャのXAResourceを調整することができます。

外部トランザクション・マネージャのトランザクションをWebLogic Serverのトランザクション・マネージャにインポートする場合には、外部トランザクション・マネージャに従属マネージャとして、WebLogic Server介在トランザクション・マネージャを登録する必要があります。その結果、WebLogic Serverのトランザクション・マネージャは、インポートされたトランザクションの調整役としてWebLogic Server内で機能します。

WebLogic Serverでは、トランザクションのインポートに関して、次の2つの構成方式がサポートされています。

実装の詳細および制限に関してはいくつかの違いがありますが、どちらの構成もトランザクションのインポートについての基本機能は同じです。

  1. WebLogic Serverのトランザクション・マネージャをルックアップし、サード・パーティ・システムでの必要に基づいて、XAResourceとして登録します。

  2. トランザクション処理時に適切なトランザクション参加者を登録および登録解除します。

  3. 準備メッセージをWebLogic Serverのトランザクション・マネージャに送信します。このトランザクション・マネージャは、従属トランザクション・マネージャとして機能し、WebLogic Server内でトランザクション参加者の準備フェーズを調整します。

  4. コミットまたはロールバック・メッセージをWebLogic Serverのトランザクション・マネージャに送信します。このトランザクション・マネージャは、従属トランザクション・マネージャとして機能し、WebLogic Server内でトランザクション参加者の2フェーズ・コミット・プロセスの第2フェーズを調整します。

  5. 必要に応じて登録解除します。

クライアント介在トランザクション・マネージャでのトランザクションのインポート

WebLogic Serverでクライアント介在トランザクション・マネージャを使用して、サード・パーティのトランザクション・マネージャが調整するトランザクションに対して2フェーズ・コミット・プロセスを駆動し、WebLogic Server内にJMSリソースやJDBCリソースなどのトランザクション参加者を含めることができます。クライアント介在トランザクション・マネージャは、javax.transaction.xa.XAResourceインタフェースの実装です。クライアント介在トランザクション・マネージャには、サード・パーティ・アプリケーションから直接アクセスします。通常は、サード・パーティ・アプリケーションのゲートウェイからアクセスします。サード・パーティ・システムのトランザクション・マネージャは、準備メッセージおよびコミット・メッセージをゲートウェイに送信し、ゲートウェイがそのメッセージをWebLogic Serverトランザクション・マネージャに伝播します。そして、WebLogic Serverのトランザクション・マネージャが従属トランザクション・マネージャとして機能し、WebLogic Server内でトランザクション参加者を調整します。図12-1は、2つのトランザクション・マネージャとクライアント側ゲートウェイの間の対話を示したものです。

図12-1 クライアント側ゲートウェイを使用したWebLogic Serverへのトランザクションのインポート

図12-1の説明が続きます
「図12-1 クライアント側ゲートウェイを使用したWebLogic Serverへのトランザクションのインポート」の説明

図12-2は、外部トランザクション・マネージャ、WebLogic Serverクライアント側JTAオブジェクト、およびWebLogic Serverトランザクション・マネージャの間の対話フローを示したものです。

図12-2 クライアント介在トランザクション・マネージャを使用したトランザクションのインポート手順を示した状態図

図12-2の説明が続きます
「図12-2 クライアント介在トランザクション・マネージャを使用したトランザクションのインポート手順を示した状態図」の説明

クライアント側ゲートウェイを使用してWebLogic Serverの介在トランザクション・マネージャにアクセスするには、次の手順を行う必要があります。

クライアント介在トランザクション・マネージャの取得

クライアント側ゲートウェイにおいて、WebLogic Server介在トランザクション・マネージャのXAResourceをgetClientInterposedTransactionManagerメソッドで取得できます。例:

import javax.naming.Context;
import weblogic.transaction.InterposedTransactionManager;
import weblogic.transaction.TxHelper;
Context initialCtx;
String serverName;
InterposedTransactionManager itm = TxHelper.getClientInterposedTransactionManager(initialCtx, serverName);

サーバー名パラメータは、外部トランザクションに対して介在トランザクション・マネージャとして機能するサーバーの名前です。外部トランザクション・マネージャはクラッシュのリカバリ処理を行う際に、同じWebLogic Serverのサーバーに接続して、WebLogic Serverにインポート済の不明なトランザクションのリストを取得する必要があります。

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

介在トランザクション・マネージャからのXAResourceの取得

介在トランザクション・マネージャを取得したら、その介在トランザクション・マネージャに関連付けられたXAResourceオブジェクトを取得する必要があります。

import javax.transaction.xa.XAResource;
XAResource xar = itm.getXAResource();

クライアント介在トランザクション・マネージャの制限

クライアント側のゲートウェイを使用してトランザクションをインポートする際は、次の制限に注意してください。

  • クライアント側のゲートウェイでは、TxHelper.getServerInterposedTransactionManager()メソッドを使用できません。

  • 一度に使用できるWebLogic Serverクライアント介在トランザクション・マネージャは1つのみ。一度に2つ以上のクライアント介在トランザクション・マネージャ(異なるWebLogic Serverサーバーに接続している)を、トランザクションのインポートに使用しないでください(この制限の詳細、およびWebLogic Server介在トランザクション・マネージャでのトランザクション処理の詳細については、「インポート済みトランザクションのトランザクション処理」を参照)。

サーバー介在トランザクション・マネージャでのトランザクションのインポート

WebLogic Serverでサーバー介在トランザクション・マネージャを使用して、サード・パーティのトランザクション・マネージャが調整するトランザクションに対して2フェーズ・コミット・プロセスを駆動し、WebLogic Server内にJMSリソースやJDBCリソースなどのトランザクション参加者を含めることができます。サーバー介在トランザクション・マネージャは、javax.transaction.xa.XAResourceインタフェースの実装です。WebLogic Serverにサーバー側のゲートウェイを作成して、サード・パーティ・システムからそのゲートウェイにアクセスして、サーバー介在トランザクション・マネージャにアクセスします。サード・パーティ・システムのトランザクション・マネージャから、準備メッセージおよびコミット・メッセージがサーバー側ゲートウェイに送信されます。それらのメッセージは、そのゲートウェイからWebLogic Serverトランザクション・マネージャに伝播します。そして、WebLogic Serverのトランザクション・マネージャが従属トランザクション・マネージャとして機能し、WebLogic Server内でトランザクション参加者を調整します。図12-3は、2つのトランザクション・マネージャとサーバー側ゲートウェイの間の対話を示したものです。

図12-3 サーバー側ゲートウェイを使用したWebLogic Serverへのトランザクションのインポート

図12-3の説明が続きます
「図12-3 サーバー側ゲートウェイを使用したWebLogic Serverへのトランザクションのインポート」の説明

サーバー側ゲートウェイを使用してWebLogic Serverの介在トランザクション・マネージャにアクセスするには、次の手順を行う必要があります。

サーバー介在トランザクション・マネージャの取得

サーバー側ゲートウェイにおいて、介在トランザクション・マネージャのXAResourceを次のようにして取得できます。

import javax.naming.Context;
import weblogic.transaction.InterposedTransactionManager;
import weblogic.transaction.TxHelper;
InterposedTransactionManager itm = TxHelper.getServerInterposedTransactionManager();

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

介在トランザクション・マネージャを取得したら、XAResourceを取得する必要があります。「介在トランザクション・マネージャからのXAResourceの取得」を参照してください。

サーバー介在トランザクション・マネージャの制限

サーバー側のゲートウェイを使用してトランザクションをインポートする際は、次の制限に注意してください。

  • WebLogic Serverサーバーのサーバー側ゲートウェイでは、TxHelper.getClientInterposedTransactionManager()メソッドを使用しません。このメソッドを使用すると、パフォーマンスの問題が発生します。

  • 一度に使用できるWebLogic Serverサーバー介在トランザクション・マネージャは1つのみ。一度に2つ以上のサーバー介在トランザクション・マネージャ(同じスレッドにある)を、トランザクションのインポートに使用しないでください(この制限の詳細、およびWebLogic Server介在トランザクション・マネージャでのトランザクション処理の詳細については、「インポート済みトランザクションのトランザクション処理」を参照)。

インポート済みトランザクションのトランザクション処理

外部トランザクションをWebLogic Serverにインポートするには、外部トランザクション・マネージャまたはゲートウェイで、次の操作を行います。

xar.start(foreignXid, TMNOFLAGS);

この操作によって、現在のスレッドとインポート済トランザクションが関連付けられます。トランザクションとスレッドの関連付けが解除されるまで、他のサーバーに対する以降のすべての呼出しで、インポート済WebLogic Serverトランザクションが伝播されます。


注意:

WebLogic Serverトランザクション・マネージャでは、フラグが無視されます。外部Xidが同じWebLogic Serverサーバーにインポート済の場合、WebLogic Serverは現在のスレッドをインポート済のWebLogic Serverトランザクションに関連付けます。

インポート済みのトランザクションと現在のスレッドの関連付けを解除するには、外部トランザクション・マネージャまたはゲートウェイで次の操作を行う必要があります。

xar.end(foreignXid, TMSUCCESS);

WebLogic Serverのトランザクション・マネージャがフラグを無視することに注意してください。

インポート済みトランザクションのトランザクション処理の制限

インポート済みのトランザクションに関して、次の処理の制限と動作に注意してください。

  • WebLogic Serverトランザクションが開始されたら、ゲートウェイでは同じスレッド上でstartを再び呼び出すことができません。クライアント側ゲートウェイで、1つのクライアント介在トランザクション・マネージャで一度に呼び出すことができるのは、xar.startのみです。別のクライアント介在トランザクション・マネージャで(最初のトランザクション・マネージャでxar.endを呼び出す前に)、xar.startを呼び出そうとすると、XAER_RMERRのXAExceptionがスローされます。サーバー側ゲートウェイを使用して、クライアントまたはサーバー介在トランザクション・マネージャでxar.startを呼び出そうとすると、現在のスレッドにすでにアクティブなトランザクションが関連付けられている場合、XAER_RMERRのXAExceptionがスローされます。

  • WebLogic Server介在トランザクション・マネージャのXAResourceは、異なるWebLogic Serverサーバー上で、疎結合のトランザクション・ブランチ動作を示します。つまり、同じ外部Xidが異なるWebLogic Serverサーバーにおいてインポートされると、異なるWebLogic Serverトランザクションにインポートされます。

  • WebLogic Serverのトランザクション・マネージャは、トランザクション・ツリーをフラット化しません。たとえば、前にエクスポートしたWebLogic Serverトランザクションのインポート済トランザクションは、元のWebLogic Serverトランザクションとは別のブランチに配置されます。

  • 外部トランザクション・マネージャでは、WebLogic Serverにインポートされるすべての外部Xidが一意で、トランザクション破棄タイムアウト期間およびトランザクションのタイムアウト期間の合計値内で再利用されていないことを確認する必要があります。これを怠ると、ログ・レコードがWebLogic Serverトランザクション・マネージャで解放されなくなることがあります。その結果、クラッシュのリカバリが効率的に行われないおそれがあります。

インポート済みトランザクションのコミット処理

外部トランザクション・マネージャは、他のXAResourceを駆動するように、2PCプロトコルにおいて介在トランザクション・マネージャを駆動する必要があります。WebLogic Server JTA (EJBコンテナなど)に登録されたbeforeCompletionコールバックは、外部トランザクション・マネージャが介在トランザクション・マネージャのXAResourceを準備する際に呼び出されることに注意してください。afterCompletionコールバックは、XAResource.commitまたはXAResource.rollbackの間に呼び出されます。

WebLogic Server介在トランザクション・マネージャは、http://www.oracle.com/technetwork/java/javaee/jta/index.htmlの「Java Transaction API」に記載されているXAResource規約に準拠しています。

WebLogic Serverトランザクション・マネージャは、WebLogic Serverのすべての参加者の準備が正常に行われると、インポート済のトランザクションについて、prepareレコードを記録します。インポート済のトランザクションについてWebLogic Serverの参加者が2つ以上ある場合、トランザクション・マネージャはXAResource.commitが1フェーズ・コミットでもprepareレコードを記録します。

インポート済みトランザクションのリカバリ

外部トランザクション・マネージャのクラッシュのリカバリの間、外部トランザクション・マネージャは、WebLogic Server介在トランザクション・マネージャのXAResourceを再び取得し、これに対してrecoverを呼び出す必要があります。WebLogic Server介在トランザクション・マネージャは、準備されたトランザクションまたはヒューリスティックに終了したトランザクションのリストを返します。外部トランザクション・マネージャでは、準備されたトランザクションをコミットまたはロールバックするか、ヒューリスティックに終了したトランザクションに対してforgetを呼び出すかのいずれかの方法で、これらの不明なトランザクションを解決する必要があります。

PK%W‘Þ‡g‚gPK»~@OEBPS/intro.htmb$Û 概要とロードマップ

1 概要とロードマップ

この章では、『Oracle Fusion Middleware Oracle WebLogic Server JTAのプログラミング』の内容と構成について説明します。

ドキュメントのスコープと対象読者

このドキュメントは、WebLogic Server環境で動作するトランザクション対応Javaアプリケーションの構築に関心のあるアプリケーション開発者を対象としています。読者は、WebLogic Serverプラットフォーム、Java Platform, Enterprise Edition (Java EE)プログラミング、およびトランザクション処理の概念に精通していることが前提となっています。

このドキュメントの手引き

関連ドキュメント

このドキュメントには、JTA固有の設計および開発上の情報が含まれています。WebLogic Serverアプリケーションを開発、デプロイ、およびモニターするための包括的なガイドラインについては、以下のドキュメントを参照してください。

サンプルとチュートリアル

このマニュアルの他にも、トランザクション対応アプリケーションの開発に関するさまざまなコード・サンプルやチュートリアルが用意されています。それらのサンプルとチュートリアルはWebLogic Serverの動作を例示し、主要なアプリケーション開発タスクを実行する実際的な手順を示します。サンプル・サーバーは、Windowsマシンの「スタート」メニューから起動できます。Linuxなどのプラットフォームでは、WL_HOME\samples\domains\wl_serverディレクトリからサンプル・サーバーを起動できます。WL_HOMEは、WebLogic Platformの最上位のインストール・ディレクトリです。

Avitek Medical Recordsアプリケーション(MedRec)とチュートリアル

MedRecはWebLogic Serverに付属したエンドツーエンドのサンプルJava EEアプリケーションであり、一元的で独立した医療記録管理システムをシミュレートします。MedRecアプリケーションには、患者、医師、および管理者に対して、様々なクライアントを使用して患者のデータを管理するフレームワークが用意されています。

MedRecはWebLogic ServerとJava EEの機能を例示し、Oracle推奨のベスト・プラクティスを重要点として示します。MedRecはWebLogic Server配布キットに含まれており、Windowsマシンの「スタート」メニューからアクセスできます。Linuxなどのプラットフォームでは、WL_HOME\samples\domains\medrecディレクトリからMedRecを起動します。WL_HOMEは、WebLogic Platformの最上位のインストール・ディレクトリです。

このリリースでの新機能と変更点

WebLogic Serverのこのリリースに追加された新機能の一覧については、「Oracle WebLogic Serverの新機能」を参照してください。

PKKrÜ^g$b$PK»~@OEBPS/jtatxexp.htm€ÿ WebLogic Serverトランザクション・マネージャでのXAResourceの調整

11 WebLogic Serverトランザクション・マネージャでのXAResourceの調整

この章では、外部のサード・パーティのシステムが、WebLogic Serverトランザクション・マネージャにjavax.transaction.xa.XAResource実装を登録することによって、WebLogic Serverトランザクション・マネージャが調整する分散トランザクションに参加する方法について説明します。WebLogic Serverトランザクション・マネージャは、2フェーズ・コミット(2PC)プロトコルの一部としてXAResourceを駆動します。これを、「トランザクションのエクスポート」と言います。

サード・パーティ・トランザクション・マネージャがXAResourceインタフェースを実装している場合、トランザクションをエクスポートすることによって、サード・パーティ・トランザクション・マネージャとWebLogic Serverトランザクション・マネージャを統合できます。エクスポートしたトランザクションによって、サード・パーティ・トランザクション・マネージャは、WebLogic Serverトランザクション・マネージャの従属トランザクション・マネージャとして機能できます。

WebLogic Serverも、サード・パーティ・システム(外部トランザクション・マネージャとも呼ばれます)が調整する分散トランザクションに参加できます。WebLogic Serverの処理は、外部トランザクションの処理の一部として行われます。サード・パーティ・トランザクション・マネージャは、コミット処理の一部としてWebLogic Serverのトランザクション・マネージャを駆動します。これは、トランザクションのインポートと呼ばれます。

トランザクションにおけるサード・パーティ・システムの調整(トランザクションのエクスポート)の詳細は、以下の節で説明します。サード・パーティ・システムが調整するトランザクションへの参加(トランザクションのインポート)の詳細は、第12章「サード・パーティ・トランザクション・マネージャで管理されるトランザクションへの参加」を参照してください。WebLogic Server IIOP、WebLogic Tuxedo Connector (WTC)ゲートウェイ、およびOracle Java Adapter for Mainframe (JAM)ゲートウェイの内部では、その章で説明されているのと同じメカニズムにより、WebLogic Serverにおけるトランザクションのインポートおよびエクスポートが行われます。

以下の節では、サード・パーティ・システムを構成して、WebLogic Serverトランザクション・マネージャが調整するトランザクションに参加する方法について説明します。

外部XAResourceと分散トランザクションの調整の概要

WebLogic Serverトランザクション・マネージャが調整する分散トランザクションに参加するには、サード・パーティのシステムでjavax.transaction.xa.XAResourceインタフェースを実装し、そのXAResourceオブジェクトをWebLogic Serverトランザクション・マネージャに登録する必要があります。javax.transaction.xa.XAResourceインタフェースの実装に関する詳細については、以下のURLのJava Platform Enterprise Edition, v 5.0 API仕様を参照してください。

http://download.oracle.com/javaee/5/api/javax/transaction/xa/XAResource.html

トランザクション処理時は、サード・パーティ・システムのXAResourceオブジェクトを適切な各トランザクション・オブジェクトに登録する必要があります。

図11-1は、WebLogic Serverトランザクション・マネージャが調整するトランザクションにサード・パーティ・システムが参加するプロセスを示したものです。

図11-1 サード・パーティ参加者と分散トランザクション

図11-1の説明が続きます
「図11-1 サード・パーティ参加者と分散トランザクション」の説明

XAResourceオブジェクトをトランザクションに登録する際に使用する登録モードに応じて、WebLogic Serverは、適切な時にXAResourceオブジェクトを自動的に登録解除する場合があります。登録および登録解除の詳細は、「トランザクションにおけるXAResourceの登録と登録解除」を参照してください。XAResourceオブジェクトをWebLogic Serverトランザクション・マネージャで登録する処理の詳細については、「XAResourceのトランザクションへの参加の登録」を参照してください。

XAResourceのトランザクションへの参加の登録

WebLogic Serverトランザクション・マネージャが調整する分散トランザクションに参加するには、サード・パーティのシステムでjavax.transaction.xa.XAResourceインタフェースを実装し、そのXAResourceオブジェクトをWebLogic Serverトランザクション・マネージャに登録する必要があります。以下の処理のために登録が必要となります。

XAResource実装をWebLogic Serverトランザクション・マネージャに登録しないと、予期しないトランザクション・ブランチ動作を引き起こす可能性があります。XAリソースがWebLogic Server分散トランザクションに登録される前にこの登録を行わないと、WebLogic Serverトランザクション・マネージャはリソース名(ブランチ修飾子)としてXAResourceインスタンスのクラス名を使用します。これによって、望ましくないリソース名やトランザクション・ブランチの競合が発生する可能性があります。

各リソース・マネージャ・インスタンスが、自身を一度だけWebLogic Serverトランザクション・マネージャに登録するようにしてください。各リソース・マネージャ・インスタンスは登録時にリソース名によって識別されるので、リカバリ、コミット処理、およびヘルス監視時にシステムに過大なオーバーヘッドが加わり、関連する内部データ構造によって使用されるメモリーが増加し、内部マップの検索効率が低下します。したがって、スケーラビリティおよびパフォーマンスの理由から、異なるトランザクション・ブランチでXAResourceインスタンスをむやみに登録しないようにする必要があります。

JTA XAResourceでは明示的なトランザクション・モデルが採用されています。このモデルでは、Xidが常にXAResourceメソッドで明示的に渡され、1つのリソース・マネージャ・インスタンスがすべてのトランザクションを処理します。これは、暗黙的なトランザクション・モデルが採用されているCORBA OTSリソースと対照的です。このモデルでは、参加対象の各トランザクションに対して異なるOTSリソース・インスタンスが存在します。XAResourceを設計する際は、JTAモデルを使用する必要があります。

各外部リソース・マネージャ・インスタンスは、サーバーの起動時にWebLogic Serverトランザクション・マネージャにXAResourceインスタンスを登録する必要があります。WebLogic Serverでは、起動クラスを使用して、外部トランザクション・マネージャを登録できます。

WebLogic Serverトランザクション・マネージャにリソース・マネージャを登録する手順は次のとおりです。

  1. JNDIまたはTxHelperインタフェースを使用して、WebLogic Serverトランザクション・マネージャを取得します。

    import javax.transaction.xa.XAResource;
    import weblogic.transaction.TransactionManager;
    import weblogic.transaction.TxHelper;
    InitialContext initCtx = ... ; // initialized to the initial context
    TransactionManager tm = TxHelper.getTransactionManager();
    

    または

    TransactionManager tm = (TransactionManager)initCtx.lookup("weblogic.transaction.TransactionManager");
    

    または

    TransactionManager tm = (TransactionManager)initCtx.lookup("javax.transaction.TransactionManager");
    
  2. WebLogic Serverトランザクション・マネージャにXAリソース・インスタンスを登録します。

    String name = ... ; // name of the RM instance
    XAResource res = ... ; // an XAResource instance of the RM instance
    tm.registerResource(name, res); // register a resource with the standard enlistment mode 
    

    または

    tm.registerDynamicResource(name, res); // register a resource with the dynamic enlistment mode 
    

    または

    tm.registerStaticResource(name, res); // register a resource with the static enlistment mode 
    

さまざまな登録モードの詳細については、「トランザクションにおけるXAResourceの登録と登録解除」を参照してください。XAResourceの登録時に以降に使用される登録モードを指定しますが、その登録プロセスの間に実際にリソースを登録しているわけではありません。実際の登録は、(サーバー起動時ではなく)トランザクションで別のAPIを使用して行う必要があります。詳細については、「トランザクションにおけるXAResourceの登録と登録解除」を参照してください。

登録する各XAResourceインスタンスは、複数のトランザクションのリカバリおよびコミット処理に並列的に使用されます。JTA仕様バージョン1.0.1Bのセクション3.4.6で定義されているリソース共有をXAResourceインスタンスがサポートしていることを確認してください。


注意:

同じXAResourceの重複登録は無視されます。

リソースで新しいリクエストを受け付けなくなったら、WebLogic Serverトランザクション・マネージャからXAResourceの登録を解除する必要があります。XAResourceの登録を解除するには、次のメソッドを使用します。

tm.unregisterResource(name, res); 

トランザクションにおけるXAResourceの登録と登録解除

XAResourceが分散トランザクションに参加するには、XAResourceインスタンスがトランザクション・オブジェクトに登録される必要があります。登録モードに応じて、異なる処理を実行する必要がある場合があります。WebLogic Serverトランザクション・マネージャでは、以下の登録モードがサポートされています。

XAResourceはトランザクション・オブジェクトに登録しますが、登録モードが決定するのは、リソースをトランザクションに登録するときではなく、WebLogic Serverトランザクション・マネージャにXAResourceを登録するときです。「XAResourceのトランザクションへの参加の登録」を参照してください。

XAResource.startおよびendの呼出しは、コストがかかる場合があります。WebLogic Serverトランザクション・マネージャでは、これらの呼出しの数を最小化するために以下の最適化方法が提供されています。

WebLogic Serverトランザクション・マネージャではデフォルトで、TMSUSPENDフラグが指定されたXAResource.endを呼び出すことによってXAResourceを登録解除します。TMSUSPENDが指定されたXAResource.endが呼び出されると、カーソルが開いたままになるデータベース管理システムもあるので、可能なかぎり、TMSUCCESSを指定したXAResource.endを呼び出してXAResourceを登録解除するようにしてください。これを行うには、javax.transaction.xa.XAResourceのかわりにgetDelistFlagメソッドが含まれるweblogic.transaction.XAResourceインタフェースを実装します。詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.XAResourceに関する項を参照してください。

標準的な登録

標準的な登録モードでは、トランザクション・オブジェクトにXAResourceインスタンスを登録するのは一度だけです。また、同じトランザクションに同じブランチのXAResourceインスタンスを2つ以上登録することもできます。WebLogic Serverトランザクション・マネージャでは、すべてのXAResourceインスタンスに対して適切な場合にXAResource.endが呼び出されます(次の説明を参照)。WebLogic Serverトランザクション・マネージャでは、トランザクションのコミット時に、各ブランチが準備とコミットの呼出しのセットを1つだけ受け取ります。ただし、登録済の特定のXAResourceインスタンスの登録は無視されます。

標準的な登録では登録が簡素化されますが、特定のメソッド呼出しの間の中でリソースが全くアクセスされない場合には、XAResourceの不必要な登録および登録解除が生じる可能性もあります。

トランザクション・オブジェクトにXAResourceを登録するには、以下の手順に従います。

  1. TransactionHelperインタフェースを使用して現在のトランザクション・オブジェクトを取得します。

    import weblogic.transaction.Transaction; // extends javax.transaction.Transaction
    import weblogic.transaction.TransactionHelper;
    Transaction tx = TransactionHelper.getTransaction();
    
  2. トランザクション・オブジェクトにXAResourceインスタンスを登録します。

    tx.enlistResource(res);
    

XAResourceをトランザクションに登録すると、WebLogic Serverトランザクション・マネージャによって、以降のすべての登録解除(「トランザクションにおけるXAResourceの登録と登録解除」を参照)および再登録が管理されます。標準的な登録モードでは、WebLogic Serverトランザクション・マネージャは、以下の場合に同じトランザクションでXAResourceを再登録します。

  • リクエストが実行される前

  • 別のサーバーから応答が受信された後(WebLogic Serverトランザクション・マネージャは、別のサーバーにリクエストを送信する前にXAResourceを登録解除します)。

動的な登録

動的な登録モードでは、リソースの各アクセス前にトランザクション・オブジェクトにXAResourceインスタンスを登録する必要があります。この登録モードでは、各トランザクションに一度に登録できるXAResourceインスタンスは、各トランザクション・ブランチから1つのみです。WebLogic Serverトランザクション・マネージャは、最初のインスタンスが登録されてから登録解除されるまでの間、同じトランザクション・ブランチの別のXAResourceインスタンスの登録を無視します。

動的な登録では、XAResourceインスタンスの登録と登録解除は最小限に抑えられます。

XAResourceを登録する手順は、「標準的な登録」で説明した手順と同じです。

静的な登録

静的な登録モードでは、トランザクション・オブジェクトにXAResourceインスタンスを登録する必要はありません。XAResourceは、以下のイベントの際にWebLogic Serverトランザクション・マネージャによって、すべてのトランザクションについて暗黙的に登録されます。

  • リクエストが実行される前

  • 別のサーバーから応答が受信された後


    注意:

    静的な登録モードを使用する前に以下の点を考慮する必要があります。
    • 静的な登録モードではXAResourceを登録する必要がありません。ただし、リソースが特定のトランザクションで使用されない場合、不必要な登録および登録解除に繋がる可能性があります。

    • リソースがトランザクションで使用されない場合でも、問題のあるXAResourceによって、すべてのトランザクションが悪影響を受ける可能性があります。

    • 1つのXAResourceインスタンスを使用して異なるトランザクションとスレッドを一度に関連付けます。つまり、複数のスレッドの異なるXidについて、同じXAResourceインスタンス上でXAResource.startおよびXAResource.endを交互に呼び出すことができます。XAResourceがこのような関連付けパターンをサポートするようにする必要があります。これはJTA仕様では要求されていません。

    静的な登録には、パフォーマンスに対するオーバーヘッド、アイソレーションの問題、およびトランザクション関連付け要件が厳しいという理由があるため、十分に検討した上で慎重に使用する必要があります。


コミット処理

コミット処理の間、WebLogic Serverトランザクション・マネージャは、2フェーズ・コミットを行うため、トランザクション・マネージャに登録されているXAResourceインスタンスか、トランザクションに現在登録されているXAResourceインスタンスのいずれかを使用します。WebLogic Serverトランザクション・マネージャでは、各トランザクション・ブランチが準備とコミットの呼出しのセットを1つだけ受け取ります。JTA仕様バージョン1.0.1Bのセクション3.4.6で定義されているように、様々なスレッドから同時に複数のトランザクションのコミット処理を行うために、どのようなXAResourceインスタンスも使用できるようにする必要があります。

リカバリ

WebLogic Serverサーバーが再起動されると、WebLogic Serverトランザクション・マネージャは自身のトランザクション・ログ(正常に準備されたが、2PC処理の第2コミット・フェーズを終了していない可能性のあるトランザクションのログ・レコード)を読み込みます。WebLogic Serverトランザクション・マネージャは次に、これらのトランザクションのXAResourceのコミットの再試行を続行します。「XAResourceのトランザクションへの参加の登録」で説明したように、WebLogic Serverトランザクション・マネージャのリソース登録APIは、リカバリを目的としたXAResourceインスタンスのブート・ストラップにも使用されます。サーバーの再起動時にXAResourceインスタンスがWebLogic Serverトランザクション・マネージャに登録されていることを確認する必要があります。WebLogic Serverトランザクション・マネージャは、有効なXAResourceインスタンスがWebLogic Serverトランザクション・マネージャに登録されるまで、コミット呼出しを毎分再試行します。

トランザクション・コーディネータとして機能しているトランザクション・マネージャがクラッシュすると、コーディネータのトランザクション・ログにいくつかの不明なトランザクションが記録されないこともあります。したがって、コーディネータではサーバーの再起動時に、リソース・マネージャに対してXAResource.recoverを呼び出し、記録されなかった不明なトランザクションをロールバックする必要があります。コミットの再試行と同様に、WebLogic Serverトランザクション・マネージャは、有効なXAResourceインスタンスがWebLogic Serverトランザクション・マネージャに登録されるまで、5分間隔でXAResource.recoverを再試行します。

WebLogic Serverトランザクション・マネージャは、新しいXAResourceが最初にWebLogic Serverトランザクション・マネージャに登録される際、トランザクション・ログ・レコードにそのチェックポイントを記録します。サーバーの再起動時に、WebLogic Serverトランザクション・マネージャは、前にチェックポイントが記録され(トランザクション終了後にトランザクション・ログ・レコードから削除され)たすべてのリソースに対してXAResource.recoverを呼び出します。リソースがチェックポイント記録から削除されるのは、最後のPurgeResourceFromCheckpointIntervalSeconds間隔(デフォルトは24時間)にアクセスされていない場合のみです。したがっã2=ͦ、リソース・リカバリのオーバーヘッドを軽減するには、WebLogic Serverトランザクション・マネージャに登録されているリソース・マネージャ・インスタンスの数を最小限にする必要があります。

XAResource.recoverを実装する際は、以下に示すX/Open XA仕様で説明されているようにフラグを使用する必要があります。

リソース・ヘルス監視

問題のあるXAResourceに対してサーバー・スレッドを失わないように、WebLogic Server JTAには内部リソース・ヘルス監視のメカニズムがあります。リソースがアクティブであると見なされるのは、保留中のリクエストが存在しない場合、またはXAResourceの保留中のリクエストの結果がXAER_RMFAILではない場合です。XAResourceが2分以内にアクティブにならない場合、WebLogic Serverトランザクション・マネージャはXAResourceを応答なしと宣言します。XAResourceに対する新たなリクエストは拒否され、XAER_RMFAIL XAExceptionがスローされます。

2分という間隔は、maxXACallMillis JTAMBean属性を介して構成できます。これは管理コンソールでは公開されていません。maxXACallMillisは、config.xmlファイル内で構成できます。例:

<Domain>
....
<JTA
   MaxXACallMillis="240000"
/>
....
</Domain>

WebLogic Serverトランザクション・マネージャから通知を受信し、リソースが応答なしと宣言されようとしている際に、本当に応答なしかどうかをWebLogic Serverトランザクション・マネージャに通知するには、weblogic.transaction.XAResource(javax.transaction.xa.XAResourceを拡張)を実装し、これをトランザクション・マネージャに登録します。トランザクション・マネージャは、XAResourceが利用できないことを宣言しようとする際に、そのdetectUnavailableメソッドを呼び出します。XAResourceからtrueが返されると、利用できないと宣言されることはありません。XAResourceが本当に利用できない場合には、この機会にクリーンアップおよびトランザクション・マネージャへの再登録を行うこともできます。詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.XAResourceに関する項を参照してください。

Java EEコネクタ・アーキテクチャのリソース・アダプタ

WebLogic Serverトランザクション・マネージャに直接登録する他に、Java EEコネクタ・アーキテクチャのリソース・アダプタ・インタフェースを実装することもできます。リソース・アダプタをデプロイする際、リソース・マネージャのXAResourceは、WebLogic Server Java EEコンテナによってWebLogic Serverトランザクション・マネージャに自動的に登録されます。

詳細は、『Oracle WebLogic Serverリソース・アダプタのプログラミング』を参照してください。

実装のヒント

以下の節では、WebLogic Serverトランザクション・マネージャでのトランザクションのエクスポートとインポートのヒントについて説明します。

WebLogic Serverトランザクション・ログの共有

WebLogic Serverトランザクション・マネージャは、ゲートウェイなどのシステム・アプリケーションで共有されるようにトランザクション・ログを公開します。これによって、高速ロギングのためにWebLogic Serverトランザクション・マネージャの一括(バッチ)処理のトランザクション・ログ最適化をシステム・アプリケーションで利用できます。トランザクション・ログ・レコードは適時に解放することが重要となります(WebLogic Serverトランザクション・マネージャは、トランザクション・ログ・ファイル内のすべての記録が解放された場合にのみトランザクション・ログ・ファイルを削除します)。これを行わないと、トランザクション・ログ・ファイルが多数作成され、コミット済みのトランザクションの多くが再コミットされ、極端なケースでは、循環衝突やトランザクション・ログ・ファイルの上書きが発生する可能性があります。

WebLogic Serverトランザクション・マネージャは、トランザクション・ログ機能インタフェースweblogic.transaction.TransactionLoggerを公開しています。これはサーバー上でのみ使用でき、以下の手順で取得できます。

  1. サーバー・トランザクション・マネージャを取得します。

    import weblogic.transaction.ServerTransactionManager;
    import weblogic.transaction.TxHelper;
    ServerTransactionManager stm = (ServerTransactionManager)TxHelper.getTransactionManager();
    
  2. TransactionLoggerを取得します。

    TransactionLogger tlog = stm.getTransactionLogger();
    

XAResourceのログ・レコードは、トランザクション・ログに記録されるために、weblogic.transaction.TransactionLoggableインタフェースを実装する必要があります。weblogic.transaction.TransactionLoggerインタフェース、およびTransactionLoggerインタフェースの用途に関する詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.TransactionLoggerに関する項を参照してください。

トランザクションのグローバル・プロパティ

WebLogic Server JTAトランザクション・オブジェクトは、ローカルおよびグローバルのプロパティに関連付けられます。グローバル・プロパティは、トランザクション伝播コンテキストでサーバー間を伝播され、トランザクション・ログにログ・レコードの一部としても保存されます。トランザクションのグローバル・プロパティにアクセスするには、以下の手順に従います。

  1. トランザクション・オブジェクトを取得します。

    import weblogic.transaction.Transaction;
    import weblogic.transaction.TransactionHelper;
    Transaction tx = TransactionHelper.getTransaction();  // Get the transaction associated with the thread
    

    または

    Transaction tx = TxHelper.getTransaction(xid); // Get the transaction with the given Xid
    
  2. トランザクション・オブジェクトのプロパティを取得または設定します。

    tx.setProperty("foo", "fooValue");
    tx.getProperty("bar");
    

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

TxHelper.createXid

TxHelper.createXid(int formatId, byte[] gtrid, byte[] bqual)メソッドを使用するとXidを作成できます。作成したXidは、たとえば、リカバリ時にWebLogic Serverトランザクション・マネージャに返すことができます。

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

リソース登録名の変更点

このリリースでは、XAデータ・ソース構成のリソース登録名の動作が変更されました。以前のリリースでは、JTAの登録名はデータ・ソースの名前のみでした。今後は、データ・ソース名とドメインの組合せになります。

JTAに登録されたすべてのリソースには、対応する実行時MBeanが存在し、MBeanを通じてそのリソースのXA使用状況の統計が公開されます。今回の変更により、MBeanのJMX ObjectNameが変わる(修飾される)ため、既存のアプリケーションでそのような実行時MBeanのJMXルックアップを名前に基づいて実行している場合は、何らかの影響を受ける可能性があります。旧リリースでは、ドメインmydomainのmydatasourceという名前を持つデータ・ソース構成の場合、JTAリソースの実行時MBeanは、次のようなオブジェクト名で登録されていました。

com.bea:ServerRuntime=myserver,Name=mydatasource,Type=TransactionResourceRuntime,JTARuntime=JTARuntime

このリリースでは、次のように修飾されたオブジェクト名が使用されます。

com.bea:ServerRuntime=myserver,Name=mydatasource_mydomain,Type=TransactionResourceRuntime,JTARuntime=JTARuntime

トランザクション・ブランチ修飾子は、JTAリソース登録名からも派生します。そのため、アップグレード時に存在するXAデータ・ソースの保留トランザクション・ブランチは、アップグレード後にリカバリできないことがあります。アップグレードは、データベース・リソースに保留トランザクションが残っていない状態で実行することをお勧めします。保留データベース・トランザクションが残っていると、場合によってはデータベース管理者がそれらを手動で解消することが必要になります。次を参照してください。

このリリースでは、登録名の修飾を無効にするための次のようなシステム・プロパティが新たに使用できるようになりました。

-Dweblogic.jdbc.qualifyRMName=false

FAQ

JTAに関するその他のドキュメント

接続ベースのリソース使用のシナリオについては、JTA仕様1.0.1Bのセクション4.1を参照してください。トランザクション・マネージャとリソース・マネージャの間のJTA対話について説明されています。JTA仕様はhttp://www.oracle.com/technetwork/java/javaee/jta/index.htmlにあります。

PK…ôô<½2½PK»~@ OEBPS/toc.ncxºEì Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1) Cover 目次 Oracle Fusion Middleware Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1) はじめに 概要とロードマップ トランザクションについて トランザクションの構成 トランザクションの管理 トランザクション・サービス Java Transaction APIとOracle WebLogicの拡張機能 ロギング・ラスト・リソース・トランザクションの最適化 EJBアプリケーションのトランザクション RMIアプリケーションのトランザクション WebLogic ServerでのJDBC XAドライバの使い方 WebLogic Serverトランザクション・マネージャでのXAResourceの調整 サード・パーティ・トランザクション・マネージャで管理されるトランザクションへの参加 トランザクションのトラブルシューティング Copyright PKHäô¿ºPK»~@OEBPS/cover.htmO°ý Cover

Oracle Corporation

PK[×ßpTOPK»~@OEBPS/thirdpartytx.htm‰bv WebLogic ServerでのJDBC XAドライバの使い方

10 WebLogic ServerでのJDBC XAドライバの使い方

この章では、WebLogic Serverでの様々なXA JDBCドライバの使用方法について説明します。

XAドライバの概要

この項では、分散トランザクションにおけるWebLogic ServerでのXA JDBCドライバの使い方について説明します。これらのドライバは、WebLogic Server接続プールとDBMSの間の接続を提供します。分散トランザクションで使用するドライバは、後に「/XA」が続くドライバ名(Oracle Thin/XA Driverなど)によって指定されます。

XAドライバの表

次の表に、これらのJDBC/XAドライバをWebLogic Serverで使用する場合の確認済の機能について示します。

表10-1 2層JDBC/XAドライバ

ドライバ/データベースのバージョン説明

Oracle Thin Driver XA

「Oracle Thin/XA Driverの使い方」を参照してください。

Sybase jConnect/XA

  • バージョン6.0

  • バージョン5.5

  • Adaptive Server Enterprise 12.0

「Sybase jConnect 5.5および6.0/XA Driverの使い方」を参照してください。


Oracle Thin/XA Driverの使い方

WebLogic Serverに付属するOracle Thin Driver 10gは事前に構成され、そのまま使用できる状態になっています。ドライバを更新する場合や異なるバージョンを使用する場合は、『Oracle WebLogic Server JDBCのプログラミング』の「Oracle Thin DriverでのOracle拡張機能の使用」を参照してください。

WebLogic ServerでOracle Thin/XA Driverを使用するための情報を以下の節で示します。

Oracle Thin/XA Driverのソフトウェア要件

Oracle Thin/XA Driverのソフトウェア要件は次のとおりです。

  • Java 2 SDK 1.4.x以降。


    注意:

    Java 2 SDK 1.4.Xで使用できるバージョンは、Oracle Thin Driver 10gおよび9.2 (ojdbc14.jar)のみです。

  • XAトランザクション・サポート用に構成されたOracleサーバー。

Oracle Thin/XA Driverの環境の設定

以下の節では、Oracle Thin/XA Driverの環境を設定する方法について説明します。

WebLogic Serverの構成

『Oracle WebLogic Server JDBCのプログラミング』の「Oracle Thin DriverでのOracle拡張機能の使用」を参照してください。

XAのデータベース・サーバーでの有効化

XA用のデータベースを準備するには、以下の操作を実行します。

  1. システム・ユーザーとしてsqlplusにログオンします(sqlplus sys/CHANGE_ON_INSTALL@<DATABASE ALIAS NAME>など)。

  2. 次のコマンドを実行します。@xaview.sql

    スクリプトxaview.sqlは、$ORACLE_HOME/rdbms/adminディレクトリにあります。

  3. 以下の権限を与えます。

    • grant select on v$xatrans$ to public (or <user>);

    • grant select on pending_trans$ to public;

    • grant select on dba_2pc_pending to public;

    • grant select on dba_pending_transactions to public;

    • (Oracle Thin driver 10.1.0.3以降をお使いの場合)

      grant execute on dbms_system to <user>;

上の手順をデータベース・サーバー上で実行しない場合、通常のXAデータベース問合せと更新は正常に動作できます。ただし、クラッシュ後の再起動に続き、WebLogic Serverトランザクション・マネージャがリカバリを行うときに、OracleリソースのリカバリはXAER_RMERRになり失敗します。クラッシュのリカバリは、XAリソースに対する標準的な処理です。

Oracle Thin/XA Driverの構成プロパティ

次の表に、JDBCデータ・ソースの構成のためのサンプル・コードを示します。

表10-2 Oracle Thin/XA Driver :接続プール構成

プロパティ名プロパティ値

Name

oracleXAPool

URL

jdbc:oracle:thin:@serverName:port(typically 1521 on Windows):sid

DriverClassname

oracle.jdbc.xa.client.OracleXADataSource 

Database Username

Scott

Properties

user=scott

Test Table Name

DUAL


Sybase jConnect 5.5および6.0/XA Driverの使い方

Sybase jConnect 5.5および6.0/XA Driverを使用する場合の重要な構成情報とパフォーマンス問題を以下の節で示します。

XAをサポートするためのSybaseサーバーの構成

データベース・サーバーで環境を設定するには、以下の説明に従います。

  • sp_configure "enable DTM",1を実行して、トランザクションを有効にします。

  • sp_configure "enable xact coordination",1を実行します。

  • grant role dtm_tm_role to <USER_NAME>を実行します。

  • SYBASE_INSTALL\OCS-12_0\sample\xa-dtmサブディレクトリにあるサンプルのxa_configファイルを、3レベル上位のSYBASE_INSTALLへコピーします。SYBASE_INSTALLは、Sybaseサーバーのインストール・ディレクトリです。例:

    $ SYBASE_INSTALL\xa_config
    
  • xa_configファイルを編集します。最初のxaセクションで、サンプル・サーバー名を適切なサーバー名に変更します。

トランザクションを実行するときのデッドロックを防ぐために、デフォルトで低レベル・ロックを有効にします。

  • sp_configure "lock scheme",0,datarowsを実行します。


    注意:

    現在、jConnect.jar、jconn2、およびjconn3.jarは、WebLogic Serverの付属ファイルではありません。ただし、Sybaseドライバは、Sybaseから直接ダウンロードできます。

XAとSybase Adaptive Server

XA接続が適切にサポートされているのは、Sybase Adaptive Server Enterprise 12.0以降のバージョンのみになります。WebLogic ServerとのXA接続はSybase Adaptive Server 11.5および11.9ではサポートされていません。

Sybase Adaptive Serverにおける実行スレッドとトランザクション

Adaptive Server 12.0より前のバージョンでは、トランザクションのすべてのリソースが、サーバー上の単一のタスクによって非公開で所有されていました。サーバーは、トランザクションを開始したタスク以外のタスクとはトランザクションを共有できませんでした。Adaptive Serverバージョン12.xには、XA準拠のトランザクション・マネージャ(WebLogic Serverなど)によって使用されるサスペンドおよび結合のセマンティクスに対するサポートが含まれています。トランザクションは異なる実行スレッド間で共有できます。つまり、1つの実行スレッドに関連付けることはできません(デタッチ状態)。

デタッチされたトランザクションに対するタイムアウトの設定

Sybaseサーバーでは、dtm detach timeout periodを設定することで、分散トランザクション・ブランチがデタッチ状態(関連付けられた実行スレッドがない状態)のままでいる時間(分単位)を設定できます。この時間が経過すると、DBMSは自動的にトランザクションをロールバックします。dtm detach timeout periodは、データベース・サーバー上のすべてのトランザクションに適用されます。個々のトランザクションに対しては設定できません。

たとえば、10分のデタッチ状態が経過した後、自動的にトランザクションをロールバックするには、次のコマンドを使用します。

sp_configure 'dtm detach timeout period', 10

WebLogic Serverでトランザクションがタイムアウトする前にデータベース・サーバーによってトランザクションがロールバックされないように、dtm detach timeout periodはトランザクションのタイムアウトより大きい値に設定する必要があります。

dtm detach timeout periodの詳細は、Sybaseのドキュメントを参照してください。

Sybase Adaptive Serverでのトランザクションの動作

Sybaseサーバーでグローバル・トランザクションが開始されているが、完了していない場合、そのトランザクションの結果は、破棄される前のトランザクションの状態によって異なります。

  • xa.end呼出しの前にクライアントが終了した場合、トランザクションはロールバックされます。

  • xa.end呼出しの後にクライアントが終了した場合、トランザクションはデータベース・サーバー上に残ります(すべての関連するロックを保持します)。

  • アプリケーションがxa.startを呼び出したが、xa.endをまだ呼び出していないときに不意に終了した場合は、データベース・サーバーが即座にトランザクションをロールバックし、トランザクションによって保持されていたロックを解放します。

  • アプリケーションがxa.startおよびxa.endを呼び出し、不意に終了した場合は、データベース・サーバーは、dtm detach timeout periodで指定した時間が経過した後でトランザクションをロールバックし、トランザクションによって保持されていたロックを解放します。「デタッチされたトランザクションに対するタイムアウトの設定」を参照してください。

  • アプリケーションがxa.startおよびxa.endを呼び出し、トランザクションの準備が完了していたときに、アプリケーションが不意に終了した場合は、正常にリカバリできるようにトランザクションは存続します。トランザクション・マネージャはrollbackまたはcommitを呼び出し、トランザクションを完了する必要があります。

Javaクライアントの構成プロパティ

Javaクライアントを実行する場合の以下の構成プロパティを設定します。

表10-3 Sybase jConnect 5.5/XA Driver : Javaクライアント接続プロパティ

プロパティ名プロパティ値
ds.setPassword
<password> 
ds.setUser
<username> 
ds.setNetworkProtocol
Tds
ds.setDatabaseName
<database-name> 
ds.setResourceManagerName
<Lrm name in xa_config file> 
ds.setResourceManagerType
2
ds.setServerName
<machine host name> 
ds.setPortNumber

port (通常は4100)


Sybase jConnect 5.5および6.0/XAの確認済みの問題

次に、既知の問題とOracleの回避策を示します。

表10-4 Sybase jConnect 5.5および6.0の既知の問題と回避策

説明Sybaseのバグコメント/WebLogic Serverの回避策

setAutoCommit (true)を呼び出すと次の例外がスローされます。

java.sql.SQLException: JZ0S3: The inherited method setAutoCommit(true)
cannot be used in this subclass. 

10726192

回避策はありません。jConnect 6.0でベンダーにより修正済みです。

分散トランザクションでドライバを使用する場合、XAResource.end(TMSUSPEND)に続けてXAResource.end(TMSUCCESS)を呼び出すと、XAER_RMERRになります。

10727617

WebLogic Serverでは、このバグに対する内部的な回避策を提供しています。

データ・ソースの接続プールのプロパティをXAEndOnlyOnce="true"に設定します。

ベンダーによる修正がリクエストされています。


その他のXAドライバの使い方

その他のXA準拠JDBCドライバを使用するためには、ドライバ・クラス・ライブラリのパスをCLASSPATHで指定した上で、ベンダーの説明に従って操作を行う必要があります。

PK_ž*çŽb‰bPK»~@OEBPS/img/client_interp_tm.gif]>¢ÁGIF89a„÷€€€€€€€€€ÀÀÀÀÜÀ¦Êð.0N~h88{--DDDIIIUBBmVVzJJzKKpSSaaabaaooovvvžšŸ77‰<<‹<<³¤%%ÊÌÌÌÌÍÍÌËË Ë Ë ÌÎ Î Î Ï ÏËËÏÊÒÒÊ Ê""Ê%%É))É,,É--É//É88È;;Ò Ó""Õ++Õ--Ö11×77Ø::Ø<<Ù??ÇIIÇKKÇLLÇPPÆZZÚDDÛIIÛJJÜOOÑRRÝWWÅiiÅmmÅrrÅwwÅxxÄ{{Ä}}Äßaaàccàeeájjäxx‹‹‹¦¦¦³³³Ä‡‡ÃÃŽŽÃ““Ô”ššÂÓ……Â¥¥Â¦¦Á««Á®®Á³³ÁµµÁ¶¶ÀººÀ»»À½½À¿¿ç††èŒŒé‘‘ê˜˜ëìžžìŸŸí££í¦¦î©©ð³³ñ»»ò½½ò¿¿ÀÀÀÊÊÊÝÀÀÝÂÂÐÐÐÑÑÑÜÕÕØØØÛÛÛòÀÀóÃÃóÅÅõÍÍöÑÑ÷ÙÙøÛÛøÝÝâââçççéééìììùããúççüîîóóóüññüòòý÷÷þùùþûûÿþþÿÿÿÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,„þ[ H° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cʜI³¦Í›AUÚɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§=qJJµªÕ«X³j-Yé€×¯`ÊK¶¬Ù³hÓª]˶­Û·pãÊ»µ®Ý»xóêÝ˗a×¹€ L¸°áÃiû*^̸±ãǐþEL¹²å˘3›Ì¹³çÏ C£œ¬¹´éÓ¨S‡ͺµë×°?“VM»¶íÛncëÞÍ»·ï™³q Nœöïãȓ+_þ0xñçУfN½ºõ뭝Kßν;ZìàÃþ‹_W»÷ó蹓_Ͼ½{•æÓ˟û½ýûøóGŒO¿¿ÿÒú(à€öñ÷߁Fà‚ 6Ȝ F(!\Vhá…ÙM¨á†saèᇠ*!‡$–x@ˆ(¦¨bU#šè¢„+Æ(ãŒ,µøâÿѨ㎬Œår\ùJ!Éò–¿¡e-у˝Kk€« #²½ÍÓL»ta/eôËf&D˜òkˆ3™LP-“™·ÃB ©°aR³š˜ºfŒžEÎi5әÓ,5w=cf¯jë×ÏéÍãèœÛþçŠÊ™¹vÚΜù› ;ýPw t„½`=‘sO|JIŸ)â'?JÐw*ô¢ž{&0ë‡NŽt–½D# Ð~ގ~5!E=*Í¢4¡[kguÒ⌔¤¤ EªÒŠòt!2µàD¹9Ӛ>ê¦(Ú¨NïWҌ´œ,ujF}*³¥õAFMRC¤Tꔞô4¡L×éUü¥Ó~•*H³¨­jê˜pd+ Üʨ¥V‰¦rµ ]몵»æµ‡{ ¬^ðúWÕö°w!laQƒØÆjE±‹5cÃ;mb¤kDuT1[»¾f;¬f&‹ŽZö!ÜægÒ9jT›«eþínB+Z9‘¶:ð\hKwº[ˆ´¦ê,¡Z#8ÛÚ>ñ¶ÌÉ-l7ÊTöu¹S}npUª7å 4d­ v¥ëÚ·2È¥Žu©:Tof—o/ ¦p«k^ᒋ¼-/k¼û]=…w9㍪Oß©Zý.ô·gµ,|W:]î:ª¾[¼¯ròkÌosÀò|0u£Ë[7÷ª.Í‚•¥àä0X­äM­OÛÓõÆ4³ñtO8ß s¸ÃÈ1­…÷+T–¦×¹ 07Ï9c7®"rqaìa Ž•¹.’MzÂö:LÇN.!v=Ë\²‚†¾B ‘Sdß`9ˀÙ2»Ü›/ƒYQbŽŸþ‹zæ¥ùÍ#1s›ßç:DÎsn‹÷¼<çy-|ôEüüçL úÐû)´ÍhÉ(šDŽôBýè²HúÒ¡t¥oˆéN Dӛn£o$˜Z…ˆØʞ–b¨'éag3{ê”fªÉ¨ÅÈý+X÷‚Kìœ=ٕ•œ°~&×\“ù½:Ö®–mcuëfãÔ·‰—ÀR…ë[SÆÖçÙf²Qìrɺٮþ%´^ÖÏn{sÞ6²··ú_pw¯Œ›ö¼˜ëk[Û;Ú^7·‘­oS¿Ä½ç6‰{nr ¼àξe»[’ðÁ›UòŽ8Æ ç6Î[ÔY¼{¥À]&ßã÷ËþÐknr£ 7¹Â¶3„÷»ÁæuyºéÚò²8ä#7«koÎÎ A;ڏ·Ä}vñŒËzEG[Ԅþ® C\uö5÷Á9:pd[ï‚ún8íXð¬Ûï¿5ë·9iŽu“_¢2?»ÚI I3z|ÞB?úÓ 8÷ºG\[q·˜Ó‡~wðÄØ]7ûËOüw™ãü$€7¸áK]øÀ«|ìnm¹ãמöu3^ñgÐρ¾q¹ËîF×ûÅEO+”}î¦'½e@.xÌ >ìN¹±µ¾u¯»þìÛ¶ºäUÎû›îþ÷ê®<ÂÁjxÍ»}èqºÜïMzÑïÛtG}ߧu~·þ÷ƒ¯'åþß{‘$^òf½¼EŸ{¤b¿õ\Ÿ|°/OûölèFç;Óë½üÓ'¿è£=ߗÿñÆ ÷â—l²g}®Ñ~¬t~8|êw}–7xmw|ñÇ@åC7ŒÓ|Û²>§|˜¬GyáWrb¥€(¸J˜S^WU;‡nMæsª¡zG·>x²k¬v%¨dFZ7#_Ô<ù§|4ÈBh"Y±ƒ³†F¸G/(}ü÷ƒa5Dh9x„Z‘„)҃Lƒ0¸jtA…‘†…õ‡Mȅ]¸ž•y^È'`è|b¸…dx"fh{ǖ†S²†{}29×bK'f…!T„V‡.á"Aþ‡†ågþ„È,+rDó'}x˜ Ax‘øP‡X~¸Ú7|WgsêÂlÇzSq‰sȃí¢§—t2‰…¡ŠT‰+W™x{e'Šuâ‰芈ˆ‰1ñ‰haŒÑD—qæÊÛ!mÃwÏÓ@ÇsŠ×kb}LNEe:÷u<×T»˜o؀ ó}½x!W#§‹3wrÓ¨‚7{æ8…ßÆ}‰gˆ{ñ~è0òdžNØ|¨Xb(&Ðx‚ ¸}Ûp»÷oÚØ`Â׉±–SÁ‡ySgy´è[=åÿȍ²x}ɸ7Ž/÷2!ç!mõֈÕ}ü‡v·})ÙmÙ}äȍÉþ€Ý˜ù“ˆW‰-¹’ü֒YŽ@É{(ÈsæØuÙD”á‘Þ’¦— t@Ó'’&)=¹÷èG1 ÅG69‘3‰’|j·Š(vê8”Å~ù“5¹•>¹–eW‘w¶KL)•!©ùh—'Y•¶—‘^™~Z9ghv"gplY&ç—Yy#h‰é'—7iˆé—xӓMV˜‹ù—j JÙuIt÷8z&©—÷Ǐ|)pi˜©˜dnméàG‘e™vo©š2Y‘”y9„É9fÙU«™}¨ÖgtM·ôvhy§%`ÙsW93h){˜XÞ(”à˜s+x˜Êþ–yÀöœRvÀ—€T#›®‡~<‰›ÙÇ×R6oˆftxÚÉ›XxՉžš™œ¹„íï‰ñI8FŸ=‰Ž,˜–+ˆVs™ĸŸ¡ÒŸ¹¨H`èˆÃ ¢æ {¡Oz šgל Dúé”SI¡ÖñŽ ø¡m‚¡â/P(!J'툋€2Êh1§†!ºCH" Ÿ¡[ô3”â)ð(XOöŸ‚“£Ë©£Ò£Iô£+æ '—÷zø9YIÚ'*ªŒ-ê¢È'4Èè¥Èٌê![óY Øˆ Ý¹Ž0¡ëח㨖JúHWz§âF å¦¦.¹ )eZ’ ÙˆþÌè@6…¦å8–^9€Ã5›Yw–ê6vpzx:ˆ¥¹¨þè%!¥w[8¢¡)ø¦lѧ’ù›Ùˆ 蚣êruêH5WªæyŸ}j|Å©I÷3@ˆ«¢©«g T‡7©x–9«)QŒz•٘Hú«-è'¨Ž´©Ž˜—J­÷–O¢Êø9™'ÊpÏ՝<&‡{z¤‡õªöy®™©©µ „¢i­ö7š¡ê«ÿS·“­Ñª®*§º“àg¯ò§éѤ3•Å9°bJ}­èo‹·ª„Ù°ÑøªH⹧Áê°×©®\¸¡¾Æ•¿ÁŽ‚±×°`Rš|8› ‹¢¡¨¬ßTi_šþÍæ±(;£0û€:1[g";g7 g9Ûf;ûf={f?›fA fC+fE›eG»eI+dKKdMëbO cQ»aSÛaU‹`W«`Y[_[{_]û]_^ak\$¡ ¬¶j‹Fl oq‹ åà b·x»h"±°¬á·€‹F‚ …‡K·ÏQP Â¸ŽË·!‘¸ A¹]d¹¢¹û·µ¸û¸Ÿ+¹ ¡¹œAºQdºžºŸ¡º6ÑP º‘ i#ÁºA»Dd»»¡»1ạ‹)¯+ºÁ»|A¼1d¼Š¼‹¡¼5â¹±{)Á+»}˹™K½cþļ{½Åk½Wá»Ï )ÑË!$¡½uA¾ñc¾w¾x¡¾êYá ¾¿+¾³Ë½«K¿\ľ[¿åk¿Tá½°…Ó;¸¡¡¿–CÀXaÀYÀ Jïû( \ƒ“Ë¿¥+Á§KÁ©kÁõ+ÀÝë¼ÿ+¼¡À8a¾(0aÂ6aÂ#ÜÂ$¼*Ü1<3Ü L7\9,œî¿ðû½J2¿œÁÃ*|Ä)Là QÃ(aÄ0\Ä3üÂ0±Ã!ŒÁ<Ä¥ÒÃ@œ( #B¼¹XìH\Â'œÄeŒL|N¬iÌR|ÂmœT|s\Åa<þû)]œI_\½aLÂþGüÂ-|ƁŒÄ‚,ÈeœÈ‡¬Ä,Ü o<È4ɔ ÉdìÈpŒÈFLɛlȊœÉŽŒÈ˜ ʋÜÉ%üȤlÉq\Ç5ÁÊ6áÊ‘ÇÀëÃAÀ`\ÈpLȆ¬Ä±Ë–|Ɵ<ÆÁÌË¿œÈÀÌËŒ̹L̐ìËÅìËÉ|ÌÒ\ÌÈ Í¿¬Êº¼ÌÎ ÍÛ¼Ì Ë2Î3!Î!ËÐKË<ºV\»öÍÔLÈaÍÓÜÍ×LÏï\ÏÙ|ÍÄlÏúÌÄôÇμÏùͨ\Ãü<ÏÍäü =ÅëLæüÃÁw˜+Ì.œÏ¸ü̒ìÎÿ<É-ÐøœÊ.ÌÏkœÉö,þÉ( Ï ÐÔ¼Í!­Ë1Íџ¬ mÃmÑ9ݑ¬ÇèìŶìÇ}Ï"­ÌDÝÒ÷|Ð#ÔmÐÌ|ÒÝÔF}ÉL=Ò»,ÏUÕúÌÒqÓ,áÕ8]Ñ8ÑüÓ|ÔÜÎÚ<ÕKÕíÒcœÔnÔ&M՞L×ÀüÖY=ÕýÖÁ¬×ß¼Óì,ÖDœdÍÅf ã+ØÛûǨǗ|ÊkÜÈ=×Í ÒÍɒ½Ù }Òý\Ðû\ɔ}Ùõ,ÅZ]ÚU}ّ=Úq,`­¯½±­‡({¬Ø}œÖbÝÚUÁÛ÷áہMØ,ܝ1Û QہrÛ²ØÄÍÍÌuÜëþ×aÜ&aÝ'ÝÜ€¢Ü¤”Û•Ë¿*}Ò=Ýol‰°§`ӌ½¼ííÜïÝܝ'ޝ#à]Ø>d5ð‚Ð ¬ÐÕñÝغ¡Ý1ßxRߪtßWLD˜Ð(=Pê]ŽÖ¯Qáaàq‚àýÁÜ·LDž€,0ÂûÝßÿÝ ®ÎÍ­Ó+ÎÓZÜÁÒKћKdPã6~ã8žã:¾ã<Þã>þã@äB>äD^äF~äHNY`. á~ )>¼ÞQ®ápÂá°¤àÅ &PÒ^þå`æb>æd^æf~æhžæj¾ælÞæl¾ß"Ð`¸S.à†ÝÓ³¼Å@-ãþÕÛånþç€è‚>è„^è†æ'ð@ç-ž»užVž&Xn³Z>Á~~蘞难éœÞé(çrÎèþ裁çç¬çgÍçi…Ðê®þê°ë²>ë´^ë¶~븞뺾ë¼Þë¾þëÀ^MáêåLêyQå¦.ÑÜȞÑ>%!>âŸÎßþíÚÊnÓíÛÞ¾ œØô-îßmáøC þàƾÞÁºåÆñîÑíÁì/îÓ¨ŽÛæ¾à?¤ßØ~âàÀ]Þònô¾öîù>î _îªލþ9˜ÐìŽÌ;ðñŽ¯ ?“&ﲕÎâiäþî˜ ÙÚ¦Œ×ª\ðíþíÜóqÖìeÝðö½ï[ñÇkŀýؗ¬Õ)½Ö±ñÒ.ó"éhò¼4ò»kôcò[ÝÏQ¿×Ç Õ)/D/J%]¯î—Ëó\ÅðnÕÕlõK]ÝNŸÀm¿ÀOî.÷ ŽóÃ]òdõNìÏ,ôkõo[_Ÿ$…ß«aÏïכ÷îŒÍR ×}×SÿY?ïßH&‡­vOò„›÷(/ô©=Þ*×Ýò–¯óð­úòMóˆmóuŸø9÷¬ÿ.o•oð—ï#®oÛtßáLï赟AÓ~û?üv®¸÷žç­âþ¾øÈÏÆÿòѯƒcàz ›$ÝO‰²÷Ÿ_ýé»û8lþ1CS0DÐuðgñý7"ÿ ëüB=þ¢Ž¸èŸ3B(RäâFÏ„ VPAáCˆ%N¤XÑâEŒ:ÌØÑãǎ­DŽ$YÒäI”l@ÙÒåK˜1eÊTÉræMœ9uîäÙÓçO =k%Z”æJ£I•žºti%QíQÅ "]êü¸1êW°aÅ.l8ÖìهNG6UÛv'[·qåÎ¥[·¥JdôîåÛ×ï_À&\˜¯‰& /fÜØqcĊO¦ÌWK̙5oæÜÙ³æ#þ/¬ZXð YŽhU¯ë•õknáÚ¥-rvmܹuïN ÀÄhàÁ…'^Üøqäɕ/gÞÜùsèÑ¥O§Î«V®®aoç>Q{wðe#å]÷vyôéÕ+Uù»ú{øñåϧ_ßþýç*†Ä9ð=üÿ×ü0¼ñlZ¯­óTpA]j?#”pB +´0¸ë¶ê¯¬;TM@·+°Á¥$ñDÓS ƒBZtñEc”qFk´ñF_‚rôñG ƒrÇ…4òÈéøbI&›tòI(£l’ €+Í …@ qK´äRµS$ÊD1Ë4s.2ÏÌ)M5×$/E¨Â›ªª«²þÒð!/¿ÔÓ;÷|-Ì6ßz3PB sPCÝ40QA=1ÎîàB ‚°”(O?3ESM£”јØuTRE%•$SOEQ!ånŠ ¹¢ˆÓNõ¤µÖdUՒRåõ×2}=UXU‰Õ-K’UvYf›uöÙd#„h-™5\³Ý´OmÃúØUwÜ6ÕÜQÑ­ÍQÚu÷]xã•w^zãµÛnk½5_Š¾%W]rÞ àB 6Ô`ºØ­wa†~÷ÞmSã×Ï}'OWqÇEX`ŽéÚX͏ËݕA…6ùä‡ñµxϊWVÈ_GîxæõB6Óæ3qV«d”{nâ þ%vy˖‡>fpu¦y頔FÑé¡NŠgŸ«ž袍þ[­-BX©™[Q±Ã&Ñl¢¨¶zmw±æºk³vùë_Ñûî—ì>PoùöIm¶×v[h¸ÿ“{eºyõoÆגùßÇ^œ'À¯zðÂ=<Üâċ¼qÐÙûìѓ–¢PGIuÕa¢…†a‡WvÁUÎÜð·oO ã™'}lßy ¾<[WËø˜^mÚSŽX÷¸s‡¡Î‡-ýw셺ÞóŒ;.>.ä]Ÿ}ùµ›oÛöé·Û|âêKÝ>{øo^·ùfÕªVZ¤ýGê?ê"aã?ü)Ì*þ¢0_»Fã.Ø-Ё” %ø@xa.}ÝY¿Ú—®÷ÅO„y !»Ç±Ù°®€da õg@ú/†ü“!Ù%» BP‡ Äá¸CÚõÐ^èÛ k:˜¯ž«„#db¯–ȨúÑQ/à ihÅð­yTÌß wø® úð‡c ãÁ(/ 6GìV¡øÄ&61Šµ™#nRXÃà P€ýãâ«h<@Njbü¢ÉhA 6°¢H£(½é¹1QuŒ£ûN¹KJnŠxtÉ ¯øGNVQ”-É ÍXH1 Q‘ñZd#¹5ÂmP’ƒc%EHIóÔr’›Ä")=ùKj±†ÃþD)WéÃ2R™„<ßó^ùÈX¦o–Ó¥-³‡KU“šâòcþhÀ@ö üc7÷§@ ή‚À)dәÃv¹ò™fa£¶¦I(lZs›eÓ&>û)—Êõl‘(“ç<[IèÝ3PùÔçBÿ™³‡‚,¢m (Êz²‚,õ̖BE–ɆZ“¡q©\JZ’Š: ž—#¢F7ŠPÝyT¢ i%ÓtŠE$Bq½O’R˙,£. Gq%SˆÒ´¦r+:!ˆ'ÔÀ ;U*éªZ õg-%jQaz;¤öôªKßmpZ†¤K¸UïvR’|bs¥k]ízW¼æU¯w}þW»Ú¥¯f.¬Áò)YQø&§Bµ¤±'êVبA6)®Ê”Q jÙN VLp5lƒ†rÖ´§W¨LiMk˜ÈœVµ«}LjYûÚ¿\æ3³¥mmk;Àþµ"˜Õ”f#;ÖÎþn Ѐb/t\ä&W¹Ë½r«[>E3’¼óždƒ 6”€Ìånw½û]ðǹ҅îEx›)ß>ͺ×Uq^øÆW¾óÏxËû•óú)½'bhøʃºáÔÆ¿-ñï€sÉЪu4H’üà ¦°$\a ËHIRâp‡=ìa <÷¾x±Öö{¶õ&ÅÀàû$]VÜÉ-¾Ø¤ˆ}jþTëX·/ÅA¡,ÅJ³¤ë,oˆÛœÙ¾ÆŸ­Îp¦ ]xb'Ùq"rͼ¼D'uës-¹³r7 ϓb÷ž]_j‡.ÛÁctôà}×ì=¶»g"øCÁý£zï”ߍæxî¾ìŠ_ÝCšf²½ÚìOf¼¦ ï²ÏÃFòc§<á1þIè*—^-hïPè-æz֌žó¦·%⛶y)ªÞ)¬ìùå{0¹]`¶§=qo|Ýoöø1á}ôÈ äKñ݃Â×ä%qªÓâ3Žø?Ù>PxÞ|Ü=ú]‘>©z“$6ªSÍ>Þº¯½äÿ¶ó•-WÙç¾$QfkûÝ¿|»x?Ÿø¾ «?¢º¿³È¿Üh õ[,h,ÿû¿øC± ä/| ð ̖  ´£•ˆ²Ñ-Ø*ADÝYžíYŸ…‘ ûÙ@ „$˜×bõT{åVm,Ԙ¬YgýØhõÇi­V«pÙºóXž @é捙ö^b©às+`+J¶—‹Þ£ÜÜå]äáóͬõÓÆ]aßý^sRጻ}a&ÈóTÖä…XÚå_ îÓpÓþ·“ß÷´Q[2®ÜãEÍÌ­áÞºá,ÌáÕ}_<;¶Æà)æºûŒáâ-û ƽÌg‚àãÏM•#cnºä'`#à+âœLÜëÍGýP&nb±ZcW]$¦a%ÖÞ·Ed¢c#n]™m½î–B~]J\INd>ä#Ž]GŽc/¦ÞO®FE–ÚQþàÒåbô:åo©ëKe‰ åT•a-NbSáݍÅ@›E[ÁN–@6fAfà Íä”eñ5 QæTËmå~åGÞß\ŽÄ@›DiŽÌU[]ÎMXv¤M&Í\ÖÃk%­wmgw~çwvWx~×,æ@¾äÞþcfÔgtækä€nfYh‚6¬fF&elîe¾­® pk-h‰žh•=èp΍6öªr~J~C>:€~/Ši’NC‹ÆåPäUZ™žiš¦é ­i¡-D{Ff|v¾-ÎfCÞæVÄıoF¾‹Ë,&çŸfè%ꑈ棦ͤöËqҍ."–nT¨& YœjªFéí½êHmj!ûèÀûœaëkÁN¶âÌlÏîì´6lÃuëO mLl•m-mîß&}fÕ¾åÈþlºÈèxã3µlWÌHÜ&NÖã$5`(ýÓmÝmÞ¦fߞ à,ÚRâþEێ8Ø â3µ N`è&æéÎО?³n•Dáqbø4c…“â fíL½â+žïóÖÀì¾æõ4ҨûáÍQ>&búfTûvíöæ].eÒnèN‚âø]± b+VpÇp³륥ì¦ÝopìÇ;cÒ2nagaùîØÔ_qÐ]j¬Nïþ¶í;&ñvÑvp-ç÷Pd5Yy®¶ø‘¿ò‡te÷gùƶu–Ìï4ø®aìg™5è€5°ù_øH†ùG7ùHow‘6¢oi‘—r¤Gv™—%ZÇ §‡ú¨¿y—§ú0çï<Ÿ÷¢'—­ïz¯Ÿú£û/÷“gú€9{´ÇtµoÞª/y·_zH6û§Ÿ{º7z»g{,Wú™Gyp‘{¿Ÿãbe’ídÇzšgÄOü{Æùp¿óx{§Þûq™|þÊ?< çqÀgr€ÿpžÿ»¬¯ Ïÿü}+ü˜'|È7üÜÖìnRÕ‡ÞœxÓonñiçMψN¿ÕÓ\d„ß2Ö`ސàú—@íÿõsßGõÏüU'{©gÒ(NþCæwþOñðŸóé_üÝkxèóù¿·qâþãôc?`æN1SP=sîïò·ü݈J,hð „ VPa!Ĉ'R¬hÑ`Ç7rìX°Ȑ"G’,ir€ &E¢ÙäËV1aÒ¬óå͚2aâ ÙS§Ï ’PH҉ó§Í 2]éô)Ô¨R§R­jõ*Ö¬'Sjíêõkþ+”*Á’-;U¬Ù´$zl«0£Û¸rçB„K÷n\µ#Ñ>¹Ó(ŠÀ•þõû·°Òœ. 3n5´èâÊ%­¬÷2æ̚õòÝìÙjçÏ¢Ïrݕ-Þ¶vS³nMqµëØ5‡.Ùò¦`Á–yêæM)p’¹ /}ùØgïɸ“'nlú9ôè^kK‡N½ºõÒا¢–]¶÷ð®Á‹O[»íæ,NNOù}{ N[‡ÿÛ¹âøÛ÷óÇ~½ÿychÚ†Ô]yu9” ƒx‘× kÎq·­gY~ê!†!~BeSp‡Ù—”|šxbZ¢X–Š+²ˆž‹­ áAÒxãk âþ›„&ù5˜p"J¤oÈ͔{DÇXoCá¶áRBöö^qÄÅx%–Nµ˜%V[rÙ%Œ.θã6’yf:¢‰W_v% ¹9'›yY'Twâ™g˜+Ž¹£™k®¨ µ¹'Upʉ(£‚Ö§£| iUzî÷'Ž„ ¨š›æ•™¥*J)©¥’*¥¨b™Ê š¨")—˜Þ¨©§xñá…}(¨Q­nj*I£;l¤ª:jlŒ¨0±Cˆ¢%¤'ÊJ#­½ÎµG2!ouj­¡ F l¤A,ºŒ"«î¸x²bˆ(´ ®–´îsÓBX-¸ný†(¬ðC¹¦þÉk¿ýš.¾é:\]ÃxFŒ"#KƬ³{µ; ¾ ò›p[o!˜¶Üô1ÈeFB&ñ2Ì1Ë<3Í5Û|3Î9ëlBË:ûü3ÐA =4ÑE}4ÒEóìrÒM; ôÒOKí4,ä6o½¯†•!EŸ1ŠS£œaô×#uwQ¨½6Ûm»w,„öÛnƒnÇ=wÚuûÍöÞ Ñý7á'4øÛE¨ÛÀëŠrÊifÂp•[~9æ™k¾9ç{þ9衋>:饛~:ê©«¾:ë­»þºç“"¤ß°‰S›ÜPúíf4 ¥Ã0ÇBÀ O¼BƓ>|ñÁ/|BÊþ^²ßF.Ñä°k¿=÷Ý{ÿ=øá‹?>ùå¯NäTû软¤;︋ԝô¢3Ÿ¼ó£ß}þöCPýB·?öïs.v=ìe†ræ{ #(Á R°‚¼ êdG;ÛÉÏ$ðã ï@Ð ð #ü\ rBÏ¥ðw$áÿLøÂÍQÏz \ˆf0¢‡>ü!ƒ(Ä!±ˆF<"G°C$2±‰N|"£(Å)R±ŠVœ¢yxÅ-rщYì"¹ˆ\^öÚÚ01ÅC”Â)¥8فä! _¸#ó¨Ç=~! yXHù¸Ç @`{ô# í(ÈEæ‘ þ $##éȄ@’Uˆãf0ÈEnaèšØÃB)PΉ”ªØŚõ,‘˜R3c'o(‘‘l[Ý"H,AæIbµR”¾äÌƆÕËý¼+^X;£Æ&£W&(—²LÈ¿Ö8ƒaĆÏ<È.…Ì_r3:ÃÄÒ7±£,ÙAK™bڔ3¯il•ì–I'¸² ¬pv³ž`2g(é)U(™+ѧY˜Yxªs ~h5½¥À‚Dž¦¨=#ˆžˆ¢(²èW*‚2t"­•CK…Q‰’4™õ©Pª†ç£ÝÕKRR©´¤$­é~pʝZ…¥ÞqiLÔBÍ4UÛ´þ)RÁÂSˆužMݎOe3Ô Vs¡1-j±žšÔ­^e©Òñ*Sñ‰¢¨ÆfªTÅ¥5;ŠÕci•«n• X³#Ö|¶U:dOZÏê³¢i­Šë[yY׿–­s5Ñ][Ã׳.–L~e×a+Yª–@…%ld9†Î¼êÕ#ÝÑcUÙÉÒô²{­e3  Ä²æ³1uíB»§5t` ¤½í=OjZÑîV4¬M l;\ÉOÂÂ-ráÚ[:¡v4Í5ÉoÄÙÎrd¸ *nŽ›Üíþs¹¥ô.sÁëÊÍZ•ºª™î5±K'ír·½¬/—žûù®…¼æ½‹u¤Þ9±×½î¥¯þ¸T+Xó'ºøEï}sT^µؗýõ/wŒ 78K¦K~¯™áòì×M†pr) L;•ÄPµo‚å²aóT8”1nE¬8V(Nñ^,ËlþèBFš’‰^L+™…È0îph‘–½Âå.{y¾bŽ‘’St純9.R¾ÞŸyÔbIÉ͑Y’‘XB¤ åHJ¢qˆÒhH+:'“þ’¦t›¦ÐH‹Ft‘^‹tϽ1š;è šÐ>ŽOˆ2D¢ÂÄ?=q†þ˜’˜A)֜þµ®…êËä™,Å~©«Óç/8ÕUóõBúæ!!‰C‡®u‰ô““úÈZؼæõ}¨ôíY{¦¾è¹WDfT;û"«nC­\%æ$Iӟž5¸yóhÊp»ÚÊ¡÷¼wnåì&Øå6w² ÑuêÝ sxjØLn(QÉ=Ýη°_í˜y[C׶ÇCN¢9\+ÇþÊɕšn°,û¼Ín7L;+ñTÈÐÖîõÍ/.œ[sî8›Z]*½Çi%|ïû€uËv…[¸ð†OóËՉ÷1~Q‡†¼äCoO† ñÖ2=]6¥8ƒ^ôÜ ¼ÉŸ•¸«Úî0Gý\T#Ö·þõ²Ïéï7“ˆEœâ)¤”ícz«„ 5ùýÒ½‹xß{_¾«Á׌jðAt‚[™|¾,ŸjvÚR¡RW<ºÊu®é'µú¿‹0Ѥ e þ©®_ÚW×ù¦Àh’®TÕù!õéû ˆûU b†'`Õ €öqŸ÷Äñ¡ î5-F;ŒÿY m@ÓL >MÔþ” ¦  ® ªà ¶ BMÏÄ ÂLØ@nÔßýŸXt єÍJˆ ـÍüâNÝB¡ßÜMÞ´"!ʍàô ¾MÄ®âd’ãÔ]楨D!¦¡®!¶áN ,À°è¸í¡Í Ő ñaç´ÐOó"þ„N á3цº¡#>"$F¢$N¢#²@ 8ÀæáÆÏÀ ¢º!òÏ(P)ÊÐèP ±5"%¾",Æ¢,Î"-rÊ!†Ž–ĵOý"çâ@|â0†â >O!*ã!‚N"²"þg<€…5vÑU#6f£6n#7jã5v#8zÑ…#9úP $AÚþ‰…I‘­ÄÅQé!)R$-Ò$!D%1!’åãAìã=Ò=’=$A&Ò"]nÒö ô©[&àNMäs,àH<`N`÷…ÄžI2È¢@¢•"îúEE–F’ü­ˆüџ:ŸIU^Ã=¤:à4  žä E$º½äJ¶]7µ$Hdßöuä½X$TðßF„¤xŸÉ4ŸO®YJj“P%oeåwq¥`B#ÐdwyåxÝdUêÕA1ß;ᤧeE1¥Vʕë%\:…Sº[ÞþT¶…[šˆQÆ¥KÎ¥ï‘efÜ¥Eì%òe']e‰æèÕ¥æ—|$™ &æ%Q1æCA¦czÆ_ÂÊcJæeæw`&uYf¸ (}fg–“`þerŠbBj*Œf–šh¶¦‹°¦k†¦™åå•ælêÒm–VnêfP¾æ'Ÿ‰_p 4.s¦g"'±Ug_âvvâeg»ÕæEd§n§u"y^çtîæy£s>gOF§ž¥'à­gy¢}ƧÛÉ'˵§{xZ„xΧ~Ö§ܧy¨_Ò'iF]Ɯ^hð&¢‘r®¦‚ògþgE@hE"è„Ê%]zèxþŠèìa¨{j(Ep(ð‘臎’"[~þfé™fg¡èD¨èvH(êèR²h‡Êhb6¨ƒžŽ¨¶¨¼¨±))ŒÚäŒz§³Ù(©&])’gcú¦“©šŸÌaiVY镢g…V)vg—z郂)卩q–éÃÄf¦Ð¨^IiDiX¹)n©ÃÈé¬Ð)cªc±)Qêi˜ò©ß‰)w˜èsÚél*dªQ)*ˆ"êj1jp:*AêVJꡆhŒn)š¦éZBi›©¢Y­&Ä­z¯ê*²jþ¨bI°JD±þÔ¬âȱþª®&Y²æ––:+¦^^´bªJL¶zê²Ö¤¥ödzÞ´¾Ô·6T¸b«¯^«õÅ«‹Òë—Ù+tu«áµ«ÊPiœŽ«¤–ë{ákdÆje®«p!,q½ë¨Ékªlµæè…'©Bç—úkŸ¬¡ ì®Bl’z,=rižçŒ©…‚¬ÃŽå¹b¥ÁÊæÈ`ÉÖØɦ,¼®l–r+ž¬*ìu1lWÒlÂ궫¾Ò¿DĦÐþ¬ÐÚì‰å¬Î­äø¬›plkZ-…í2-mò¬~Qídj¬žb-ÖZàÄ>©Îš$|èr.mՊm`jí9AíËJþí$í½ºmØ¢¬Ì:-v¤ëÖ­×&ÞÖ«ÞÆÜ*ߚ,΢mڊáÚ6©™n˜-.~Ê­Ÿpíí .‡-âZ®Û’mâÆmãŠlÔr.‹al¢Rnåú훊ª¬+ŽÙmá,ëj'èJnÓ-ݎ,íz.’Šnî²-ì¬ì¦Øïªî' o‹o³ò®ã¦íò2î¿/ÍB/掕æ~'ê†Gíz¦ó~¨öº®]uo”~ï”oëÞ®zb¯}Â/¬¯Ë>nõöíõºïûšï§–î¨R¯úÊFø~¬þJ¤ü Þ3Ýâ.æ=.äƬt¶m¿egEÙf­ÿÆ®ßoÏìþ'hk+ÿB«éé&o[²ï•\p\–ïînmïV,_îä~ðˆŽp¡J¯é . oÊÿð»ð`¶ìœö°yÍ°ñÖ° GèøªìöJ ú¦ënƆ0¹6ñ÷E/ Oï Gî’Z±â.ñ ¿0lžíûn óª¤ÿ(Kp#ï§1«­1˶±ñ#V+Û ã.çqƒñ¼ñŸñiþ1k±rÞ¾±Çqý°"¯‰#[/$#«!S;1%ñ_r_òþnržJ²oñË0#Gœ)0*§²ã°i”0UŽ²Ïï*Ïr$ײ*óq “ê1û²}Òs#2µ¼2¸3/ç/2»j'“®2kÖ0§)4Çï1O³í38Ï-óð.só${ó7²‹s+³3ßE&ã/:ð57ï÷ñì¾sêÅrrÎs:w³:Ó¯(Û¯>ç?S°?ÿó9‡sæfs—n³tBËóBt('².wV@;PKõhè1b>]>PK»~@OEBPS/img/exp_tx.gifø&ÙGIF89aãp÷€€€€€€€€€ÀÀÀÀÜÀ¦Êð@@@LLLNNNSSSUUUWWW^^^bbbhhhjjjlllqqqwww}}}À€€€ƒƒƒ………†††ˆˆˆ‰‰‰ŒŒŒ’’’———˜˜˜žžž   ¢¢¢§§§¨¨¨©©©«««¬¬¬°°°±±±´´´¶¶¶¹¹¹¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ,ãpþéH° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cʜI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·pãJ@—nD»ëêðoÞ½+ýÊ̯`†‡'&NɗÎâ‡~‹” ¶nCÀ(1–¹ñIÊ$ACö,zó_ÏQ§&­z2끭Æ^Ûyµmǖ ól÷1o˸kwŽZoðݬ…Ç®}|õoⰁÇmû7õ«½_,ýq1÷ëp™þë¾}=wãì³­§ŽîœúxíïÏË¿mÞ xøóÝÏ׿}üÙPeçœjÀmWà^øAGP68 qãé7Ö}ôáW!y.H tû%6Ýa†˜Ÿ†Ó'b†ú%§á…åø”€F§Þ‰Õå烆±g¢ò!'…-êHã+²7ä>‚Çâ‘ö-g¡’Çñ×#KºØM©\• •ø܈LBٕ–`RäAꝡf iæš:¢¨æ†!™d˜Ua‰¦”kˆ`ŒY’çç“4VVfp‚¾‰\zÅÚa\† ' ;FúhsΉ¨UŽX§§‰žY¤lŠ†ª©˜\ii¥¢ÂØä¨þQVI\r¯)(jœ°–ˆé®rÈb¦T˜ä¨xnzªœ’ZÈá°¦Ö¬Gß%, ªzÙèµÚe9c¯EŠê³öá n^âŽÛS´àêjîiV®kºîÆ+/§íÎkï½øæ«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄWlñÅg¬ñÆwìñÇ ‡,òÈ$—lòÉ(§¬òÊ,·ìòË0Ç,óÌ4×lq]Äa³K8ë¼sJs|DL¬ñ3ÐBmôÑ%ÁAÅD-Äs0M’ÓPKMµÕ!¥‘DQ‡½pp ’×`‡}ÀØe›½Ñb¡¶Ú9$a†ÛoÇ=wþØuߍ÷EqXÁÃÞsÁEÕWøà„‡m8â‰G´i7¶Q¸¹D“Wnù˜k¾yCp ñ9áE1:éb˜~úÜ©¯®Ðâ¯îCrȎíµÏ}{îºĆž÷ÎwÑÁ O¼ñ{+<dÁ¼åBˆ¹ìÑOßxõ×G.G>ho9dËþ}øâN~ۑ_|út'‘ÆèîÃßxÝó'nÆöŸþ¸þüëŸåþg¶9p<]èÜf@&Ðr ´š¢ ƒ¾.v¤ O‡ÁŸíoƒµûÝÑ>ÂӉ°fA“[ _ç< m…,DÞÌ°ÃÞqo†O«aín3´é°wþ<°û\æþ.ˆCTY h<ü¹l‰L¬W‡FÑxAؚʪ˜µ+Ö.‹Ý#Yç¼È¼žlŒdìGVº4jï~#YÝÈ<8’ŒwtdÞ C†Ç<öncåü¨½8 !äûy:C"ÒcÙc¤øxȱHJrz”ÄØù.™>$nl“œÔž'1V¿PŠoŠybPQJiÊ顒b–l¥øÀ˜JxÙ$–²œ-%ÖÀ\ÚoRePzéËô“a¬`1ígǹó'É\&3ãÈ0JÓ~@Øð^ô̞XóšéËæ6FLpÚϑÁ´åKÊiÎô¡apÐ`;Xë9E]<þ‰§2çi¿z†`Eägÿ‚è³¥àS'(ü:0(*T€D˟Rz‡>ôœL¨¿hxÑî)­ G;*Àîk _S]–¶to+UéK§SËé†;˜‚è¤ÕMš Ôs5iMe:·¡Ϩ0­ Nuº¯9õJ…êLŸêÒÆ©l¦QB§VUª/ŪQ±*À«N„ZµW‰ªT³ºÕ¬I êMÝZÔ³‚5¬mmé[£vSÇis«=…ÉZ«šW¾Fu/†«PçŠ×³"µ¯Œ•ªa÷ê×qº „[©^% ×Î:¯’å¬^G+S¹&Ö´š-Vß9®º³I…þªlS{ZÕ~¶¶¸¥­KM+Z’¶·Í;d¼¼šÙ͒A¡ÕíWuK[²Þõ®Êm.bÛÁ ¸v%č­qGYà.÷·Òµi^»Û[äRWuæúã>ÇXå&Ö»ïeîqíZ×Ð~µ¼·µœ®PП\7%ê}]{û]ûƼó={í^ªÚŽ¿àb¥‚{àä¸Âž…o†5 Wø®…þ ¬J$Ì^ [øÄcµmn/¼a÷Vş1ap9áûBöÆ8^laÁªØ݂v·>~ïé¦öOœü×$4.±_Ìä&ûÁvíës Õ);WmD (Ciâe²Í'Gɖ9Ùåb~.n€Âþ"%)eiöí\".Iš×ÌÈ6/óÍnù&I9IÀœ„$zÞ³$ûŒv š“:xÂ#çúВLô¢ÍMH˲º5ù3G*miSbZ,i@B§}¹ßþÎDÓ õ¨sYê±XtÕ¦”±LP}‘Wړ²æÊHo-Ë,ŸºÑÙ5¯Mék®$tØ­‚  @Ø)¼3¾©=ëhO;қÎÈ°Ce gW»Üçþr``0A—PäÐô"p·_ÕéNø´; +X öÞ÷£”ÜÚ|á'ou»ã]ïtäBK„¾Ç žò ¯üÝóžGÍCETyèWt˓ލ=ÐèØëEÔžõ¸§¹ë1ŸÆØK% ·Ï½ðë>zޓñ–Å8í)|ªÿù-ß=‘/•5 O|’‡>î¥þïF+¸„ó ±¾óµ?|î§ÑûR™ÃÆOþܛߋ:z`þõ³¿ý¬ÿãO/Ðùtه”§Q4I4{#áª'€ùW|nd€Tá*y ؀—çFSÐô¸€zÈDXQà3'-G)¨‚0‡‚.ç‚7ƒj‚?”a dç%ˆ}6ƒ,¸2¸‚/„4G„YGƒ:dƒVAtXs.8,g„Ah„îç€db79ØL8=8„,…@øƒ/H†cØ~HXCXhq`<؃*…O(†…a(†c(‡wh†K—†0Ô0~ç†Mè„qˆ‚þs˜ˆsh‡>Hg˜‡hç‡+ˆWqohˆ@˜‰ˆx‡¸‰xˆvx†žˆu’XB¦÷}–XˆE‡šŠ¢È‰£8‹ 8ŠWWŠ tŠUëe<_†š‹Ž¸ˆ´ø‰±8ƒVxE>°4¨¸… Á‹¬x‚®X‹uHŒ°XŒ¶x„ÉEË(mëç…1¨‡ÙhŒØ(‹°‰ÛÈDԇƒËgöŽp¸‰ãhähŽˆŽèEëx\Ò(„õŠå(Ô¨ùxEW°l©ýpôxŒé‰ã¨t¸hA ™m0½ó‹ÀŠŒ¸‡‹˜‡?X{ˆ¯E<€ éŒ ±‘‰þ‰ I’!ɉ4Y“ŸÈ‡™Ž?´’[á1©}%©“iw‘ D¦Fn @É<‰{C9yF)@H¹cr¯ó”P‰‡„7•ý3‚¸”q•NɀŽ(•<©C`™p0eù ˜–0Ä-َіo —hyFD—[Ay©—])—+´†u‰€é‹‚¹—)iD†¹Ðؑ‹Yx^ ?Nðk.é‘Y;Z9™;ɗ?t™]!¢&™ž9w•™>^€™vy¤©˜§)w©)>«é əáx–P9“}H˜ ԍז™q›Y™›\¹z6)z YCÀÙkð¦ŽÃG…ŸÙ˜:Äw¬™Ïþ)|ԙt³9=ØùMYœG׈‰ˆ“!¹‚Cyˆ´¨ˆDžÌ£4!ˆLɝ2y“t¨›ü‰ž4©ˆê sòi<ô `ðaә3éƒÙ ¢Ø yŒ÷èrZ;>™)q ¸yžQ…Šz"jŒê›t¡_avæ)¼9Œæ(ƒ.Z†:¢%ºœ+´‡™* €H׈eXŽ0ª‡2*¡ÅX£Ö C8êÇ£ ™œ1šI£Äg£%D™&–±¤Ÿ£ ÷è£EúŸ ‘#:’Uz¤+„¥báyLÊ¢_:¦I‘ej}&š@~œ­™lÚ¥=Ú¡O:£¡þaJ¡w*@yú¶×¦Ý9¡1š“íy’3:’FX¡CöY*œ±¨~Ú¤-*¤Êž’J¤ûɛvj¥$˜:Íש±Y”‡Ú?¢YŸZ:­j9^úªº×)¼š@³*â窺JŠ± ?9ïR«œs}“«ÃsiH_®„¬dñŽ¸ú¬‰¦äv™º§a­ÍŠ­ÄŠª²Õ?ÜJ x­âªœÚjAãI«š é®ëڛä*­Ìó®cсêZ¯àY¬é£‹ºüJ¯þÚz¾‰¯Æ#°c±ƒ{°7g©ã{ɯᰄã¬þ­ýC±fх{әxxœ§)±„“¤zê ;7"ëþŸÃʱ̔|bцýڊíù¬&»7èW±Þª4û°Òx³/›°ý³³g±Škœú Ÿì)ª"¹ž(i| ”¨ËH²J{–û9²è  7™­R[T¿$f±™,›µr(¨t¡°J®ý7aŸa¶jÓ²ò芤š‰y‘mÛ®åš>p[h߈µ9OK© z·y‹;=kÙ­ë4¸g[¸¯¸žˆ ¤ Ú·a«Röó¸gAœu+B*§!Cª¹0¤„Œf± ´2'ƒjlkªãê· ÛH7¸0I¸˜8ºpZSZ§µ»¹ ô˜< »;¹½Kºq:§Šº6?ƛåºÝþi“êµu¸´²Ù¸ÆC‰«Û³Q½ ʢ؛¸OK’éûÿz¯ð¾kA–ÊëN—n ? ¯â»òk½ÓY¿H´ëx9¿ÞI²ŒI¼ýӜq«¬QÀþ;L™¬= ¼‰Á[s95JÐxaɺ‘Áå»Á[ÁÓóÁoA·[¯|égl,lÂ'ì¾âÃmñšlÃÐê½GĒ:!·®Yš%ìÃ3³Óƒ¢nº-¼®\•C<ÃáÄH¬{(l0i”¼¿ÑʧŒ©Æ·»7±¼‹êʱi²ú:Ë5ñË·l Tì‘Ëšœ¯ ¼ÍÌ% ĖS M{C-¶y<.K,xr=×t]×v}׉§x½×|Ý×s½x ¸×œÌ_<-%b#‹½|k͹½#ئ±²?¤˜MRPؼdpØKÙ,e<›=.?E˜­%Ê!¦ÎÐÎD!Ú|Õ;¬=.W{Ù©ÝQçJÓ9²=´ý·þÃț‘̪C©Ù5Ì;ÑÙÑÁþ-ÝÏàܦ®Ê½Ü•¿é\ÓñÓÕÝ;Þm  C˽Ûå±`FØã åý:î=.É[CëÍÜüDÐߝò]“¨ÌrxÜ8þÝ,ä«Ü¥ÃïíÚà Ë®È„ÃàæÒ¿—}Q;pBÝáNQߟ³áóÁþP”íÛ8âM!▓âæb¨}QlüÜð,~§ƒ;®ãŸC.Þ85.t«Þ¥ºÖuã‘ãÑãMþã>n9@>á8l9H./<|â5½ ÞÁäáäaåO.åä{Ãåî’Þ+¤Ú ¿œ­äæ!æuNæcnææþsçòbÆúýPçmã.t>vŽèx~çz|®Tƒ.ûk+rŽ ^BnÎOÜÚ^Þ‡.‰ꋮèh.TÌֈ­ÐÝê>}†lä¥Â­Uéñétê¹>ê¢^êMåªÌÖ Â÷±(Í'“aýêJaâm®PÎé¾Íº^í¼nÏÀ®ËD5 Ôf-Ö:ýíÌN+cÝ\úìü´ÏÒ¾âÔ~íÖîëqêQã“ÞŽÖÞÔ½á ]îÌ®}Šîó´ÅnëÞîð¾ë¯ë !ï@gýð­Ñõñh²ïÊÎïGÁ©ßNC>؅¸þîÃã×¾þðÙÞÌu•-9²Ó@]Æ"ρÒ·Šéü$Çë~!ïî:ð&¿56o/Áºñà¤æ7o9Ÿð;?òg~òáœæÆm/-ëíÄÉIþñ‘ôL_æ[Ÿç]oêNÏcõùë”éàtÛDááñmð_Oêoßëqí>OájÏ/ BhM½ XXÿZO8$¯ô<¿|Þ÷ÿ‚±g?OØç7ƒ?÷ oøaÑ0õÌ ÝéÏù4aÙ ´÷ÒdÍEÁö8îö‚å”_ò–_÷UÎR¤ÖÅq5íù"qڋoNê~õ¶ßö÷©ÏõÁïõÃö®ì»U!ä~ֈî›þ!BÏoÆþò8‘Û$úÅtàG_‘?7“_üÀ/ùMüÚ^T¹SÖââüñÿíοÈMóædÔ¥Oð†Žúä/üýt ¿¡÷ãÀ†7¨,ÿ‚ü3¨¼ÎÎcÌ>´->\¬>ñð͚°BÌBC'2°¡öqÄÂH4q0”' Z”ªEs‚‘0´ lîDs¤#F{QµW¼iƨˆ„ÊÈÀjôðF›LG'›LQA!‚J+‘”QK¬”d½(ÔK1qœ2Á*º’L…Ö<òÊÁ¼üð¹2ëþ¼ŽM;E<Á4 ƒ¾?urS09™ÌóÐOóí@ÛBÌÉ$÷´¯ÏÖtqËAY´”PΖQP‹ÒèsT;=‘R,ÅÓUA7M²Ó/ õÖÃF̪ØV6“bãuQaƒµ+/Ö\rOÒùXmó*<Õ<¬ÐOqµ6°QõË´]ñ¢³/eSÛ\HOUOÕ¹RwÝu5`÷Ývá•ww絗]ó ½vß"Qr5ÔàêU.€÷"8%d“5ØÛ÷˜•/¸{ª7b®&¦˜Þ‹#ηZ~;Ô_nþ‹[qýEmá»À呗E·Á$ j¶ùæ›5Àygžuæùçšþ}zhž°‘c“¶d–€MX¥Õ”íäٍúêÑÖZ>‡ßsC 5ªà²Ë6»l ÎV{í´×v›ì¶ß–Ûí‰jQi¼—foëëÌ¥Ó¾®ç냺 7| WÜðÄw¼qÇ#—|λò¶¼U©í;0¿ÏÕÜÁÁ%ŸrÑë&½tÄQW½nÊA¾ïh_Ï-pùØ@ÂÜs×=w v÷ý÷Þ÷à‡7þx+ô•½ãؗŒö›¯Úì:w^Lé¯7õå2³ß‘zú´÷8ږ¹³¾Aèqô~ýêÅgÕ»±:_ê(Ó?‘ý©¼?l~÷uÌëKUNCWc†Õ¨Õ{þØߋÚ׿kY‡\¦)™^&Hš•]o:²Ÿ‰ðçÀðAÐZ_¨—„ ƒ»àÍäÂ(}°_½!ý²Â?z0 ×ÂTÆÂÊi0d ü\˜dx$×Uîo¥Êá­²¥Â§µ…%lM·\ƒÀª9©ƒ$:"|\§­¦u‡M‘þÈÈ:©‹£aÖL¸Ã̝Tf”ã£Òؤ5Êè‹3iÚáWG;ѐŒ¹£òÈ¢=R%Öã ç#HG¬ˆ1là }åÆ(Ni‘Ä#'÷WÈrHô¤K‰"Pú¯’H á) éJÎ¥2z«ôb+a9Ë[^e‹#¥M yÃ\ª2˜™þ“¥úhÉÆÍ ó~ʤJ1—™¿cò¦‘ÌÌÍ/=¹Ë2F‘¶¤fƒ¬ÉIl:¨—zKf7s2‡4|a Q`J;•rwÆSžótB¶ð…4ÌAJΜ:ÕÉN¦À3žu'Aéyж ŞøÔç0ÍÀ„\F¢ÝE-zQŒ–¥MHƒÂ™›‡Fô¢š(I%jҌRԀU¡ÌF;zK6HÁ)¥éAPZSœâXˆù¹›˜Î4£7- QÅbԜfd¥ÝiOOɆ#$µ¦H•jU/“(8õD] T§:T°ZU¢+ňD±ªÕHƁ b +[ÝJÑX¡¡&âjbԊSªV£yµþª-×¹rRÈÁ[-ÊWòu\x¡&©3ØÂ~u¯mMìEsÑÅr’ B­ìeÛÙª[ýim6›ÓÏRˆ² =Àe1*ÚH†!²¬=*mm»ƒ3Ö±Ó‘-jW[RÛ„¥Åm$©ÜÚ"´WÐí4 s\ßNVºÁ.F™ëH'PBànw½û]ð†W¼BÐÀxÍ{^ô¦÷¼@¸Œš‹ ì–e»è-¯z»[_û’7¿û5/ÄË^ʸ»òmƒ |`'XÁ fpƒü`G8Âm°XL¢º&¾_B!¬ #Ä!6ðˆI|b€Áp$7l!È¡‰rBþ‹éZÚǼ!1®%}lÛx:>s‡˜@~¯}ˆl#‹ÉJfò€Åe¾¡©2†q¼˜'ËýÓ2—¿ra@†ùcþcÛè¤2WäÌMžšÙ¬“’m̀pÞ²œ-‚æ:ÚYƺԳh’ˆ£8wyD&Œ åWhRùÑD‰ž³•¿rg+:Uñþͽ3-v[ñoÍîõ¿3ïz‹ÐàÒv¿õÝm¿4Üß73©oLpÞLüFûö7Ã1ž,“â.. ¦ Õ²‘qšÕ|ãÌAž“•ܹçnù ãØo†É<‹C—Ij†ë€WzÈ=obν|s݈|yNO3ÓsHõï\0R—Ökmuz½ØPÏ ×_'vkƒ=ËI÷øÓµ³_íMŒ»åæŽ so]ídfû¬Y~eŸ¯½ã~×9|÷î¾»KüðâKü|ò÷Åk¯ñý«{Þ&ß0c'¦òx»¼ø6¯´Î›/óˆù|ÒBþ½Ò{ìôô½†#½Õ//õ‹=uŸ•Ùó«ö¯S3а5A Ã'~ñ|ä'_ùËg~ó¿|.Œ`ðÃ.õ{zÿûà?_ûÛç~÷½?üèOŸÚËvpx@ýëgûÝÿ~øÇ_þó§ýå߁‰ø™ðn7|Y̏~û @@,@õÃ?ñ7ò+‹px@Œ@ œ@ ¬@ ¼@ Ì@ Ô@¸Hi½F“¨Ü@,Aü;¼ ?üC ļ)DC¬AD܍Aœ E\DlD¥‰DI„ÁêsK¼DۢĤÙDN¼ÁLäP ÅÎòD)ESL,T¬G” U\Å·jE~‰EYd+Z|7Ľ[Â\¼[ìÅ$ÅìFaLª_´cμyCåНKŸNºuêؙ[ßþ9»÷ÜÜÃþß:¼yòèC›_ß=½ûÈìُO¿¾ýûžßÄ/^7ÿÿ˜œ~ ¸Ýl&¨`€"· r®=(á„ò5h…¢†á†gáD(Zˆ$–Øއ™è›z*¶H!Š)ºhh2Ö¸ Œ Ù¸be:öÈ ŽùxBi9ãdJ6Y!’×8|RVy’V.éX–\zc—S6–d–É ™¤¡y›š•ÉæpŒi¦uq–ˆ#˜Z.›o*קš}Âhšu*h$¢ˆ§—‰í‰¨›…ÆéæeJi¤˜BÊ磈žÉ©§hN j¦•þ÷á¢"6ê秞¶ºé¥þ–º ë«®v*j­­âšk¨‘Âʟ…¨fx¬òšë®ŽÊ©±¾2ëÙ¤ÆÞ h¥Óúú«~Á^Y±möêlµfþ)é¸ÝΚl¹ß†Ûë³ëß{Ùrg·Í’K«¸–¦Ûm²Õ‚Z/²æþkjzñö7½;«l¬ì*<í¹Ònzïœýºûäx¯w0—³«$z_ìW–sÂÙ±‹‡ü.`*sù]Ëõý³•ÞÍs_6K‰]ÎGòÅs“Ôý|ß^B9]ÑC煴Ò-ô]N÷Ø\Ô×ÖEµÚ™Çg¹ªá^Ç·>h—mXaöÙh§­öÚl·íöÛp¯µqì=l­Çxÿׯþ„VÃfÅ €.øà„nøáˆ'®8áVÌ}¼’;ê¥C\2µ˜2¼o¦ºŠvžoÙö÷⤗núé†[Èꁴøx}¡žÙ¹ä 'ì­½¶^~;º´K.lè~£.üðÄ®úê®ÿv_ì¸C»;ÞÌF{îæÊú.½óÂ%zñÜwoúñ­«¨üòêÖ.¿ÏKoò±ÖªŸ·¶œïýüô3Îzò´8qÀºr=îì;ÿ(÷¯“…i-Û«Ÿé>üÉ&@´šÜªG¹eýÏr[+x·ì!P~ añ(>qŒkYú jF'¢Ž„&2a—>G³´$Ѕ8$ íTž«ÕȆþ Ì¡·ÃD±Æ‡R3Ë g!®à€ÈïWÂÓ ÑGJ bâ¤èD.v¯ˆ!ÒбH–%nŠQHÑXÀč^Tã¹øÆ'ÖÑxTŒáˆÆh4±˜‘‰h´£Ó(HAÒŠlD¤" )ÅC22ƒc‡öÈÇ>‚叇‹#$ç˜H;zѓ‹„#!éH<"¯Šš©¤“F£E@Šr”¡Ôd#ùIRv²”ö;¥3£Êv“†Ó¤(g Ëb“˜†¼e'M¾]R¦—)üe+3ÈZÊq™w¬£‹ JB2—Íä!|V·ršóœèL§:é#i®Ð‰ð§ˆxÚ3„þ³$V€yOJ’C“aa?:B e…Ÿ]à?7$V4¡-øtÙÎ}N3¢ \(†¨ôPŒz4u¬£hSsяzO£/zLg:jҖ®`¢ìéTêÒᡔX'›Þ–<ÃҚz¦iI·MOúTžöyÔ×ÄDšž¢@]¥ThºF8Bò©`,Û×ÚÔ¾ØUO dkX3Ô§4ªR… U»©ÍCõ­muëUmšÇ²­ù܎ç(%;ÙIêY` ,s§.Ž¯<ìU?yƚ¢5­NY+'ÉMÊ&³²¡<éýêY¦ÄtL|\¡ú (±†u°,+,éÜêMź֬Š{þ¬Î"[ÖQ>ñ‘È”ë#A‰Ì“ží®n‚iHEÊU¾ÚʸÏ:S`‚Ú‘õÆ°®½æ¹MÝN7–Œ%¨lgk™Ú&“–à5&v¿ÙÚ/þMSH\^ÓTÜÊýµr¦½Fs}6è‘·Ííxõ»ÛcεŸÛåîk¼;Ëðò׿˜%/÷ÐÜ2}ö2e{poF ºÔ&ǾÃ̯"9)Þ÷£®ÒR$ËFor·Ôµnv‰×@Βɳd€„'<½ÎÆ:ž.[«ÌþöxÅÚ.ªüÎxVó¿ ­ëy×ë™@ÈøGdűé„éã_ö²rHƒ•”µ.ðŽ8Ìꃝ³y]iF:^“ön§™¹L7,sûBáXåÛÜ2Å×M¬^õ|NŸŸuP(}ë—æQ9¦îZ_ÙëWäÊ÷ØǞï¬Ë\do¥>¶îuýBÌe ðúÖxîL°SÍ>Ҋ¶=°f5s[}Úf/Û*ö‰¶´çGmIóäÚ£Î6„õœÜaÛ{´ÇMöA”ìÁ¶ÚÙ…véš8Äe&´ÝîÖ ¼;-oVl[´ -|_=VWÇÚß9·PïÃi ‹ÐãεÊþz²ðJ7üá=ӈƣòŸŽ™µ¼µêË­ºcÇ<Ì"oÙNJ^è“Ó»jY¹Z[~:*ßöÊî°-ìé- Má¢^·¯}”ßL.rybkþÝM¾ÙÄû5¸²œðÜÎ>/³Æâb ­«9¼ßäð‡—Žt$30ç6»ÉÙa›vE·%An;Ülà°3½…d×yMönÖ¾gx ¼5ùÛM›ÃÅ`ǹӗfÆšê1Vûy´×v©ß3ñ#_|Ô×íøA>릷'êË®ú"ÇþοNŽÕéƒõÈßž³/˜ÞW/íÖÝ-¥ÿýƒ¯ëÚ7UùDÌýpv¿2¶Ãú9d~Âeþâù£?sñ=ö5/}ž ßöãÜ÷ŸFz¥ÙÍéÇýæŸ~þçÇ_ýå¯úÏÁ~÷\–÷ghù738Ñ}>µ~)g}D·Z×smTU×eyEQÚ7dõÇS8xu Èï׀øUwGGxÜôQˆ'f!å6- N.ø‚p3€*¸ìׁ÷ù…y¥tböu?…wŠw*8\¬spD˜„J¸„L؄N؄¥Fƒuƒ&}ã8(]†e†w_-u‚`’‚ˆ¶„ð„dX†fx†Q(z~Ò&!te´€‹S`ZXe$xe&„©'„Ö! HC}z•âfqñƒEþ`Gyq¥bvwVx˜1Pg|è‡Eˆtr)ýp*tƒ÷ôg=÷ˆÂ†á1‰(…ZÆ°æ†ohˆõhŠÍ§‡ÐAŠ•hŠ[E)§Š«˜n˜dó—w‘8Š}¸4jè(qBq¯'p½8m°Xm¢È´˜€CÇ(tÁŠËxw¿H€ÁÃXƒOñ;ÕȉרYÙ„ϸÑȁӸ#U¨ŒãøE͸(ï¶éÈ{SzË16¼øŽðXŽyxŽ{؍Ò؆Ͷ\y !t«†øx"íXkü؏2ŠÛˆŽ©Ž©o¹Xº¨¨Õ‘ qhf¢‘ ’áoáÖn8kó%ŽIWþþ‰ó(‰i©o(_)k嶐;ù‘å&X@9_Äõ(šˆÿƑ!‘”ёY^J`:hbZcX¦eQ6þ,”¡SOj|X§ðÙ{J4Ï%aHš‘&ѧûaWˆ¦"†¨4y›ôø¡!z§Lñ¨zQ_é¥:è÷RûF©a©"áp…ª©šžZí©¥RAªJƒh c+I«ú—?zqO©“r¹x˜:uT‰‚?ÁX9ŠºyNMñфV)¾6˜‚ª” z z Ê}Éj¨Ebm‰êû֜Z)–„X¡qäD˜-…^ž5©Ü*š<ê­|ٙ4«ø“試é©YI¢i°î®GI禫»ªn’­ö:œÞ¤K’ Êã*«‡Ú¬çº˜-ʜ~©£Y™> šÊf™ { ûþ°ªábéNknôYw9ŸÆš§/ᯙ °òh®µŠ®!û­˔ šš^yšÛ²xQX§S3Ë°–±±>ˬ´ k[”ú™´ƒÈµÉÙµ>굗Yf2C6’ ¬A7µ±Zµ]"ÎÚ¡kw“H‹ Äé•ÝZ·Ÿé®ýi¶g«¹I¦ê§DT»¬M ´‰Ét›¢D[²,š wYŸ|+LÛ´°q«kƒ[<«¬çù¶»ö±™®`¤ÅŠ—Â*V4K—dù¢~ë\ª! êž·µ—T¸ŸM¡‹µ£«’#a´}[¥RÚ Ä[¼Æ{¼È›¼Ê»¼ÌÛ¼Îû¼Ð½Ë+¼WŠ¥.þ¸Q똭ê,iK®µ»‰+´¾ ÀÛ·l*§ê»¾ìÛ¾îû¾ð¿ò;¿ñK§Ö+¶»°ï§{©mk¸izµã›µKQ¹xÑ °±¨Ö‹½j›‘v—z9—Ói£+ʺzé—9‹£A‚»Å¸©âˍkfNaÀ–ë²{¿º¹|¯»ºª´HûoáúÂ-¼Áÿ›»\tŠì¢!<·QAÂPC˜K°ù; ùz¬üF´ŠœüÊ£©Èß˱dd W$ëáÃÿq†^üÅ`̄Ԙ;ÌYŒ¥‘Å$AP*¸h° :ÃGK£;¹•§IǓkÃÿ À´9g| þh ¢Q‚¥—A§¬@È Ú}(·ìƎüÈ^<ÆñÇf È¡ÆÉ ÑgÛÊ® –Ðé¢"« ¾Åm‰³êšSì¶9¬ÃŒÅX|ȅì ˶\ˇü¬Õ ɼÜËJ(Éi ˁ|Ƃ ÈÃ|ÅÅlÉÊLÅl¿Ä\Æeœ¬ÂL±²ÏÁÁ2y˜ü̵ŒËޜÈߜȹÌÈÔʎ±Ã”ŒÌ°|ÉʜÎëÌΖìÎò¼Ì¯ ù‹:{Í7ÜÁAeÅÌüηÐÞLˬ ËålÎdüÏÆ,ÈéÌÐXŒÆí\<Ï­ÎklÏ <«ÌÇý¬Ã ½Ð‡,ΆŒË!ÝÍMÎ}þ@ç¬ÐÛ,Ì.MÏjÓ½Î=Ñô,ÍÝÉ~„ͱ·$=°)íAÑҍÌÍüÊE ÓÉÜÌ4ÑñlÌ%‘ÓÔ¼ÓûL‘“öÓ¶ÔðsšLRýƜËÓU)À ¬ÕÑ¡]íÕ–ÑT½Ç8ܱD·?lÖ¥±-k­Óa¯=ËÑ妢K×Ægn¬fãˆ}ØgXÕcM$ЁÕ Øù¸1Ï}ˆ}٘M„Šm:!ӎm$Ùò²qe•:çԂä¹Ú¬m6nÍÏL³]}Ԇ\҄lۗ!ÚB½ŽC2/õå=,@,°Œà‹J8¡É=˲<ÐËmË'=×įþk׃=<Á=ܽXÜÎtÜ-ÌÊmÒíܺ½ÕO!ċ¶w×MÜTŒ2À¸I»¢Êª Åw¬´üZ9^ª'Îà|¾tÖ⚥"º®^ Ê÷9Ç?™ÏÑäN¾ã¨Óã¨âEd‰)¼jN½ö‹««½&z£x¼Ä ‰àÔ­¹ÅCæ÷gæþ …ækJ¿êëÌîy§KŽÄs~´;`î²)œçîã.SSáêɨ„~ã«Û–˜¾¯x‹éLnçwþ«Ý£çñÇç)åç@M'ªP±èŒN¡ùýèeþã+ŽêYM·Ú¨Ò Ì Þd+è‚Fx­=ì¬Më“4bT/¾ë¥íÛUÆÁžÙÒÎËVËâ”.Ž ê¡þ²Ð~„Óþía|˜È~í@ÜêÚÞëCÆcî쎆 ;îBáæÎëÛ®¨ó-Ù7Ò]ä>zNïè~ŽïB[ûÝóÞìÎÎ/ðïeM¾|îõ®ê÷Îð~gíñ^°‘åê:ðoñÇgë ÝæÑþî&‡ñ òä'ó?ñÎòòÉ.ð)¯ðoó½;éoñTâñ$oð8ìô ?ôö^ô£=UµÞ5ïóL_+Ÿ*ÌÞçIÿò6ßPDïzYê[ŸêT_õñqõþžo âRŸóøžÑ,õËhðæG¯ô:”\ñA÷=o™ëÁ9â¬;kñ@Ïõ,÷ÂÌÐá\Ȉ Î$-ßN?EÌ¿IK–2‘ø?ñŒ¯ñc¯Ò„Î4-à³ÌÜÌýÜV?»Wν›?â8ë¢B¹å^®ž/ïm_ðOÏrX_D=Òß Î’/ҝ1‰kžüRZ½Yªë…þŸé¦LÃÒÃ_۟ïánßûßۇürßàýÓ?͇é èsêÌvº›†¯å(z臹íOöׯö3ßD Ò·-üÅïܬ¬$XÐà@A*t!¨Õ5ˆ%Bp­¢E/n´8cǎ9F¼èѤÇ@®dÙòàI˜1eΤYӣ˖ áä)ÐæO Aƒ¦t)ÔèQ¤I•eE çJOY r±ËÚG‚,™‘"W°"¿†û“¨T´/—®e+1-B;ߪm[wéY–võî围é\Q ÄBÀA?»–üÚõ#ÅŐ½F†,ï`©}5×,x0bVþ2—Åèu³e•-O¯f½³çÎrC·¦ ñ2fžµkwŽ‹»pC¬'µ’Yœ±î“· "gÞÜæëÞ¸ :?­\z^êšyËî\ÕðUáÆÅ7Þhú±Èɔ‘ZŸžÝ½{èÜ¥¿çËþúrúz· âßßÿý+l!Ãòˆ±á$KpÁ°‹ÁõRÃ.? ëZ(&žœ:¶ù*l˾ûò°®Ï°páDSTqE \ȅàÊ ½ôˆ#ëF5J ÄÙFôÑ(" ò¤§4$ˆCÜ~¼KÂWRr©&çJˆ@à&ZP£‘”h2qÜr-Ÿ³¦!%R"5LS  B³1â1Ä8þŠ2-ªÏ$ÁªÌK±¼TN&éªóP!'2ÈEÙüëQ§"5èÍÁjÎë, êN´~30¼?‰sÌVk´Ã\iâT*þzì¦0‡³LFa}UVG™5.ù’4–ØBV¦_Óº6¹j ÚöÉ Ñ\tÙZgôYV(ìۉXÙUZvÛÍ6³x#*¶^V¥¼5Ĕúõ÷_€x`‚ 68ày}Â×­„{Zøš{Fô-u;øbŒ3Öxà†%†¨a‡ŽØã8)Þd”S¾“d•U¹ÛöH®Óäh[¶ùfz=Æ?|G–YL<þOÞyh¢½e¹haãõùg%ƒ®i¨mþé‡AdúP§£Öz穋^Ø]˜¾ºd`…Þúìy™Žzc¶Ûv`—Ç­ŠÑ¶×®‘~{o¾1Ž[î'é6»Ò¯VûnÄé|î§êÖ¶ðl¯N|rx¼ñÁ×}9rÉ)÷üqˁîÉq´ª›×¼?W}ÕÐEç‰ôœë}ôÎW·ÝÐÖÄüiÍ{>N¹o>æÜ/Ç ö§³±¸ÒŽknöÒ~øâ?>ó§@;+ñFcþùß —~úÕ«·Þ%äYú 1 ´t_TSIʲ´Çê7+ü¹Z'ÿsóÉFûÑy‡{➨äw* Bþ}² ô’§¿ý%®þËI\tA b@/ú”h–7?,ÕO~RÐPð÷–âEðn¤`K°`"ÅP†¤RŒøĕ6ÈJ ì‚T¥þ©Pk,ÄʦÄAÞp+KaDž0zD¤bÙeDЃ¡êRHÔcš~Ñy4q`n¬xF4æ eëKÌ怘F8Æñ|Ù Öö”&ÅÊQ{¤Ôܨ8>RÍi™éÞ8HD&ò4…üc¦ùHHڅ‘¾kR$-yI¿¤Ì€Äd'=‰-M6uŸ$e)¯¡²M:Ҕ«$e(ë6N²R––lYßlyK¸ám–»„d-qùK[꒗ÃvL¤…HLd"Ҙ*Lf3¹Lò9Sšz„æô¦yÍ4V“zØäfµy»n†“…ß,Ÿ8ÍyNt¦Sëdg;ÝùNxÆSžó¤g=íyO|æSŸûäg?ýùO€T %hA zP„&T¡ ehCúPˆFT¢¥hE-:¢€;PKÜx&ï|wPK»~@OEBPS/img/rmitrx.gifk”éGIF89aM÷JJJccc{{{ŒŒŒ”œ”¥¥¥­µ­½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,MþH° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cʜI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£8¨áR¦NŸljjU§Q™JŠªÖ¯^¯†ºu U¤hÓª]ëQiÙ¤g;…«õ­Ûªq楋×îÞ¿sû L,ÙÁxÙ*^̸±ãÇ÷BžL¹²å˘3kÞ̹³çÏ C‹Mº´éÓ¨S«^ͺõBÉ®c˞M;!ìÚ¸së6}{·ïßÀƒ ÿØ{¸ñãÈ}Oμ¹óçУKŸN½:[·Ø³kßν»÷ïàÃþ‹O¾¼yëè¡ÏMÿp=û÷©—»‡¯p>ýû¡åã‡h¿ÍúýÇP(1] $¹¡@ (5¡B ^èP† ¡Fý-gàˆ!øP PŠ*j¤ …  Ô ÀÀ(âø"86p@ Ðր&’¨¤ZI6d Èå9!ŠD*€Pìød”} ‘ ¹ä™ùuD@—Qéãše®É@\0@ƒr>°f6jùÀ6ÞùJÝI¨„®9a À& ˆÂÕԚô)ÐŽ¦8€£;îhcƒ5‰æ©‹™úZvREäþ6>À£|i€M-P$‡±ÎZ@¯ŒöùàT⺔®pˆkz¥h¬¬ð@…**(m‰‘ª¨v‹·±è¢@(JËâàê⍤ž›nSê>*]ì6{©-fˆk²vÊËf®ÑZå».ÎK— ê:.´èšéíÃG¨‘®ÒJÙãŸsª”–c,-ŠFj7-‘h©qÉgh³J+òPzŒqÈR5EU˛jê0Ä< %qFT)P¼\– ³ÐP¹TÐÄùÌZæ•4US¹k•%7MsAy2MeÔO±èòSO ý´Ó;÷¬vO?c”§@b’9d—OÎÙ¢žlæ™gþÝ*w)nÝâæ©Ô¸{wÉ!Uz³)æ“ :ªÌl ôv©kW¾¸‘ìÖ~RiÀ¯6°æƒ éÀ¦£.ՓšŠna®“þ*\;ª~ú¬Ç¹íªÄúµ7 @,p;ïifùò7až^ˆÎ3/=qÞB?ýõ2EoöØw?÷ԁïýø”w+>ùèct~të§ï¾”Vÿþü¥Øþs÷Ó¯Tæõïÿÿ  û‡¤ýð€YA ¨­:ðŒ 'سZð‚Ì ïBÁ¾F~|`ÛΔ¿VÏ~ 4¡ õ’B۔ð„Œ¡ gø“Ô9ÖarnX’óÍÈ-þ rЇ."¡œ k!¢äZDªP‡8LËù`´¢»Hgùá…l¤íèb?ÂQÝV¾²0Šßꈘš5%¬] k~2—¼³0ŌÌj CxÈ<>HŠjŠœ›–'¿ÕIP‰ãSÖþ¨ÊP‡LÔ5/H ;x«Ô"1¥”ÌS›ÖÀÊhF?fƔ!9ŸvZõ”Wkl±Õ³Å«¥øê•Â‚P±Æ/-«Y·jŠµDY­€ak òddÌh–îd„×@Ê%0tÅ«^Õ|×Râ5/› _ßԋôu5tuóXc³¸¹¦ c “WŽ·LšÐðžøþÜ EPy~ò…é˜ÅºØ±“q,`™¤îbБm,eZ™(džI˜E©cÈâ ½ž‚3¸zöd¸üY’î aÚÐîV´³!MiZ‹)Ô4:ª MiASP–b—®9ík|_Ê&P’2&&=%Š(’TÈ4D™\Ü°€¹1pwK܎ ǀ¾ÙMX€à¬ÈÕÃ=E«¸‹ãüõ8¥Ð1ŽÉKŒIžj(-U"t- 7¢¹Bu.E [JìP:ãñnvimÝè;ØÌέ±4lbuהÔ!öwÁ^ñN××õ將ìK€hM•WƔvŸ-DjhE{×ö쐵°…þíON›ÓÒö1vem’n{¹Øúv¶©… oKä[ WŠ¾-pÍW“ã¦*¹r.Rr›\0¹šJ²íj‹ÛéF¬º¬.JO¥]õ€7D¯¯u[‚]•굏wBÝäÎ6Ÿøͯ~»óDК÷¼Ä¡z×ËÌÈðq¾LŠo€Sßߘ¾Û…î‚AªÛqPRl<ÈÊZ#ªè‘$ V‚`ä¸>ß{Š@ÝR&]yx.ÀéP¡K„CŒÌ€GLâsÅ"±Ê‹`$,áR™È²Ïü…X¶<J‰¿¥` §²fO±„0:$ÄQ`±J|D»lÞãþŽ_’æOyºU¶MŠÉEF¥P))0¥©—áG•/UHhJI€:÷¡5_÷ÍC4}ãܕ+±Y ªÐŒ ˜ ?v\6Ös¡Õ+Þ(oËDZ•ïœÔ0zÅ*Ó‰•\_ŒI¾ º-†öt“mj؊:ÈO$]l´®,¿fKΖ¯#»êaS8Ö²fꁲáh5q®m~õ¶œ÷äÑN˜8RI]Sž¤"iÇRÆ<V¦¿$MW›8ÈN6^—í¤GYÑ$.¦êD¼Ä µÙ,Œ ¶B¥/EQ¢wbès³Ž°¾Y¿ÐÍiu+ç¤-yҚ”Ùž‘‚¯Ú­m´q0N`‡«V, áuíþ:t#¹,v y³ÉK=Ӎ.œ*õÆ ósÏ á±@™0i•¹‘Ù­f†+¾O,g7Üã3¹ðR! ÜÏhSJ™ltºxA½àÁHÇZ P±ë_Ï´EY¡”iÐæn“]£%´O%ß ßxº‘~è ›ˆ™Zä¥3L­´jiïšö»(}äaf¹Úð™F,2©„?EÕV¤7ÆoÍ๧äÞÜNR"Â!>;H6³ÌܬVï…êât¼êÓ®ç–oõ™–<ܹbôóî÷ö¸Ï½îw_žy·Ò/ü~ÚOèâe§A…Oøç-]–Øò˜>w¶fŸ-G+›Ð¿®åéþ^Ÿö‰ló ±Q™úžVAG~+n¹¹Ïo‹N³‹$üu&ö¶÷‹H @‘±©B¥Ñû“wmÅb¾‡}bo&ÅqÜ7mØvr( LNÁmø:„6*!MsD0灨9Ç)°;¢„.=gf?'}CW]”§FÂGqw}Hµ}üe˜çBqy‘ƒßC}Íô.gx0Gsrs|&7çH££s ¥Q>'³rf°vt%Š6?Y؃Ç€VÆ['o`G)vÆ6vÃbv³||Ñ æG„:f…L•q UDÁ…:á…Eƒ&ÓE‡§|«G|²ÂxÎ'þзz›^D¤[wèDÿ傘¨—Ñ{ûǂ®wˆ¬'pûdƒÝ刏ˆ‡ðEt§Ƈȗel8J‰×|™˜a‰Èz‹X]Ÿhk8ŠAXŠ’ø…á~t†#ó×a)"ghè‚ú·znÈvx‹Œx…¡–‹º~¼(a¾H‰ÐDX2 荬„d"Ø $h‚‚‚J¨‚IX…Ñ8oØXJìv?և=|¦Š¶aŠ&䃮‰ïxŠsÆd÷H‡í¡!ď{Tk¢H fÏE¡„Õ8‰µ÷ú& ˆW–…ãÑR&‘Ö(wùfmùiþ8É%i‡'þ?)9ÙȒøøv/ “ T"ÙApr‹,¨é3 9”Ït“-˜“öc”ݧ·H¢ä‰´Á”³U”éՎ™“:)Wz£X¤#Z¦lŠ¦ 9m§)z¦6š¦jš”rš§EZ¢¡§~Ú ‡‘O t¡þù§†Ê XX¥‡º¨/y§ÂVƒŒ©/‰y’Z©õ騄ê{Iº©1¤¨–ú©Žº™£ñ©¤ª«I¤ ª¦ºJ÷©j©«Êª™Z¯Z©«èÙj¸Šk»Ú<ºÚ«Ü7«Óõ}ÀJw HÇZ¬ú“¬ÓUOÊú¬× "Î ­ÔÊܓ¨Õš­׈|ª­ÞŠړ[]ª6Ìú­z钸ø¬­ ¡Ê•íº£!ù®ò ?ðº•æ®óY¯…¯ìÚ¯¥AmÙ«÷z}Q°üx뚰;¯¥g°Â¶¯I°û°ÊC¯¨°:j® Ru؋û±qU ²$›#µ‘%›²D$³©þ². ¯Ú²/;³ªÂ¤Ó:³8[³Š³<ë™1;©=´ù*²;+´BÛ$ Æ€i´9‹®~©Ë´%»[ñšRÛ´k)›#{µSK´.è›\û±ÑE¡2¶êš•U; f+¶h«µº¶Õ"JYžã ·Ó#·“J·v«±òå¡LZ·{k9}›¢€¸k36Ë¢†›­Õ‰¦‹K­[§ ­ö*¤…;¹¨R¹8z¹˜‹&„_+°¡ºœû`¥k@š7ºÂyºËJ¬£‹­\ zª›oÊ´²«ºâj¶ëŠ¹T»åj®-¶¬{+¶d·V«­Þ"üÕ³`‹«·»Ñ;µ(»«¿þjO×û­Ä9¼û‘½Ïô»ê¦·jº»<¾¹xÇ3°džX°HO¼|Ë¥,3ÌÞ6Ì…jë{…r|9v1¾s+Ë4Lr/¯¦ËA9x˜Œ¯gq͜l§ÄB62!àœÌvªÌÊÌ61ö ¤õ[´« °Ê>|§\ɸ«œÉÂVÏÌlJЦLUh§Ìù¼pëܛìÎ59ŠñLÍ݇CüX[A2$|)ÙQ;§Á¾,Ç}nTqÆÒí1‚þÑ|ÁÆí$Î ½*&œ=쳏Ñò¬ƒ!<¤£)ßl%¡Å»åÌ"2¸gg¡Ó„ÅÓvêu"ÅHMÔb+›âÓYÌk[ì҅¬© è½Ý˛+kѳ¼&Û¼+›È_ÀŽ@ßc֖‹ÖoÉÖg}¾9‘û…ƒs=»Ô¾`Œ×Ü×|½¬wý×ô£×‚ Ø~]ØîC؈ý>Š½ØéÓ؎M>ÙÞ3ٔ=–}ÙwؚÙœÝٛ}Ø -=™=ڕSÚ¦M®ŸÚ§½Ú¬­Úë68YG*±×¯Í$¹øN Âùyy·½<5ûÉ4Ñ8-½¿-¸ÔhE9·sw±Ü͒a¹MþxvQL**7oÇÝÚë?jxЦ|v®X†:ÓÝ+îru؝ݰ̀H†Ìçæނ(ðM$œÓrYÇ ©Þ”܆·‰Ææß«à'C…1ÝÕúÍ3Á­ÑĈ‰°×ŠR±OÂ,„ˆ’þ0 þº­Œ¯˜qI~¾ŽÒVgømà\³l'ÁVŽ ‡.,îk Sj/ž.‘7ˆW'nᮝãÙµã<>"¨ýãäBþD^äÝëãHîG¾äôÑäNÎÀJåO>åT.å¢}åIžåZ~PÞåácå`Æb>æÓñåf®ežæjÎål¾=kþæŒçrîLn^çҁæxÎ`ct¾çáÙç~Β€近¾¶Mèàzçˆ>秴è-̹Íì褁Ò‘m•îå¼yé™ó«œÞé»ùéÍEê¢Îä3]ÛÜqê‚ËÕâê¬~·4ë´^ë¶~븞ëºn;PK ±pkPK»~@OEBPS/img/imp_tx_server.gif:!ÅÞGIF89a3|÷3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3Ìf̙ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3̙3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌff̙fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3̙3ÿ™f™f3™ff™f™™f̙fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™Ì̙Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿ̙ÿÿÌÌ3Ìf̙ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3̙f̙™Ì™Ì̙ÿÌÌÌÌ3ÌÌfÌ̙ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿ̙ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ,3|þ¯ H° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cʜI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·YɝK·®Ý»xóêÝË·¯ß¿tá °áÈ+FL¸±ã©‹#KžL¹ïã˘‘VÞ̹³âÌ C÷ôLº´é»¢S«–yºµkÏ«cËFùº¶íȳsëîx»·ï¿»ƒ §ø»¸qÔÓ+Gx¼yóåУ;Ÿ^<ºuáÔ³÷¾Î=·öïµ»þ‹WÍ€ùó¬Ì×UŸ—ýÜóî÷(þïüããóƒöë>~_ÿìùw—€ëÝGà€÷§ß‚ñ— |Ο\Ha„BØ߃ ¦Ç¡‡êMb†rÆà‰ƒ9ø^„¶xá‹t(á‹ÒØ¡ˆ-†È¢Œ6Âxàg(ɖ}æ(a‘â8aFÚµä‘#®xá“>vH™X¢E¤”M2©#”1Bé%˜NŠÉ¡Ž0rÉ£‰Y¶9֖U6g˜¢™f}jbçšv®¹™›€‚§‹hÆW"—aÚY¥•QN¹â˜|²Èf ”jžŠÿ1 ^¥œbu©|?&úi]–JÕ¨¨ÂfêªO¥êjeþ¬ÆÊÔ«´â&ë­GÕª+c¸ö:Ô®Àçë°?kì^Ä&ËÓ±Ì"§ì³65+í\ÐVK^X¡í¶Üvëí·à†+î¸ä~ûµè„—+´ëî»ðÆ+ï¼ôÖkï½ñZqnºü®´.¾,ðÀôZÈÁL×ï´ÝÅ.ÁG,q¾+ÌðÅ#ý;ñÆlðÁc,²GwlòÉð~œ°s#·ÌQÉ(ÇܱÊ!»<µ6;³Ì‹ôϒÑ혟6è}%[W ÊEéJ[šÒóµn›uÖèK=z/T½®@ÕR›úÔ¨N5TkV_NwÚÓØ5U  êZÛúÖTe5[ñ«Wt7Šáë۲ؿžM°‡l%»Ù8Svb„MlhZY`F¶´Cmk_{-ÝQj‘lk;‰Üf¶·)§)‚„Ü1÷¹M˜îj¯;µíî&CÅùJUÖ°¡‘w³é}˜nßßùþ· ahÏ{"ñáøÀE³l{ܳn‘߸'ÈM}3–á.7fþšŠ_<1pAèÆù)ÂVBÞ‘¸µ÷3muŸ¼Èli9ËÊO…â‘ùÌ1cò›ã<ç:G&+KˆÊÃü!B÷öeŠnô+êRw Õ«¾elœëÙ:בõ,¬ß›0b»V©2ˆVtÅìgLÚÕc©Û‚p{VàNrØÖÜâtwoU\@¸ z· ßûÎÜ¿ âñ¼ä'OùÊ[þò˜Ï¼æ7ÏùÈ·âó ½èGOúқþô¨O½éQøÖã=ñ I%Dq²ø‹7>ÝXpîwÏûÞûþ÷À¾ð‡OüâÿøÈO¾ò—Ï|Ý·þù.€}B܍OÚ=ðÑNËܱþŸý©´‚ð®Ï{C`ËlsÜ­¾GjòµlŸû‹~ ø/ýØÓPŸç_øÇKÂþ›kÿïð'xSqwâ7OõpÜ´s ýçgñ~ÜgŸW ·â¤>Ç×€Ý'ˆ}‚Ù§‰š©y˘‹}1—rQšFÍ¡›Š›²éh5“Ry3€1—¾)€PÑu;1ɉ²x(Äè`ëœ6QœÌؐþù|V9‘ÏمŸhTÍ霯É{é™öÑdf†šÃYëX“íŸð8ŸsñUh†N¸,ÔaŸ€qžé5eg’e¹(xae_b”ç%#è9[4Qœïùôi“š“å)YQ!q:ñüùþé’gé‘K©–I9 +Y”$ù¡bÙ~1AœS9•òy“ô‰œjuøIv7ê )É£o¢ké–ùõ`"I¤ý¨’»¹¢Íx‹É¡0Ÿó˜£ñ·z£8:£zŒlْ)¢(:¢‚‰’^ ¤ey”*šjȜaƒõ${4Q¥×ò)RÊ;j”ƒ <")'YEjbY„i—Ñšþ|3}úǦLxpÊ£2§ ¦¥Ó²§¢i¥«©X@lÀs¨Ç$ƒ µPÛÄ©Ft‹ª.¨â¨zœÇckXišX`xh¨XƒˆÃt«¢šŸ1ñ*¦š¨œº2¨•:mó‡x²ŠŸ ª¸ên¿#r6ê´Ò«Ø©ÀÊ,qZogy¯ }±êtÞdLú¶¬7t‚1§«Ð­X ™ÔZ­Ç2˖{ÍÇ{ÜYxÑGCRt¯âj«7®1ª)±+Òz¿Ê®Áº«„ ÂÆ­°WöÊo¬ª$ô°!W®Ïú¯›®›¹®Û®/Ѫx!ÅZJᯐu±¬¨»±ÆÒ±ëþ¯úz^h®'q,k«²µÄ{7¥#+³% ,5[7‹³š¤³-k¡V´%A³kš) –—6µT[µVKµ¤H‹s5ˆlv¡LKN{²?™µ‹¡?tÆF4ÅHH;¬´5$ ¶Á2´tQ´‘a¶g{Eiû)çʶW£â¹µº"·sA·e{·väT³iVIK£Nñ¶œ%´O»„«vk¸=´j©¸|ˆ1[±3 ¹b ›Q[•k¹„¸™k±›[¨­â¸¸‘û›£K¥kº\ƒº„¶¶\ –Ø»½ë¹Ÿ »¡kž³;µk»Rƒ»ÔÁ²«›¾û¼{¼A‹®Ã –Åþ+Nj¼H£¼º¦º»ËšºK½µ1¹‰‘½®s<Æ#/Ñ=~tHj†¹Ë˼ß{‡áë*‚+ä‹曾ƒÄ¾ïä¿w˽Z«¹ó;†-a²ã{½uK7¡#M†¤<‚D8ô¾O¥¤Ú¼\Y¿©r¿¬¿‡±¿éû9”ÄK’d>þs¸ðëEìYòk¿±ë¼ \¸Ó9žÔÀ¸IÓTÂï„¿/Œ°1l{{+Y¸ÉÁl ¼<ëÄ¿»4Â'ìg)<ÀL—CÌx<ð‰Ät¡Ä3L¹Ã?<̋¨Ý4±1ÑЀ{)`,ÑL<þ0Ü3+­Æ W Íüù²Ýjû„äê$¼šÎÆ´<Æ4ÁƒÜ?CÝ?¡äN³½/½\»Ë2²qÓ íPKÇ@õ°ñöµ¿ ÉV™ÊzqÒ­ÒžÜIR,>:|ÖiÝÃJÕÔôµÑ£œ­•·­áW+çJ/·¸ŠÎJÍíìy,Ç<ëÓ: Ôâ,ԁœÔås;OÌK#ÌԝGîj©ð¯Î7¯õzȊÕY½¯|M«}ÍÎ1ÍÆlÇÛɝØüÎb}ôÌ?f|Ñ£4ÅgëäN‚\ÈLÈåÖu­ÅAÓ"{CáFÕ ±ªNÞ~=ÚyØéÝàsÜÍ_ÜÞtúÞ)]Ð¥ßĮ̈¤‰©nËÕMÚ_ݝɭÞ_á-¹¾É~ᑠÓؽ‰ëá]­Ì]½âÉÕâ¯ÅªÝÛÄíÐäyⲋÒ*Žãµ-‡GÇß0îã2>ãû)áJäÊläG.åì¦äãå]ͽ 姚âSNå„áÛ%¬øL¥MîäÎQã¤ÁÉöÆbnYd~ÛXžËZžàpäÍÚþÔqn@¶Ýµ<®Âw.Ú¸lînŽKD½Ôo®ÔtthsncfžåLŽç/®çÈ æóLÑ8lÖÑ=I¡çadÝ>èKž—¡êå¾Êé}±èžÄN 4ß8<ÅT¬ãŠ\éǽ¾þ‡†^ç¹íêÓjå±È9 ÝÑä؉ëþm”ê¿>í¶†é™ÞåB.ÃÆβžìË.ݳÍ֭많êF«Îæ¾æÄ.°°Îí€ êíTë4ïÈH^Êé~èën³í¾7Þ1e\¦^æ¬~îíêžíÐùïzðé?éw6žï³Âž™ýN´ŸÿçCñЎ¦_þ,OÎð‡!ÏÇò(SðƦŸúnòš~‰ohîò”nñ8ۚ ¿çÍÍò-/òWó+'ïó6ôÍ|ïÁ®óÕz—ØŽôm®ô&ƒó‚.óÀªšÃŽò™\ó]Fõ/õì}‹õì©õ®Éõýéõsö­Eîtnô³xQ¿éÛðlOnŸóqÛsOóuÿðwoÐbϺ{Ï÷[/õŠøˆ$ôû\ø<ŸÝ?·j_•{µ–ù˜.€Îôàéø¯ñhÿÓïñ)cvkõ‰æùPúˆ_¶˜uúfáS,”÷W¯ú>qøt¿VV3°_²ŸXŒŸä¶oø¬Ÿû•áSçT¬ðûdþ‘-úƒúÒ\üŸ'í»»»ÓÝ'‘¨`Sí"ýcOýDß-Ü3`V‰Åýš½E¬ þrNû©OþՏ—‘ŒÚŸ/Ý BæW~^»6 @.dØÐáCˆY²²Â¢•@3²âØÑãG!EF$YÒäI”)U®dÙÒåK˜1eŠ¤YÓfHAÝäÙÓçÏ@+®Ī¢Å‹&,ØÔé҃Q™BU8õ©L¬']Qcџa9f%[ÖìY´iÕ®½&֭Ȝ;ßÎ¥ Ò €®`"Mڐê_„W›Z-850a¶(·"õª±.Ïđ%O¦\Ùòã¹q1ov»ñ#×¾þ ÿ Žzñà…§-7\|ñ«^ÎWϦ]Ûöm…±jÖÝ[,è®JMÌ´ðAƒ…‰ãÎM‘ñkß™O§^ݺÊè7ygçN¸™Æ¯cwîúk÷ñéÕ¯¿Ý®N÷ñ?ó S<{’­óžÏŽßÿ͒ï£ítï»ÙÒ¯1Ï¢KðA#ŒÈÀŽ ¤0;%°¼ýëOCCðB /¤ ¹æã <±Z:[”qÆêH„ÏDÌ° À=Ê05„îÃJȇî#ò¬ùóF&›¤ÍÆq¤K°Ò¹~ͬ#!J.¹µ’ôpI'Ë431 ãdM6ÛtóM8ã”sN:ÛþÔÑÊ+±Ð25ä‚\êˁ‚DN¹§–²*? UÎPƒ“ˆCa‹íLJ+B2ÕtSN;õôSPCÕSýZõ°ÒÍV\ù„êÏÑ}•Ùü …±7`»õÖ¤aà ‹J<±ähOV«öÖÑ ]wÖã¢u×Vz³AݾÕw߅Äõ—'yŒÝfûl·QG.´àt‰ Tª„ÎÕ^m•œ”_Œõýwc¸¢ìˆ` U;é^I7Ëøän9V™'Cî2Û]·½eš)]ùf™dnköùLœþƒöQg”yÎ÷g¤›z閽5z椣nq頛N¹â1M–zk©ÆÙj`ŸÖšk²#ôúf°Í(f‹1+ûmÏV¸®¬ˆô5¼óÖ{o¾ûöûoÀ±Æ÷1¸ PnŽé~.pÆwüqÀÙΚpÃ+gñ¿ÈnÎ;÷üsÐC}tÒK7ôÅ'¯ËrÖÕÃÜ_Íé“)NývÜs×}wÞ{GVfÊ[žº×ōw@Õwæ›wþùÔ§kxê‰/^ØãwO~yè»÷þû¥Ÿ«zòÛ»^Êìuß|öÛï×±Ë—¿²óÑ÷~}÷ó×EàǟÿúÕïBéËþöwÀöÁ/xþd ‚H!â΀¤`÷¸ºfP-„àý”WABï‚þÓ` ‘ÄAùDðv a w7·˜P†eAa =È=æw0tË }è¢vG…³c¡½’‰å‡K„I…xÃ#F‘më!­¸'rgˆ²+¢sÈð\QŒ)Ébt¶HŸ.z±…`üÉÝX’2úæ5§ëÜp:æQ{ä£çúÆ7Ò^qäŽãìxÈ%R‘‹ÜùÈ~2:†¼##-yIÈ9’”ä$GL†R”~›Þ&MٖN«D©Œß)ÉJa­–šte g‰#YÞ²Šµä¤. ”K_¶‘—½þ f|€YLÈ ó‘È4捘©Deó™¾9æ4CMiZ36ÕÔ¦t°¹L]–J7ð7»9–o¾2œ!glÚÉszÓI7I'8oÙNrâ‰Vb'?÷©O€¾óðt¦OÌDÏzªs–âÄ';÷éЎä¢ -gA{b&ñu$¡ …å@ñ Љòó£þ(+â©Ñ2e”å(+= щ>ô¡…i…,šL'©”¥-íäKû™O’‚ô§2­¨ÇpÚ$îôç$jfn’¡ó$Æ¡*ÀT›Œ*•§Ì,©[¸0©„VcM—m²ªÕ¥2µ.Ü$—•°Ð ”µªë¢ vª¾ "gEþëÕºVÔiMw*— àZñŒ[íb—ºHƒñõՖ}KNFµ©b]é°™«cõ¥ÆžFP*‰¬dݸPÎ¥«EíINJ…¥Íz©P »Õ¡æ%Z—”Ö´bìhD³Z“>$m%À[ãJÄ4ªUòº«¬N¢ÛÝ^Ñ¥ ª8ÿi]ëH¸« R’×-UPv]”­Æ»éE÷´©,iC)*Q™J¸lMFK¦ÞõJ²½}o|ùÛTÖ2§÷Å/o{ê[÷Æ´¿ðîvib_ÙØÀ=M-I|áÔX˜Ž°„¥KÙÝ8x$)•”‡' bžœTªH…‰OŒb›¨x¥$–§þ‹™ã‹øš4F©oŒãë$—äšÈ¸Lы‘?Œdœ9$£¤ò"‹ìdBù=FíI•½ü¸+cy†Zn0—µ)f+’Y»f¶&š¬f‚²yšn~³še K:יÌwfežõ e>§ÒÏG†s %9hBÛYÊ5fҊ-ÃB/:Ì3rô£Ki98§3¶4¤é¸ÓYÞ³¤+=£ŒŒzÌ¥õI¬êUÚԜ6Igë¨Û¤Ö&d5Àêû]óÛ¹³Ñõ®5Øë›tW¬Á¶u¼p­ÜÁ ¼è „±y-ëV׸ÇeU^Æ\pϋ´Õ¶ö±±-XAöJ†­uYþ C­?5l¹·¾ªIŠ]n’ù²˜Í¬ bë*ƒ½»^ǹ­¬ô‘{ã€pÎñkÙM’u%·àán츞A†Ç¸Jný·l%­nOÛÙ؊WÉS’ð‹Ï/ã4Qö«Sžï•ãä×¢~ùÂcnûÖæ7×4‹unsž‡Úç?WyЅÎ$”zFw5͕^>¦wxèO‡zÔO-£¤S½uV¿zײ®uËq½#_&{àÀ^u®—]íªëúÙ 'ö º½p¯¡ÜçN÷Ú}çx¿žÞïÎ÷âù}ï€GœàNx¹~ðˆ_šâÏøÆ;¾è¼ä'OyœYþ˜šæ7Ïù•yþó ç˜è/=Oz™þô¨–ê]ÿzØÇ^ö³§}ím{Üç^÷»ç}ï}ÿ{à_øÃ'~ñ|ä'_ùËg~óÿü;PK}Øñn?!:!PK»~@OEBPS/img/trxejbap.gif³LêGIF89a[÷JJJccc{{{ŒŒŒ”œ”¥¥¥­µ­½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,[þH° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“!@¸ò`Kƒ*]¾$Ó%K–3քyS¦O˜9uöú³àN£CQ*]Ê´©Ó§P£&TôÁQU© ª•¨W£W­†[”fØ®f³ª•ÉõìØ·U¥ÊK·®Ý»xóêÝË·¯ß¿€ L¸°áÈ+^̸±ãǐ#KžL¹²å˘3kÞ̹³çÏ C‹Mº´éÓ)ã¢^ÍZòØ֐_ÞMÛ°ìڊoãÞÍ»·ïßÀƒk¦J¼¸ñãȓ+_μ¹óçУKN½:bÕÖEbÏν»ÜíÞ9þ‚O¾<Éñæ-¢OϾ½z÷×ßOjýàußß¿[¿@ù 1P\ @$ ⩄ @ (ÈЁA8P ŠÇüe؆2”Ô@ôaˆ è @¨t@B0ðÀ‡/šÀ‹ x”_‡É @X=…;.øᎠT2‰$DVŠµã> é%D&D•-Yã˜\ŽÉ@S0@j>0f-FùÀ-¾ù›*½É§›|Ž¹` @&ž€ŠӘÔ)І‚8€¡2ÊØb…ù姿yÊUÖ´ã->À¡d=°£þÄ´¦ºj¶Z'.ëJ³"a¬ü⯪PÀ †(à²mš¨Ô¶'jA#–(Їˎ8À±–è"§Þ‚S¸`JÖ¸ÆÀ)‰Æ*¬›é’)«²{2in‰ê’5e³j›ì·]Vk0y×4ë²IÒx'¾”ªåÂ/ûaÆ1»#QFÌñÂPlƒËf|À‘?ŒñK1ÕDò¤’|ðÌÙ%<В= „î”\žœ³K®„óCŸeX@ה4´2É1Ñ<¶:PœC/ytK#–Ü’‘9?àó´4‡MÍÅ)P–[êH¥‘k’('™qÆÉvÈTfËv¶qª¤­þÜTBXSÜdfid†*p2™e#ީ،›Æ!GS5€K°À© ŒÉk;:à*žŸz¶J!f®`¦o.ºJ2~îùFÆ|¸ëŸû­7 @#‚>Pç`+„aãÄۆÙõýXüò±ÏüÏGòôQ/ýõ‡YŸöØw÷Öz/>gà³WþøèÛu¾yë§ï~TÒÅ/ÿüô×oÿüïçØðúó¯ÿÿ>j_ØüÀf„€L ÈÀ:ð¬Îý&HÁ Zð‚h‰ ¡"Àðtpƒ ´Éó>ÂBo„&L¡zœ‡Â… pƒŒ¡ gH½<Ž#*¢  Ä«õAþ+Rˆ„"¡1 €Sr! Å·Äáؐ…9‘ˆÜö)¦ˆTiэ`$#‡ÙèElÃ×┨†413g”™F²d,%9ÍIN³“A¦T%”a e(Ö …WF¤ñ2LâFÌf¦Ä¥©nmÒàèô´;å©@òS"õCB© Qzª!£u§H¡Hc–ê³ô5Æ>^$•A¥;UœRµäT¹Òš@^…¬`Õj%·Šå®zº{Í AÄ2¬bò¬Q: _ш€>‰SbD•“æ39’­p+_ßB»°i®• K]-»Ñ»ÄùÄ«iß'°ð5¢b}q1ù×Ö®¼NRþ¡¡>÷ÑH32ÿ|ÏF(Ö°-RÌcÃÅ.¦(­ Tc¯D6J­ÕðdH¢X°¤N 2 v¼ ^>«W¾€>ƤAÞÐtæ6žy-jà ÔzT´§!M¦1U Î¥™J-q2ªšM±†¯špM ¢,åHçs$ð¡´1O•òÌ;”¥mG ¸›Û'#¾1€nm€V7*zÕo-ájU‘4¸zŽuU•£qb’¨4‰]sóD‡ /r}¢ˆ.·’Ô€s¾žèª*)âNs‡]â€ÇXÍN±/¹]îv×»Ðg®eÑNõðšWÐvÇ®7džòJ²×“’¶´øôþàkg{%¿´–5ÿ¼-T_k=Ýچ¶¯Ý_ôr;ZÞ*U¶ÀÅ«p[øâ·™ìK®rÿâÛÓ—©À%[u s$é.WµtÙnbºK[›‰W0äîw—wÝíI7açýžtkۗøŠfµçqnv§]ïrðxü °€œœ о…Ioyù[Ï~®Ùõ»àSúó³Òjh¢"2¡¨&{LÉ| ÏöZç“ ˆ[" zdð܇´b‰0 Bñ1‰áÁ8ø¹MÍTZ²“°,‰K`Y¡vt¼cÆô½óEñ…‡ÜÆdՈ †úÉNÚteÖ W ± ™Üd¾b÷½ Ö+þ†“¤áܓÍIn••”3•$ UÖ+™Ë|¹")VMgD¯8ÇÙTDÖ֠ŧ.§åÀH5ruŠ^·¤Œ%¸ç™ te@Lr¾«{–AaÀ"õwT%ºðdG³Ùe;þñ¼ä£cãõÃ;ù²¾l¬µW%éå,ü¢Ï}’õNô¤_9MÊ䈿;íxÁ|J]ý•%1 ð_HïŠS ¿wúòU^,ꫜi*îû?¬ßujˆt|†?eà†¡ö€nqp)ØkEöQ¨þòºc_Õv$ô‹H‡}òÇlÐX§×Žð¡ÔÔæ¾{ÎßúŽÜÛúi¾ûýGèÿWú"uB ñ'ÀL±sXwg$x:ògxHTMóCbÑ ®”g‡ƒ€”³3Jß2s_Vs hɗR!a$ — Mþ·x({Re<¹§>#˜!Ñ9¤4)‡&Çf˜n©s %54‡«f>Òsú¦k.˜_ öj?7ƒ/øP‡RguSw~W'v=´uù|­²$ðg,wvƒø„§„K(ZMƒuñp;—y× {Gd^ˆjç&|!x„çu†z|(fhFܖ†Lè^ô§|þzVwÃLJ¥Gm£×ˆ·‚)5ˆ„¨††˜\·»G½G‡°V‡´×j…W|ŒøS~ˆf‰—€æ…¡=eM[d~"嗅cø-ë×~…† õ‡eøzgøg­x\¯xˆ$˜ˆð€n®D<øX ¸ì&„8GHŒ‚Xa‡pIa-°¨oJáw卫Ž~oÂ!Ž"”‰ûł¬å„®¥Ž²¦‰±èŽÁ%Y_åxp )’ó·‘ ّ±øþ‘oX3,)‚.Ɋ0y‘îѐõ’ø8’7y’ì3a9=És?ْ¤vìHWäHQ”MIƒg§^~ubLybMÇ¡iÅQ€©D”ò8•:‰\y!^i8öŽ2I‘Ö‘S‘–)iúm*R3qy”i7p/ H«uC46}‰ˆ®w–uÙx)” —1‡æ–o—R©•r)Aª(˜vF’žÁ–“i]ƒ˜—iŒT‰‘V٘Žù˜kY˜3±$$'A‰¹Œ¨I[먉‚É‘›ܘa4yÀI`wiF+©Ž¹Ù~AZ<öy’r2§¸-dØ<'qœ7YÖyØ™ÚþY^“Ui›ª¹š¬É†PՕACæfWPDÛùžðŸòù^é—4éîi©D’Ù($Ò5ÆQnf9ŸZ *Ÿ?’Hɘ«w º™“Wé :¡š]d靵ù`)¡û9Bú¡ z  †bÁY¢1$qù™ªZ!Ú¢.ª#J/:£4 ž@é +Ê¢5º£<ú!¦é=¤  š£ì%¤H¢äµ>IÚ¤J¤j¤Gê¤Tj `'£Uš¥Ú ‚ •ª¥b £ƒEcz¦}O©J)Š¦c ¦3â¦rj£N§f¢x:CX:§|Jpj™¼Ñ§}ú§þs)¥@*¨sJ¨¿i¨¨‰ª¨ý˜A:©·f”z©…Êi˜zv:@Œªo]¹©êó©«Ñ©¶!ª?Gª>§]¨Úªk™Šªêª¨j^e*«¶êd„“·º«¸úLºÊ«ÎGžV1Žpæ›QùÈjhÆJÄ‚¼Çª¬ÅʬÐZª¾ú£Àʟ[¡œ¨ØyÛJžÏÊ¥ß*­Îêm±àj®Üjª§ªF™­ðÊ]§ô®ñZ¯Ôå®õi¯úJqøJ¯ûú¯mhž‰—{Œ 7°”ÑT{‰Ìç’Fª° ›†@âž+º¤»„[û«{§Ruû£»ªË[Yù »…­#»câþ`ȁ™) ³+Ëgò˜Ýù[:³¦T³â™³Üu³:«BëÁ™j™=´Î4´$Y´8 ´HBÇó˜œ9^û´IûK;žM;œV AãqœÉµ6¤±][Fù”`»µG[¶P‹–›¶?+i'‹²lû”·9Ÿç5¢s[«u»@ÛѦU eÙõo±Ú·Ö•8*_¸)¶§©ª¡ ?†Ë¯,Q¡ÕE¸LmÔJœ~eŸç8¹¶ž‰k[=ë¯ö­.¤’Šù| [_•¥¤k—Œ[q+’™–f®Ø‘+±i,£(¸¼Xá»ÃZ»Ð#©­[ˆ7Ê¡(Yº¦[­Å;+—ÔJ½Bþ1ŽEV½¿[¼'$½½×뽕¼Ó9*ûÄD«µüé¸Õ»¹îKd¸†½§+¾ùñ½× ¾áë¾ä‹‰Ó#µ›ºÂÓâ­ð‹*†ºAÈ½Ü  ܽú»¿z…[o›œ<¬À÷‹¿È*h¨»½|w ìÀߛÁ…ÛŠ Y€;œœ¿¼Á ç+Ã.l¿\ÛkÂ%,Áˇ¼¡±Âk›¬ÇÚÀ/¼Ã,€ü¾<ؾ5LÄ7ÌÁP|Â(l©£Äw¹»-Sº[ÄÞÚÂ/¬:l¼]<¼—Ö»dLÃ<ìmìJ]*Åiìk»£ûÆèÇÍÛÆtl’Öe¹y<¹]ÚÇþbCA€l¸Ê)<ÈKÅçȾˆ,«‘Û†·ÛȔjdž,ɐJɏkÉéÃكɚl’žlmnüÉýèD¤j±:ʧŒ…«Ê«L'ìʯŒ[ !˳l]±lË·¬Â­|Ä» Bf¼›¾üËvÛ­plÃÄ\Ì^êd!œÌ04®‹¼ºì̟Qi¡üLILÍÏl`×™õ«ÍÛìÍ£ÊÉÍ Î_ hä\{4ÍælʧT`ϙÙÎhöãOôìµµœÏäÆìÌÏ©´Ï}ÎÕ<Ðý™í·ÐäÏ @ýÐÑý?]ÑùsÑí>½Ñu¼Ð­ÇÒ Ò$ÍD&}þÒÝÓÑ*}=,ÝÒÕÒ0Ó#=Ó¶&Ó6Í^³§7ùւ͖Ó7íÓò”7Àu Ô.={y3NÙÔKñÏHº>½ˆ"òr1§?ˆdv’Õ{)øwšQ­ÓS]\ØuhÍuvx…(’Öú’*åÂt£©ºemÖÙgzèi{Mz±Ùן39"ç‡z×ò¦ÔÿAr¦7h‹í~uzc„‘l׆Ý8Ì׳r‹’è׈·FR,xX–•=@ˆ=Ô½8h§mi€}©]/ °tZèb;ږ½ÓnÂj×è2ô’Û–v9íÆÛà2IèօMÛ4óÒÆM-ȝܟ²ÜÌí%ÎýÜAªÝҝ!Ô]ÝûqÝ؝<8½Ý¢ÝÞ½=ÝÞÙ=ÞäÍÝ5}ÞÓmÞê-ÞéÝÞ`ÂÞðm>ò=ßìSßö0øß·ßüýþýßsàNš]àLEàà½à€úª>áN>îÞî|áÖ¨ݬáîžÝÚá!ޚËYâBÂÈßCâ(N*{éÜâÐýÈO}È2®Z/îC,~ãCC<þã@î;PKþ'ߤ¸³PK»~@OEBPS/trbtrx.htm£Q\® トランザクションのトラブルシューティング

13 トランザクションのトラブルシューティング

この章では、トランザクション失敗の原因を突き止めたり、問題修正の手段を決定したりするためのトラブルシューティング・ツールおよびタスクについて説明します。

この章では、以下のトピックについて説明します。

概要

WebLogic Serverでは、実行中のトランザクションをモニターし、ヒューリスティックな終了のケースで適切な情報を確実に取り込むことができます。また、データベース問合せ、トランザクション・リクエスト、およびBeanメソッドのパフォーマンスをモニターすることもできます。

トラブルシューティング・ツール

WebLogic Serverでは、トランザクションのトラブルシューティングで以下の支援を利用できます。

例外

WebLogic JTAでは、すべての標準のJTA例外がサポートされています。標準のJTA例外の詳細は、次の各パッケージのAPI Javadoc (http://java.sun.com/products/jta/javadocs-1.0.1/index.html)を参照してください。

  • javax.transaction

  • javax.transaction.xa

標準のJTA例外に加えて、WebLogic Serverはweblogic.transaction.RollbackExceptionクラスを提供します。このクラスはjavax.transaction.RollbackExceptionを拡張し、ロールバックの元々の理由を保持します。トランザクションをロールバックする前、つまりrollbackonlyに設定する前に、アプリケーションではそのロールバックの理由を提供できます。トランザクション・サービスの中で発生したすべてのロールバックではその理由が設定されます。たとえば、タイムアウト、XAエラー、beforeCompletionでの非検査例外、あるいはトランザクション・マネージャへのアクセス不能などです。一度設定された理由は上書きできません。

トランザクション識別子

トランザクション・サービスでは、各トランザクションにトランザクション識別子(Xid)が割り当てられます。このIDは、ログ・ファイル内で特定トランザクションの情報を他と区別するために使用できます。トランザクション識別子は、weblogic.transaction.TransactionインタフェースのgetXIDメソッドを使用して取り出すことができます。トランザクション識別子を取得するメソッドの詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.Transactionに関する項を参照してください。

トランザクションの名前とプロパティ

WebLogic JTAでは、トランザクションの命名とユーザー定義プロパティをサポートするjavax.transaction.Transactionの拡張機能が提供されます。それらの拡張機能は、weblogic.transaction.Transactionインタフェースに含まれています。

トランザクション名は、トランザクションの種類(送金やチケット購入など)を示します。したがって、サーバー上の一意のトランザクションを識別するトランザクションIDとは混同しないでください。トランザクション名を利用すると、例外やログ・ファイルでトランザクションの種類を簡単に識別できます。

ユーザー定義のプロパティはキーと値の組み合わせです。この場合のキーはプロパティを識別する文字列であり、値はプロパティに割り当てられた現在の値です。トランザクション・プロパティの値は、Serializableインタフェースを実装するオブジェクトでなければなりません。アプリケーションでは、weblogic.transaction.Transactionインタフェースで定義されているsetメソッドとgetメソッドを使用してプロパティを管理します。一度設定されたプロパティは、存続期間が終わるまでトランザクションとともに存在し、トランザクションがシステムを移動するときにはマシン間で受け渡しされます。プロパティはトランザクション・ログに保存され、クラッシュのリカバリ処理で復元されます。トランザクション・プロパティが複数回にわたって設定された場合は、最後に設定された値が保持されます。

トランザクション名とトランザクション・プロパティを設定および取得するメソッドの詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.Transactionに関する項を参照してください。

トランザクション・ステータス

Java Transaction APIでは、javax.transaction.Statusクラスを使用してトランザクションのステータス・コードが提供されます。weblogic.transaction.TransactionのgetStatusAsStringメソッドを使用すると、トランザクションのステータスを文字列として返すことができます。文字列には、javax.transaction.Statusで指定されているメジャー状態と、追加のマイナー状態(loggingやpre-preparingなど)が含まれます。

トランザクションの統計

トランザクションの統計は、サーバー上のトランザクション・マネージャで処理されるすべてのトランザクションについて提供されます。それらの統計には、トランザクションの総数、特定の結果(コミット、ロールバック、ヒューリスティックな終了など)を持つトランザクションの数、ロールバックされたトランザクションの理由別の数、およびトランザクションがアクティブな状態を維持した合計時間が含まれます。トランザクションの統計に関する詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJTAの監視に関する項を参照してください。

トランザクションのモニタリング

管理コンソールを使用すると、トランザクションを監視できます。監視タスクは、サーバー・レベルで実行されます。トランザクション統計は特定のサーバーごとに表示されます。

JTAリソースのデバッグ

特定のアプリケーションに問題があると突き止めたら、WebLogic Serverのデバッグ機能をアクティブ化して、アプリケーション内の特定の問題を探し当てることができます。

デバッグを有効化する

デバッグは、適切なServerDebug構成属性を「true」に設定することで有効化できます。必要に応じて、サーバーのStdoutSeverityを「Debug」に設定することもできます。

構成属性は、以下のいずれかの方法で変更できます。

コマンド・ラインを使用してデバッグを有効化する

コマンド・ラインで適切なプロパティを設定します。例:

-Dweblogic.debug.DebugJDBCJTA=true 
-Dweblogic.log.StdoutSeverity="Debug"

この方法は静的なものであり、サーバーの起動時にのみ使用できます。

WebLogic Server管理コンソールを使用してデバッグを有効化する

WebLogic Server管理コンソールを使用して、デバッグ値を設定します。

  1. まだ行っていない場合は、管理コンソールの「チェンジ・センター」で「ロックして編集」をクリックします(Oracle WebLogic Server管理コンソール・オンライン・ヘルプのチェンジ・センターの使用に関する項を参照)。

  2. 管理コンソールの左ペインで、「環境」を展開して「サーバー」を選択します。

  3. 「サーバーの概要」ページで、デバッグを有効化または無効化するサーバーをクリックして、そのサーバーの設定ページを開きます。

  4. 「デバッグ」をクリックします。

  5. 「デフォルト」を展開します。

  6. 変更するデバッグ・スコープまたは属性のチェック・ボックスを選択します。

  7. 「有効化」(または「無効化」)を選択して、チェックを入れたデバッグ・スコープまたは属性を有効化(または無効化)します。

  8. 管理コンソールのチェンジ・センターで「変更のアクティブ化」をクリックしてこれらの変更をアクティブ化します。

  9. ただし、すべての変更がすぐに反映されるわけではなく、一部の変更は再起動するまで適用されません(Oracle WebLogic Server管理コンソール・オンライン・ヘルプのチェンジ・センターの使用に関する項を参照)。

    この方法は動的なものであり、サーバーの実行中にデバッグを有効化するのに使用できます。

WebLogic Scripting Toolを使用してデバッグを有効化する

WebLogic Scripting Tool (WLST)を使用してデバッグ値を設定します。たとえば、次のコマンドでは、debug.pyというデバッグ値を設定するためのプログラムが実行されます。

java weblogic.WLST debug.py

debug.py programプログラムには、以下のコードが含まれています。

user='user1'
password='password'
url='t3://localhost:7001'
connect(user, password, url)
edit()
cd('Servers/myserver/ServerDebug/myserver')
startEdit()
set('DebugJDBCJTA','true')
save()
activate()

JavaからもWLSTを使用することができます。次の例では、デバッグ値の設定に使用されるJavaファイルを示します。

import weblogic.management.scripting.utils.WLSTInterpreter;
import java.io.*;
import weblogic.jndi.Environment;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class test {
       public static void main(String args[]) {
       try {
              WLSTInterpreter interpreter = null;
              String user="user1";
              String pass="pw12ab";
              String url ="t3://localhost:7001";
              Environment env = new Environment();
              env.setProviderUrl(url);
              env.setSecurityPrincipal(user);
              env.setSecurityCredentials(pass);
              Context ctx = env.getInitialContext();

              interpreter = new WLSTInterpreter();
              interpreter.exec
                     ("connect('"+user+"','"+pass+"','"+url+"')");
              interpreter.exec("edit()");
              interpreter.exec("startEdit()");
              interpreter.exec
                     ("cd('Servers/myserver/ServerDebug/myserver')");
              interpreter.exec("set('DebugJDBCJTA','true')");
              interpreter.exec("save()");
              interpreter.exec("activate()");

       } catch (Exception e) {
       System.out.println("Exception "+e);
       }
       }
}

WLSTの使用は動的な方法であり、サーバーの実行中にデバッグを有効化できます。

config.xmlファイルの変更内容

コンソール、WLST、またはコマンド・ラインでデバッグ特性を変更すると、その内容がconfig.xmlファイルに反映されます。例13-1を参照してください。

例13-1 JTAのデバッグ・スタンザのサンプル

.
.
.
<server>
<name>myserver</name>
<server-debug>
<debug-scope>
<name>weblogic.transaction</name>
<enabled>true</enabled>
</debug-scope>
<debug-jdbcjta>true</debug-jdbcjta>
</server-debug>
</server> 
.
.
.

以下のconfig.xmlのサンプル(抜粋)に、トランザクション・デバッグのスコープ(複数のデバッグ属性)および1つのJTA属性を示します。

JTAのデバッグ・スコープ

java weblogic.diagnostics.debug.DebugScopeViewerを使うとDebugScope定義をツリー表示できます。

以下に示すJTA用の登録済みデバッグ・スコープを有効化できます。

  • DebugJDBCJTA (スコープweblogic.jdbc.transaction) - 未使用

  • DebugJTAXA (スコープweblogic.transaction.xa) - XAリソースのトレース

  • DebugJTANonXA (スコープweblogic.transaction.nonxa) - 非XAリソースのトレース

  • DebugJTAXAStackTrace (スコープweblogic.transaction.stacktrace) - 様々な重要な場所でのスタック・トレースを出力する詳細なトレース

  • DebugJTARMI (スコープweblogic.transaction.rmi) - 未使用

  • DebugJTA2PC (スコープweblogic.transaction.twopc) - すべての2フェーズ・コミット処理のトレース

  • DebugJTA2PCStackTrace (スコープweblogic.transaction.twopcstacktrace) - スタック・トレースを出力する詳細な2フェーズ・コミット・トレース

  • DebugJTATLOG (スコープweblogic.transaction.tlog) - トランザクション・ロギング情報のトレース

  • DebugJTAJDBC (スコープweblogic.transaction.jdbc, weblogic.jdbc.transaction) - JTAレコードの読み書きに関する情報のトレース

  • DebugJTARecovery (スコープweblogic.transaction.recovery) - リカバリ情報のトレース

  • DebugJTAGateway (スコープweblogic.transaction.gateway) - インポートされたトランザクションに関する情報のトレース

  • DebugJTAGatewayStackTrace (スコープweblogic.transaction.gatewaystacktrace) - インポートされたトランザクションに関連するスタック・トレース

  • DebugJTANaming (スコープweblogic.transaction.naming) - トランザクションの命名情報のトレース

  • DebugJTANamingStackTrace (スコープweblogic.transaction.namingstacktrace) - トランザクションの命名情報のトレース

  • DebugJTAResourceHealth (スコープweblogic.transaction.resourcehealth) - XAトランザクション・リソースの状態に関する情報のトレース

  • DebugJTAMigration (スコープweblogic.transaction.migration) - トランザクション・ログの移行に関する情報のトレース

  • DebugJTALifecycle (スコープweblogic.transaction.lifecycle) - トランザクション・サーバーのライフサイクル(初期化、中断、再開、停止)に関する情報のトレース

  • DebugJTALLR (スコープweblogic.transaction.llr) - すべてのロギング・ラスト・リソース処理のトレース

  • DebugJTAHealth (スコープweblogic.transaction.health) - トランザクション・サブシステムの状態に関する情報のトレース

  • DebugJTATransactionName (スコープweblogic.transaction.name) - トランザクション名のトレース

  • DebugJTAResourceName (スコープweblogic.transaction.resourcename) - トランザクション・リソース名のトレース

PKËî<¨Q£QPK»~@OEBPS/gstrx.htm€ÿ トランザクションについて

2 トランザクションについて

この章では、トランザクションの基本的な概要、トランザクションをいつ使用するか、トランザクションが処理される方法、およびサンプル・トランザクション・コードについて説明します。

WebLogic Serverアプリケーションのトランザクションの概要

この節の内容は以下のとおりです。

トランザクションのACIDプロパティ

WebLogic Serverの最も基本的な機能の1つはトランザクション管理です。トランザクションは、データベースの変更を正確に完了させるための手段です。また、トランザクションによって、以下のような高性能トランザクションのすべてのACIDプロパティがデータベース・トランザクションに備わります。

  • 原子性 - トランザクションによるデータベースへの変更はすべて1つの単位として行われ、そうでない場合にはすべての変更がロールバックされます。

  • 一貫性 - トランザクションが正常に実行されると、データベースが前の有効状態から新しい有効状態に変化します。

  • 隔離性 - トランザクションによるデータベースへの変更は、トランザクションが処理を完了するまで他の処理からは見えません。

  • 持続性 - トランザクションによるデータベースへの変更は、システムまたは媒体の障害が発生しても失われません。

WebLogic Serverはデータベースの更新が正確に行われるようにする優れたインフラストラクチャを備えているので、様々なリソース・マネージャにまたがる場合であってもトランザクションの整合性が保護されます。1つの処理でエラーが起きた場合は、関連するすべての処理がロールバックされます。

サポートされているプログラミング・モデル

WebLogic Serverでは、Java Platform, Enterprise Edition (Java EE)プログラミング・モデルのトランザクションがサポートされています。WebLogic Serverは、Enterprise JavaBeans (EJB)仕様3.0に準拠して、Enterprise JavaBeansを使用するJavaアプリケーションにおけるトランザクションを完全にサポートします。また、WebLogic Serverは、Java Transaction API (JTA)仕様1.1もサポートします。この2つの仕様はどちらも以下のURLからアクセスできます。

サポートされているAPIモデル

WebLogic Serverでは、Java Transaction API (JTA)がサポートされています。JTAは、以下のアプリケーションで使用されます。

  • WebLogic Server EJBコンテナ内のEnterprise JavaBeans (EJB)アプリケーション

  • WebLogic Serverインフラストラクチャ内のRemote Method Invocation (RMI)アプリケーション

JTAの詳細は、以下のAPI Javadocを参照してください。

分散トランザクションと2フェーズ・コミット・プロトコル

WebLogic Serverでは、エンタープライズ・アプリケーションの分散トランザクションと2フェーズ・コミット・プロトコルがサポートされます。分散トランザクションとは、複数のリソース・マネージャ(データベースなど)が調和的に更新されるトランザクションのことです。一方、ローカル・トランザクションは、内部的にAPI呼出しを調整する1つのリソース・マネージャに対して、トランザクションを開始およびコミットします。このため、トランザクション・マネージャはありません。2フェーズ・コミット・プロトコルは、複数のリソース・マネージャにまたがって1つのトランザクションを調整する手段です。これにより、トランザクションによる更新を関連するデータベースのすべてでコミットするか、またはすべてのデータベースから完全にロールバックし、トランザクション開始前の状態に戻すことで、データの整合性が保証されます。つまり、関連するすべてのデータベースが更新されるか、またはどのデータベースも更新されないか、のどちらかだということです。

分散トランザクションには、以下のものが参加します。

  • トランザクション・オリジネータ - トランザクションを開始します。トランザクション・オリジネータとしては、ユーザー・アプリケーション、Enterprise JavaBeans、またはJMSクライアントがあります。

  • トランザクション・マネージャ - アプリケーション・プログラムにかわってトランザクションを管理します。トランザクション・マネージャは、トランザクションの開始と完了を行うアプリケーション・プログラムからのコマンドを、それらのトランザクションに関わるすべてのリソース・マネージャと通信することで調整します。リソース・マネージャがトランザクション中に失敗した場合、トランザクション・マネージャはリソース・マネージャが保留中のトランザクションをコミットするかロールバックするかを決定するのを支援します。

  • リカバリ可能なリソース - データの永続ストレージを提供します。ほとんどの場合はリソースとしてデータベースが使用されます。

  • リソース・マネージャ - 情報やプロセスへのアクセス手段を提供します。リソース・マネージャとしてはトランザクション対応JDBCドライバがよく使用されます。リソース・マネージャはトランザクションの機能とアクションの永続性を提供します(これらは分散トランザクションの中でアクセスおよび管理されるエンティティ)。リソース・マネージャと特定のリソースとの通信は、トランザクション・ブランチと呼ばれます。

2フェーズ・コミット・プロトコルの最初のフェーズは準備フェーズと呼ばれます。要求される更新がトランザクション・ログ・ファイルに記録され、リソースは、リソース・マネージャを通じて変更の準備ができていることを表明する必要があります。リソースは、更新をコミットするのか、または前の状態にロールバックするのかを意思表示できます。第2フェーズで何が行われるかは、リソースの意思表示によって決まります。すべてのリソースがコミットを支持すると、トランザクションに関わっているすべてのリソースが更新されます。1つまたは複数のリソースがロールバックを支持した場合は、トランザクションに関わっているすべてのリソースが前の状態にロールバックされます。

ビジネス・トランザクションのサポート

WebLogic JTAでは、ビジネス・トランザクションが以下のようにサポートされています。

  • クライアント・アプリケーションがトランザクションを開始したときに一意のトランザクション識別子が作成されます。

  • トランザクションが表すビジネス・プロセスを説明するトランザクション名(オプション)がサポートされます。トランザクション名を使用すると統計やエラー・メッセージが、より有意義になります。

  • トランザクションに関わっており、したがってトランザクションのコミット段階で調整しなければならないオブジェクトを追跡するためにWebLogic Serverインフラストラクチャが連係して機能します。

  • トランザクションでアクセスされるときに、リソース・マネージャ(たいていはデータベース)が通知を受けます。通知を受けたリソース・マネージャは、トランザクションが終了するまでアクセス対象のレコードをロックします。

  • トランザクションの完了時に2フェーズ・コミットが調整されます。この調整により、トランザクションに関わっているすべてのリソースで更新が同時にコミットされます。コミットの調整は、Open GroupのXAプロトコルを使用して更新されるすべてのデータベースで行われます。この規格は、普及している多くのリレーショナル・データベースでサポートされています。

  • トランザクションを停止する必要があるときにロールバック処理が実行されます。

  • 障害が起きたときにリカバリ処理が実行されます。クラッシュの時点でアクティブだったトランザクションが確認され、そのトランザクションをロールバックするのかコミットするのかが判断されます。

  • トランザクションのタイムアウトが管理されます。ビジネス処理にあまりにも多くの時間がかかる場合、またはビジネス処理が障害のために途中で終了している場合は、トランザクションのタイムアウトが自動的に発行され、データベース・ロックなどのリソースが解放されます。

どのような状況で使用するのか

トランザクションは、以下のような状況で使用するのが適しています。各状況は、WebLogic Serverシステムでサポートされているトランザクション・モデルを表現しています。分散トランザクションは、ユーザー入力の複数の画面にまたがってはいけないことに注意してください。もっと複雑でハイ・レベルなトランザクションは、連続する分散トランザクションで実装する必要があります。

  • オブジェクトに対する1回のクライアント呼出しで、オブジェクトによりデータベースのデータが複数回にわたって編集されます。いずれかの編集が失敗した場合、オブジェクトではすべての編集をロールバックすることが必要となります。この状況では、個々のデータベース編集は必ずしもEJBまたはRMIの呼出しではありません。アプレットなどのクライアントでは、JNDIを使用してTransactionオブジェクトおよびTransactionManagerオブジェクトの参照を取得し、トランザクションを開始することができます。

    たとえば、銀行のアプリケーションを考えてください。クライアントでは、出納オブジェクトに対して送金処理を要求します。送金処理においては、出納オブジェクトは銀行のデータベースで以下の呼出しを行わなければなりません。

    • 1つの口座で送金メソッドを呼び出します。

    • 別の口座で入金メソッドを呼び出します。

    データベースで入金が失敗した場合、アプリケーションでは直前の送金をロールバックすることが必要となります。

  • クライアント・アプリケーションでは、サーバー・アプリケーションで管理されるオブジェクトとの対話を必要とし、特定のオブジェクト・インスタンスに対する複数の呼出しを行う必要があります。その対話には、次のような特徴の1つまたは複数が備わっています。

    • データは、連続する各呼出しの間または後でメモリーにキャッシュされるか、データベースに書き込まれます。

    • データは、対話の終わりにデータベースに書き込まれます。

    • クライアント・アプリケーションでは、各呼出し間のインメモリー・コンテキストを保持するオブジェクトが必要となります。つまり、連続する各呼出しでは、対話の全体を通してメモリーに保持されているデータが使用されます。

    • 対話の最後に、クライアント・アプリケーションでは対話の途中または最後に行われたデータベースへの書込み処理をすべて取り消す機能が必要となります。

トランザクションの仕組み

ここでは以下について説明します。

WebLogic Server EJBアプリケーションのトランザクション

図2-1は、WebLogic Server EJBアプリケーションにおいてトランザクションがどのように機能するのかを図示したものです。

図2-1 WebLogic Server EJBアプリケーションでのトランザクションの仕組み

図2-1の説明が続きます
「図2-1 WebLogic Server EJBアプリケーションでのトランザクションの仕組み」の説明

WebLogic Serverでは、WebLogic Server EJBアプリケーションで以下の2種類のトランザクションがサポートされています。

  • コンテナ管理のトランザクションでは、WebLogic Server EJBコンテナによってトランザクションの境界設定が管理されます。EJBデプロイメント記述子のトランザクション属性では、各メソッド呼出しでWebLogic Server EJBコンテナがどのようにトランザクションを処理するのかが指定されます。デプロイメント記述子の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansバージョン2.1のプログラミング』のEnterprise Java Beansの実装に関する項を参照してください。

  • Bean管理のトランザクションでは、EJBによってトランザクションの境界設定が管理されます。EJBは、UserTransactionオブジェクトに対する明示的なメソッド呼出しを行って、トランザクションの開始、コミット、およびロールバックを行います。詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transaction.UserTransactionに関する項を参照してください。

トランザクション・イベントのシーケンスは、コンテナ管理のトランザクションとBean管理のトランザクションで異なります。

コンテナ管理のトランザクション

トランザクションがコンテナで管理されるEJBアプリケーションの場合、基本的なトランザクションは次のように機能します。

  1. Beanプロバイダまたはアプリケーション・アセンブラは、EJBのデプロイメント記述子で、トランザクションの種類(transaction-type)としてコンテナ管理の境界設定(Container)を指定します。

  2. Beanプロバイダまたはアプリケーション・アセンブラは、EJBのデプロイメント記述子で、EJBのデフォルトのトランザクション属性(trans-attribute要素)を指定します。トランザクション属性としては、NotSupported、Required、Supports、RequiresNew、Mandatory、またはNeverを設定します。これらの設定の詳細は、EJB仕様2.0のセクション17.6.2を参照してください。

  3. 必要に応じて、Beanプロバイダまたはアプリケーション・アセンブラは、EJBのデプロイメント記述子で、1つまたは複数のメソッドのtrans-attributeを指定します。

  4. クライアント・アプリケーションによってEJBのメソッドが呼び出されると、EJBコンテナはデプロイメント記述子でそのメソッドのtrans-attribute設定を調べます。メソッドの設定が指定されていない場合は、そのEJBのデフォルトのtrans-attribute設定が使用されます。

  5. EJBコンテナは、trans-attributeの設定に応じて適切に動作します。

    • たとえば、trans-attributeの設定がRequiredの場合、EJBコンテナは既存のトランザクション・コンテキストでメソッドを呼び出します。クライアントがトランザクション・コンテキストなしで呼出しを行った場合、EJBコンテナはメソッドを実行する前に新しいトランザクションを開始します。

    • trans-attributeの設定がMandatoryの場合、EJBコンテナは既存のトランザクション・コンテキストでメソッドを呼び出します。クライアントがトランザクション・コンテキストなしで呼出しを行った場合、EJBコンテナはjavax.transaction.TransactionRequiredException例外をスローします。

  6. ビジネス・メソッドの呼出しの途中で、ロールバックが必要だと判断された場合、ビジネス・メソッドではEJBContext.setRollbackOnlyメソッドが呼び出されます。このメソッドでは、メソッド呼出しの終了時にトランザクションをロールバックしなければならないことがEJBコンテナに通知されます。


    注意:

    EJBContext.setRollbackOnlyメソッドの呼出しは、意味のあるトランザクション・コンテキストを持つメソッドの場合だけ許可されます。

  7. メソッドの実行が終了して、その結果がクライアントに送信される前に、EJBコンテナはコミットするかまたはロールバックすることによってトランザクションを完了します。トランザクションがロールバックされるのは、EJBContext.setRollbackOnlyメソッドが呼び出された場合です。

Bean管理のトランザクション

トランザクションの境界設定がBeanで管理されるEJBアプリケーションの場合、基本的なトランザクションは次のように機能します。

  1. Beanプロバイダまたはアプリケーション・アセンブラは、EJBのデプロイメント記述子で、トランザクションの種類(transaction-type)としてコンテナ管理の境界設定(Bean)を指定します。

  2. クライアント・アプリケーションは、JNDIを使用して、WebLogic ServerドメインのUserTransactionオブジェクトに対するオブジェクト参照を取得します。

  3. クライアント・アプリケーションは、UserTransaction.beginメソッドを使用してトランザクションを開始し、EJBコンテナを通じてEJBへのリクエストを発行します。EJBでのすべての処理は、トランザクションのスコープ内で実行されます。

    • いずれかの処理の呼出しで例外が(明示的に、または通信エラーの結果として)生成された場合は、その例外を捕捉し、UserTransaction.rollbackメソッドを使用してトランザクションをロールバックできます。

    • 例外が生成されない場合、クライアント・アプリケーションはUserTransaction.commitメソッドを使用して現在のトランザクションをコミットします。このメソッドは、トランザクションを終了して処理を開始します。トランザクションは、そのトランザクションに関わっているすべてのリソースがコミットに同意した場合だけコミットされます。

  4. UserTransaction.commitメソッドが呼び出されると、EJBコンテナはトランザクションを完了するためにトランザクション・マネージャを呼び出します。

  5. トランザクション・マネージャの役割は、リソース・マネージャと協力してデータベースを更新することです。

WebLogic Server RMIアプリケーションのトランザクション

図2-2は、WebLogic Server RMIアプリケーションでトランザクションがどのように機能するのかを図示したものです。

図2-2 WebLogic Server RMIアプリケーションでのトランザクションの仕組み

図2-2の説明が続きます
「図2-2 WebLogic Server RMIアプリケーションでのトランザクションの仕組み」の説明

RMIのクライアント・アプリケーションとサーバー・アプリケーションの場合、基本的なトランザクションは次のように機能します。

  1. アプリケーションは、JNDIを使用して、WebLogic ServerドメインのUserTransactionオブジェクトに対するオブジェクト参照を返します。

    オブジェクト参照を取得すると、アプリケーションとそのオブジェクトが会話状態に入ります。会話状態は、コミットかロールバックによってトランザクションが完了するまで続きます。インスタンス化されたRMIオブジェクトは、解放されるまで(たいていはサーバーの停止時)メモリー内でアクティブな状態を維持します。トランザクションの間は、WebLogic Serverインフラストラクチャによって非アクティベーションやアクティベーションは実行されません。

  2. クライアント・アプリケーションは、UserTransaction.beginメソッドを使用してトランザクションを開始し、サーバー・アプリケーションへのリクエストを発行します。サーバー・アプリケーションでのすべての処理は、トランザクションのスコープ内で実行されます。

    • いずれかの処理の呼出しで例外が(明示的に、または通信エラーの結果として)生成された場合は、その例外を捕捉し、UserTransaction.rollbackメソッドを使用してトランザクションをロールバックできます。

    • 例外が生成されない場合、クライアント・アプリケーションはUserTransaction.commitメソッドを使用して現在のトランザクションをコミットします。このメソッドは、トランザクションを終了して処理を開始します。トランザクションは、そのトランザクションに関わっているすべてのリソースがコミットに同意した場合だけコミットされます。

  3. UserTransaction.commitメソッドが呼び出されると、WebLogic Serverはトランザクションを完了するためにトランザクション・マネージャを呼び出します。

  4. トランザクション・マネージャの役割は、リソース・マネージャと協力してデータベースを更新することです。

詳細については、第9章「RMIアプリケーションのトランザクション」を参照してください。

トランザクションのサンプル・コード

この節の内容は以下のとおりです。

トランザクションのサンプルEJBコード

この節では、EJBアプリケーションのクラスから抜粋したサンプル・コードを利用して段階的な説明を行います。ここでは以下について説明します。

サンプル・コードでは、Bean管理によるトランザクションの境界設定でUserTransactionオブジェクトが使用されます。このBeanのデプロイメント記述子では、トランザクションの種類(transaction-type要素)としてBean管理によるトランザクションの境界設定(Bean)が指定されます。


注意:

グローバル・トランザクションでは、EJBが実行されているWebLogic Serverインスタンス上の、ローカルJDBCデータ・ソースからデータベース接続を使用します。リモートWebLogic Serverインスタンス上のJDBCデータ・ソースからは接続を使用しないでください。

次のコード・フラグメントは、WebLogic Serverに付属するサンプル・アプリケーションから抜粋したものではありません。単に、EJBアプリケーションでのUserTransactionオブジェクトの利用を説明するために用意されたものです。


パッケージをインポートする

例2-1は、トランザクションで必要なパッケージのインポートを示しています。必要なパッケージには以下のものがあります。

  • javax.transaction.UserTransaction。このオブジェクトに関連付けられているメソッドのリストについては、オンラインのJavadocを参照してください。

  • システム例外。例外のリストについては、オンラインのJavadocを参照してください。

例2-1 パッケージのインポート

import javax.naming.*;
import javax.transaction.UserTransaction;
import javax.transaction.SystemException;
import javax.transaction.HeuristicMixedException
import javax.transaction.HeuristicRollbackException
import javax.transaction.NotSupportedException
import javax.transaction.RollbackException
import javax.transaction.IllegalStateException
import javax.transaction.SecurityException
import java.sql.*;
import java.util.*;

JNDIを使用してオブジェクト参照を返す

例2-2に記述されているのは、JNDIツリー上でオブジェクトをルックアップするためのコードです。

例2-2 JNDIルックアップの実行

Context ctx = null;
Hashtable env = new Hashtable();
 
env.put(Context.INITIAL_CONTEXT_FACTORY,
         "weblogic.jndi.WLInitialContextFactory");
 
// Parameters for the WebLogic Server. 
// Substitute the correct hostname, port number 
// user name, and password for your environment:
env.put(Context.PROVIDER_URL, "t3://localhost:7001"); 
env.put(Context.SECURITY_PRINCIPAL, "Fred");
env.put(Context.SECURITY_CREDENTIALS, "secret");
 
ctx = new InitialContext(env);
 
UserTransaction tx = (UserTransaction)
  ctx.lookup("javax.transaction.UserTransaction");

トランザクションを開始する

例2-3に記述されているのは、UserTransactionオブジェクトを取得し、javax.transaction.UserTransaction.begin()メソッドを呼び出すことによって、トランザクションを開始するコードです。このメソッド呼出しの後、トランザクションが完了するまでに行われるデータベースの処理は、このトランザクションのスコープ内に存在します。

例2-3 トランザクションの開始

UserTransaction tx = (UserTransaction)
  ctx.lookup("javax.transaction.UserTransaction");
tx.begin();

トランザクションを完了する

例2-4に記述されているのは、このトランザクションのスコープ内で試行されたいずれかのデータベース処理で例外がスローされたかどうかに応じて、トランザクションを完了するコードです。

  • いずれかのデータベース処理で例外がスローされた場合は、アプリケーションによってjavax.transaction.UserTransaction.rollback()メソッドが呼び出されます。

  • 例外がスローされなかった場合は、アプリケーションによってjavax.transaction.UserTransaction.commit()メソッドが呼び出され、すべてのデータベース処理が正常に終了した後にトランザクションのコミットが試行されます。このメソッドが呼び出されると、トランザクションが終了し、処理が開始されて、WebLogic Server EJBコンテナによってトランザクションを完了するためにトランザクション・マネージャが呼び出されます。トランザクションは、そのトランザクションに関わっているすべてのリソースがコミットに同意した場合だけコミットされます。

例2-4 トランザクションの完了

tx.commit();
 
// or:
 
tx.rollback();

トランザクションのサンプルRMIコード

この節では、RMIアプリケーションのクラスから抜粋したサンプル・コードを利用して段階的な説明を行います。ここでは以下について説明します。

サンプル・コードでは、RMIトランザクションでUserTransactionオブジェクトが使用されます。RMIアプリケーションでトランザクションを使用する際のガイドラインについては、第9章「RMIアプリケーションのトランザクション」を参照してください。


注意:

これらのコード・フラグメントは、WebLogic Serverに付属するサンプル・アプリケーションから抜粋したものではありません。単に、RMIアプリケーションでのUserTransactionオブジェクトの利用を説明するために用意されたものです。

パッケージをインポートする

例2-5に記述されているのは、必要なパッケージをインポートするコードです。必要なパッケージには、トランザクションの処理に使用する以下のパッケージが含まれます。

  • javax.transaction.UserTransaction。このオブジェクトに関連付けられているメソッドのリストについては、オンラインのJavadocを参照してください。

  • システム例外。例外のリストについては、オンラインのJavadocを参照してください。

例2-5 パッケージのインポート

import javax.naming.*;
import java.rmi.*;
import javax.transaction.UserTransaction;
import javax.transaction.SystemException;
import javax.transaction.HeuristicMixedException
import javax.transaction.HeuristicRollbackException
import javax.transaction.NotSupportedException
import javax.transaction.RollbackException
import javax.transaction.IllegalStateException
import javax.transaction.SecurityException
import java.sql.*;
import java.util.*;

これらのクラスがインポートされた後に、UserTransactionオブジェクトのインスタンスがnullに初期化されます。

JNDIを使用してUserTransactionオブジェクトへのオブジェクト参照を返す

例2-6に記述されているのは、JNDIツリーの検索し、適切なWebLogic ServerドメインのUserTransactionオブジェクトに対するオブジェクト参照を返すためのコードです。


注意:

オブジェクト参照を取得すると、アプリケーションとそのオブジェクトが会話状態に入ります。会話状態は、コミットかロールバックによってトランザクションが完了するまで続きます。インスタンス化されたRMIオブジェクトは、解放されるまで(たいていはサーバーの停止時)メモリー内でアクティブな状態を維持します。トランザクションの間は、WebLogic Serverインフラストラクチャによって非アクティベーションやアクティベーションは実行されません。

例2-6 JNDIルックアップの実行

Context ctx = null;
Hashtable env = new Hashtable();
 
env.put(Context.INITIAL_CONTEXT_FACTORY,
         "weblogic.jndi.WLInitialContextFactory");
 
// Parameters for the WebLogic Server. 
// Substitute the correct hostname, port number 
// user name, and password for your environment:
env.put(Context.PROVIDER_URL, "t3://localhost:7001"); 
env.put(Context.SECURITY_PRINCIPAL, "Fred");
env.put(Context.SECURITY_CREDENTIALS, "secret");
 
ctx = new InitialContext(env);
 
UserTransaction tx = (UserTransaction)
  ctx.lookup("javax.transaction.UserTransaction");

トランザクションを開始する

例2-7に記述されているのは、javax.transaction.UserTransaction.begin()メソッドを呼び出してトランザクションを開始するためのコードです。このメソッド呼出しの後、トランザクションが完了するまでに行われるデータベースの処理は、このトランザクションのスコープ内に存在します。

例2-7 トランザクションの開始

UserTransaction tx = (UserTransaction)
  ctx.lookup("javax.transaction.UserTransaction");
tx.begin();

トランザクションを完了する

例2-8に記述されているのは、このトランザクションのスコープ内で試行されたいずれかのデータベース処理で例外がスローされたかどうかに応じて、トランザクションを完了するコードです。

  • いずれかのデータベース処理で例外がスローされた場合は、アプリケーションによってjavax.transaction.UserTransaction.rollback()メソッドが呼び出されます。

  • 例外がスローされなかった場合は、アプリケーションによってjavax.transaction.UserTransaction.commit()メソッドが呼び出され、すべてのデータベース処理が正常に終了した後にトランザクションのコミットが試行されます。このメソッドが呼び出されると、トランザクションが終了し、処理が開始されて、WebLogic Serverによってトランザクションを完了するためにトランザクション・マネージャが呼び出されます。トランザクションは、そのトランザクションに関わっているすべてのリソースがコミットに同意した場合だけコミットされます。

例2-8 トランザクションの完了

tx.commit();
 
// or:
 
tx.rollback();
PKvr2W ··PK»~@OEBPS/title.htm‘nç Oracle Fusion Middleware Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1)

Oracle® Fusion Middleware

Oracle WebLogic Server JTAのプログラミング

12cリリース1 (12.1.1)

B65896-01(原本部品番号:E24377-01)

2011年12月

このドキュメントは、WebLogic Server環境で動作するトランザクション対応Javaアプリケーションの構築に関心のあるアプリケーション開発者を対象としています。


Oracle Fusion Middleware Programming Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1)

B65896-01

Copyright © 2007, 2011, Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

PKyý×1–‘PK»~@OEBPS/preface.htmŒsï はじめに

はじめに

ここでは、このガイド『Oracle WebLogic Server JTAのプログラミング』で使用されるアクセシビリティ機能および表記規則について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportから電子サポートにアクセスできます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

表記規則

このドキュメントでは次の表記規則を使用します。

規則意味
太字太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。
斜体イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。
固定幅フォント固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

PK<íxi‘ŒPK»~@ OEBPS/llr.htmsûŒ ロギング・ラスト・リソース・トランザクションの最適化

7 ロギング・ラスト・リソース・トランザクションの最適化

この章では、WebLogic Serverで、JDBCデータ・ソースを通じてロギング・ラスト・リソース(LLR)トランザクションの最適化をサポートする方法を説明します。LLRは、1つのXA以外のリソースが、XAと同じACID保証を伴ってグローバル・トランザクションに参加できるようにする、パフォーマンス向上のためのオプションです。

LLRは、「最後のエージェントによる最適化」を改良したものです。最後のエージェントによる最適化との相違点は、トランザクションとしては安全であるということです。LLRリソースは、トランザクション処理にローカル・トランザクションを使用します。WebLogic Serverトランザクション・マネージャは、トランザクションの他のすべてのリソースを準備し、その後、LLRリソースのローカル・トランザクションの結果に基づいて、グローバル・トランザクションに対するコミットの決定を下します。

LLR参加リソースによるグローバルな2フェーズ・コミット(2PC)トランザクションでは、WebLogic Serverトランザクション・マネージャは次の基本的な手順に従います。

  • 他のすべての(XA対応の)トランザクション参加リソースに対してprepareを呼び出します。

  • (ファイル・ベースのトランザクション・ログではなく) LLR参加リソースの表へコミット・レコードを挿入します。

  • LLR参加リソースのローカル・トランザクション(トランザクション・コミット・レコードの挿入とアプリケーションのSQL処理の双方を含む)をコミットします。

  • その他すべてのトランザクション参加リソースに対してcommitを呼び出します。

  • トランザクションが正常に終了したら、データベース・トランザクション・ログ・エントリを、今後のトランザクションの一部として、遅れて削除します。

以下の節は、WebLogic ServerにおけるLLRトランザクション処理の詳細を説明します。

LLRの特長に関する詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のロギング・ラスト・リソースのトランザクション・オプションに関する項を参照してください。

LLR最適化トランザクションの最適化について

多くの場合、グローバル・トランザクションが2フェーズ・コミット(2PC)トランザクションになるのは、データベース操作(JDBCを使用)と、メッセージ・キュー操作(JMSを使用)などの非データベース操作が関与しているためです。このように、2PCトランザクション内のデータベースへの参加リソースが1つの場合、ロギング・ラスト・リソース(LLR)最適化トランザクション・オプションは、データベース処理のXAオーバーヘッドの一部を除去し、JDBC XAドライバ(通常は非XAドライバよりも効率が悪い)の使用を回避することにより、トランザクションのパフォーマンスを著しく向上させられます。LLRトランザクション・オプションでは、「2フェーズ・コミットのエミュレート」JDBCデータ・ソース・オプションやNonXAResourceリソース・アダプタ(コネクタ)オプションの場合のようにデータがリスクを受けることはありません。

ロギング・ラスト・リソース処理の詳細

サーバー起動時またはデータ・ソースのデプロイメント時に、LLRデータ・ソースは、データベース接続のプールを行うデータベース上に、表をロードまたは作成します。表は、データベース接続を作成するよう指定されたユーザーが決定したスキーマ内に作成されます。データベース表が作成またはロードできない場合、サーバーの起動は失敗します。

グローバル・トランザクション内で、LLRデータ・ソースから最初に取得された接続が、そのトランザクション専用の内部JDBC接続を予約します。内部JDBC接続は、トランザクションのコーディネータでもある特定のサーバー上で予約されます。任意のサーバーにある同名のデータ・ソースから取得された接続に対する後続のトランザクション操作は、すべてこの同じ単一の内部JDBC接続にルーティングされます。

LLRトランザクションがコミットされると、WebLogic Serverトランザクション・マネージャはその処理を透過的に扱います。アプリケーション側から見ると、トランザクション・セマンティクスは同じままですが、内部から見ると、トランザクションには標準的なXAトランザクションとは異なった処理が行われています。アプリケーションがグローバル・トランザクションをコミットすると、WebLogic Serverトランザクション・マネージャは、他のトランザクション参加リソースに対してトランザクション作業をコミットする前に、LLR接続に対して原子性を維持しつつローカル・トランザクションをコミットします。2フェーズ・コミット・トランザクションの場合、トランザクション・マネージャは同じローカル・トランザクションの一部として、データベース上に2PCレコードの書込みも行います。ローカル・トランザクションが正常に完了した後、トランザクション・マネージャは他のすべてのグローバル・トランザクション参加リソースに対しcommitを呼び出します。他のすべてのトランザクション参加リソースがコミット・フェーズを完了させると、関連のLLR 2PCトランザクション・レコードは、解放されて削除できるようになります。トランザクション・マネージャは、短い間隔を置いて、または別のローカル・トランザクションで、トランザクション・レコードを遅れて削除します。

アプリケーションがグローバル・トランザクションをロールバックするか、トランザクションがタイムアウトした場合、トランザクション・マネージャはローカル・トランザクションの作業をロールバックし、データベースに2PCレコードを格納しません。

LLRトランザクションの最適化を有効化するには、JDBCデータ・ソースをロギング・ラスト・リソース・トランザクション・プロトコルで作成して、アプリケーション内のデータ・ソースからデータベース接続を使用します。WebLogic Serverは、データベース上に必要な表を自動作成します。

Oracle WebLogic Server管理コンソール・ヘルプのLLR対応のJDBCデータ・ソースの作成に関する項を参照してください。また、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のロギング・ラスト・リソースのトランザクション・オプションに関する項も参照してください。

データ・ソースの構成および使用上の要件と制限事項のリストについては、『Oracle WebLogic Server JDBCデータ・ソースの構成と管理』の次のトピックを参照してください。

  • LLRデータ・ソースに関するプログラミング上の考慮事項と制限事項

  • LLRデータ・ソースに関する管理上の考慮事項と制限事項

LLRデータベース表の詳細

各WebLogicサーバー・インスタンスは、JDBC LLRデータ・ソースがデータベース接続をプールするデータベース上に、データベース「LLR」表を保持します。これらの表は、トランザクション・ログ・レコードの格納に使用されるもので、自動的に作成されます。複数のLLRデータ・ソースが同じWebLogicサーバー・インスタンス上にデプロイされて同じデータベース・インスタンスおよびデータベース・スキーマに接続されている場合、これらのデータ・ソースも同じLLR表を共有します。

LLR表名は、管理者が構成することを選択しない限り、自動的に生成されます。デフォルトの表名は、WL_LLR_SERVERNAMEです。一部のDBMSシステムでは、表名の長さが最大18文字に制限されます。環境を構成する際には、表名の最大長を考慮に入れてください。

LLRデータベース表に関しては、次の制限事項があります。

  • 起動時にLLR表にアクセスできなかった場合、サーバーは起動しません。サーバー起動時に自動的に実行されるリカバリの期間中に、疑わしいトランザクションを正しく解決するには、LLRトランザクション・レコードが使用できなければなりません。

  • 複数のサーバーで同じLLR表を共有することはできません。サーバー起動時に、WebLogic ServerはJDBCデータ・ソースのドメイン名とサーバー名が、表作成時に表に格納されたドメイン名とサーバー名に一致することを確認します。複数のサーバーが同じLLR表を共有していることを検出すると、WebLogic Serverは1つまたはそれ以上のサーバーを停止します。

リソースのトランザクション・ログ・レコードの格納に使用される表名を変更するには、次の手順に従います。

  1. 管理コンソール画面の左上の隅にある「チェンジ・センター」で、「ロックして編集」をクリックして、構成編集セッションを開始します。

  2. 「サーバー:構成:全般」ページで、「詳細」をクリックして、詳細構成のオプションを表示します。次を参照してください。

  3. 「JDBC LLR表名」に、リソースのトランザクション・レコードの格納に使用する表の名前を入力し、その後「保存」をクリックします。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのサーバー: 構成: 全般に関する項を参照してください。

  4. LLRが有効化されたデータ・ソースがデプロイされている各サーバーに対して、ステップ2および3を繰り返します。

  5. 「チェンジ・センター」で「変更のアクティブ化」をクリックします。


    注意:

    変更を有効にするには、すべてのサーバーを再起動する必要があります。

LLR表のトランザクション・ログ・レコード

コミットされた各2PC LLRトランザクションについて、トランザクション・マネージャはLLRデータベース表にトランザクション・レコードを自動的に挿入します。LLRトランザクションが完了すると、トランザクション・マネージャはトランザクション・レコードを遅れて削除します。LLR表トランザクション・ログ・レコードの削除が失敗した場合、サーバーは警告メッセージをログに記録し、後で削除を再試行します。

LLRトランザクション・レコードが格納されたデータベースを移動する必要がある場合は、トランザクションが正しく完了できるよう、必ずLLR表のコンテンツを新しいデータベースに移動してください。


注意:

本番システムでは、LLRトランザクション・レコードまたはLLR表を手動で削除しないでください。削除すると、暗黙のヒューリスティックなトランザクションが失敗します。

LLRの障害とリカバリ処理

一般に、WebLogicトランザクション・マネージャは、次のようにしてトランザクションの失敗を処理します。

  • ローカル・トランザクションのコミットが試行される前に発生する2フェーズ・コミット・エラーの場合、トランザクション・マネージャは即座にトランザクション・ロールバック例外をスローします。

  • ローカル・トランザクションのコミット中に発生する2フェーズ・コミット・エラーの場合、動作はトランザクション・レコードがデータベースに書き込まれるかどうかに応じて異なります。

    • レコードが書き込まれるならば、トランザクション・マネージャはトランザクションをコミットします。

    • レコードが書き込まれないならば、トランザクション・マネージャはトランザクションをロールバックします。

    • レコードが書き込まれるかどうかが分からない場合は、トランザクション・マネージャはあいまいなコミット失敗例外をスローし、トランザクション破棄タイムアウトになるまで、5秒ごとにトランザクションの完了を試行します。トランザクションが未完了のままであれば、トランザクション・マネージャは破棄されたトランザクション・メッセージをログに記録します。

サーバー・クラッシュの調整

LLRリソースがトランザクション・ログ・レコードを格納する前、またはLLRリソースがコミットする前に、トランザクションの調整サーバーがクラッシュした場合、トランザクションはロールバックされます。LLRリソースがコミットされた後にサーバーがクラッシュした場合、トランザクションは最終的には完全にコミットされます。サーバー起動中、トランザクション・コーディネータはLLRリソースを使用してデータベースからトランザクション・ログ・レコードを読み取り、その後、リカバリされた情報を使用して、参加しているすべての非LLR XAリソース上の未完了の作業をすべてコミットします。

JDBC接続障害

LLRリソースのJDBC接続が、2PCトランザクション・レコードの挿入中に失敗した場合、トランザクション・マネージャはトランザクションをロールバックします。

LLRリソースのJDBC接続が、ローカル・トランザクションのコミット中に失敗した場合の結果は、トランザクションが1フェーズ・コミット(LLRリソースが唯一の参加リソースである、1PC)であるか2PCであるかによって異なります。

  • 1PCトランザクションの場合、トランザクションは完全にコミットされるか、完全にロールバックされるか、ローカル・トランザクションの解決の待機をブロックします。トランザクションは最終的に完全にコミットされるか、完全にロールバックされるので、その結果は完全にACIDです。

  • 2 PCトランザクションの場合の結果は、「LLRの障害とリカバリ処理」で説明したようになります。

サーバー起動時のLLRトランザクション・リカバリ

各WebLogicサーバーのトランザクション・マネージャは、サーバー起動時に、サーバーによって調整される未完了のトランザクション(LLRトランザクションを含む)をリカバリする必要があります。そのためには、各サーバーは各LLRデータ・ソースのLLRデータベース表から、トランザクション・レコードを読み取ろうとします。サーバーがLLRデータベース表にアクセスできない場合、またはリカバリが失敗した場合、サーバーは起動せず、トランザクション・マネージャにより不正な状態(HealthState.HEALTH_FAILED)としてマークされます。

リカバリの途中でタイムアウトが生じたとすれば、それはLLRログ表内の行をロックした未解決のローカル・トランザクションが原因である場合があります。そのようなローカル・トランザクションを解決して、レコードがロックされた行に格納されているグローバル・トランザクションの状態をトランザクション・マネージャが判断できるようにする必要があります。ローカル・データベース・トランザクションは診断および解決するには、各データベースの固有のツールを使用する必要があります(コマンドはデータベースごとに違います)。

LLRのフェイルオーバーに関する考慮事項

LLRでのフェイルオーバーに関する次の注意事項および制限事項を考慮してください。

  • トランザクション・ログ(TLog)は、LLRトランザクションでも必要です。

    • TLogは引続きトランザクション・マネージャの「チェックポイント」レコードを格納します。

    • TLogはフェイルオーバーでも引続きアクセス可能である、またはコピーされます。

  • LLRは、サーバーの移行およびトランザクション・リカバリ・サービスの移行をサポートします。トランザクション・リカバリ・サービスの移行を使用するには、クラスタまたはクラスタ内の候補サーバーのセットのいずれかに各LLRリソースがターゲット指定されていることを確認します。「クラスタリングされたサーバーで障害が発生した場合のトランザクションのリカバリ」を参照してください。

LLRでのパフォーマンス最適化

この節の内容は、以下のとおりです。

トランザクション・コーディネータの場所の最適化

LLR参加リソースでのグローバル・トランザクション内では、WebLogic Serverはすべての接続操作をトランザクションの調整サーバーに自動的にルーティングします。このルーティングが大きな負荷になる場合があります。可能であれば、アプリケーションが調整サーバー上で直接実行されるように、またコーディネータ上で直接ホストされる接続インスタンスを使用するように、最適化を行うと、パフォーマンスが向上すると考えられます。

トランザクションを開始するクライアント・アプリケーションに関しては、トランザクションのコーディネータは、クライアントがそのトランザクションの下で呼出し(RMI、EJB、JDBC、またはJMS呼出しのどれでも可)を行う最初のWebLogicサーバーとなります。JMSの場合、これはクライアントのJMS接続をホストするサーバーです。JMS宛先をホストするサーバーと同じである必要はありません。

サーバー側アプリケーションの場合、トランザクションのコーディネータは、ローカル・リソースが最初に呼び出されたのであれば(JMS宛先、JDBC接続など)ローカル・サーバーとなります。ただし、先にリモート・サーバーが呼び出されていた場合(リモートでホストされるJDBC接続、EJB、RMI呼び出し、またはJMS接続のいずれか)は、その限りではありません。これには、他のクラスタまたはドメインのリモート・サーバーが含まれます。

LLRデータ・ソースを使用した読取り専用操作のパフォーマンスの変動

LLRの最適化により、挿入、更新、および削除の操作において、著しいパフォーマンスの向上がもたらされます。しかし、LLRでの読取り操作では、XAでの読取り操作と比べて、幾分パフォーマンスが低下します。最高のパフォーマンスを得るためには、読取り専用操作のためのLLRではないJDBCデータ・ソースを構成する必要があります。

データ・ソース別のLLR表の指定

Oracle RACを使用する環境のパフォーマンスを改善するには、各サーバーに対してではなく各データ・ソースに対してLLR表を指定することで、Oracle RACクラスタでのローカル・ノード・キャッシュの利用効率が上がります。

WebLogic Serverインスタンスの起動時にデータ・ソースごとにLLR表の指定を設定するには、次のシステム・プロパティを使用します。

-Dweblogic.llr.table.datasourcename=tablename

ここで、datasourcenameはデータ・ソースの名前、tablenameは、datasourcenameにマップするLLR表の名前です。

たとえば、次のシステム・プロパティを使用するとします。

-Dweblogic.llr.table.LLRDS1=myllrtable1

サーバーが起動すると、次の操作が行われます。

  • INFOメッセージがstdoutに書き込まれます。

    LLR data source LLRDS1 using LLR table myllrtable1

  • データ・ソースLLRDS1を使用するサーバー用のすべてのLLRエントリは、mylltable1というLLR表に格納されます。

データ・ソースがターゲット指定される各サーバーの各データ・ソースに対して1つの表を定義します。異なるWLSインスタンスで同じ表を共有することはできません。LLRDS1が2つのWebLogic ServerインスタンスS1およびS2にターゲット指定される場合、2つの表S1_LLRDS1とS2_LLRDS1を作成し、各サーバーに適切なシステム・プロパティを指定します。

例:

S1の場合、-Dweblogic.llr.table.LLRDS1=S1_LLRDS1を使用します。

S2の場合、-Dweblogic.llr.table.LLRDS1=S2_LLRDS1を使用します。


注意:

次のリリースのWebLogic Serverでは、node-idは、拡張されたLLR表で自動的に捕捉されるため、データはそれぞれのWebLogic Serverノードにパーティション化されます。データ・ソースごとに表を手動で割り当てる必要はありません。

制限事項

JTAサービス移行では、データ・ソース専用のLLR表はサポートされません。

PKÛ,n ssPK»~@OEBPS/content.opf@ ¿ß Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1) en-US b65896 Oracle Corporation Oracle Corporation Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1) 2011-11-21T13:00:33Z Oracle WebLogic Server JTAのプログラミング, 12cリリース1 (12.1.1) PKß_…E @ PK»~@OEBPS/trxcon.htm€ÿ トランザクションの構成

3 トランザクションの構成

この章では、トランザクション関連の基本的な構成タスクについて説明します。これらのタスクには、JTAの使用、セキュアなトランザクション通信の構成、トランザクション・ログ(TLOG)ファイルの使用、読取り専用の1フェーズ・コミット最適化の使用があります。

トランザクション構成の概要

管理コンソールは、WebLogic JTAなどのWebLogic Serverの機能を構成するために使用するインタフェースを備えています。構成プロセスでは、属性の値を指定する必要があります。それらの属性によって、以下のようなトランザクション環境が定義されます。

  • トランザクションのタイムアウトと制限

  • トランザクション・マネージャの動作

また、EJB、JDBCデータソース、JMSなど、トランザクションに参加可能なJava EEコンポーネントの管理についてもよく理解しておく必要があります。


注意:

トランザクション関連の構成には、WebLogic Scripting Tool (WLST)(『Oracle WebLogic Scripting Tool』を参照)またはJMX(『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』を参照)を使用することもできます。

JTAの構成

WebLogic JTAおよび任意のトランザクション参加コンポーネントを構成すると、システムはJTA APIおよびWebLogic JTA拡張機能を使用してトランザクションを管理できます。次の点に注意してください。

  • JTA(トランザクション)の構成設定は、ドメイン・レベルで適用できます。つまり、構成属性の設定はドメイン内のすべてのサーバーに適用されることになります。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJTAの構成に関する項を参照してください。

  • JTAのモニター・タスクは、サーバー・レベルで実行されます。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのJTAのモニターに関する項を参照してください。

  • 参加リソース(JDBCデータ・ソースなど)の構成設定は、構成されるオブジェクトごとに行われます。設定は、特定のオブジェクトのすべてのインスタンスに対して適用されます。『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のJDBCデータ・ソースのトランザクション・オプションに関する項、およびOracle WebLogic Server管理コンソール・オンライン・ヘルプの「JDBCデータ・ソースのグローバル・トランザクション・オプションの構成」を参照してください。

リソース登録解除の猶予期間

アプリケーションと一緒にパッケージ化されたJDBCデータ・ソース・モジュールなど、必要に応じてアンデプロイしたり再デプロイしたりすることのあるリソースについては、ドメインに対して「リソース登録解除の猶予期間」を設定することで、リソースが登録解除されていたためにトランザクションが破棄される可能性を最小限にできます。猶予期間とは、リソースが登録解除される前に、トランザクション・マネージャがトランザクションの完了を待機する秒数です。

指定された猶予期間の間、unregisterResource呼出しは自身が返るまでブロックを行い、関連するリソースに対して新しいトランザクションは開始されません。リソースに対して未処理のトランザクションの数が0になると、unregisterResource呼出しは即座に返ります。

猶予期間の終わりに、まだリソースに関連する未処理のトランザクションがある場合は、unregisterResourceが返り、リソースが以前登録されていたサーバー上にログ・メッセージが書き込まれます。

トランザクションを管理するための追加属性

デフォルトでは、グローバル・トランザクションに参加しているXAリソースがWebLogic Serverトランザクション・マネージャからのXA呼出しに応答しないと、そのリソースに異常があって使用できないことを示すフラグが付加されます。また、リソースのスレッドを保持するため、このリソースに対する以降のすべての呼出しがブロックされます。障害は、トランザクションに異常がある場合でも、リソースに異常がある場合でも発生する可能性があります。これら2つの原因の間に区別はありません。どちらの場合も、リソースに異常があるものとしてマークされます。

この制約を緩和するため、WebLogic Serverには表3-1に列記したような構成属性が用意されています。

表3-1 XAリソースのヘルス監視構成属性

属性MBean定義
ResourceHealthMonitoring 
weblogic.managment.configuration.JDBCXAParamsBean

JDBCXAParamsBean MBeanのResourcehealthMonitoring属性。

JDBCデータ・ソースのリソースのヘルス監視を有効または無効にします。この属性は、データベース接続にXA JDBCドライバを使用するデータ・ソースにのみ適用されます。非XA JDBCドライバを使用している場合は無視されます。

trueに設定すると、リソースのヘルス監視が有効になります。MaxXACallMillis属性に指定した期間内にXAリソースがXA呼出しへの応答に失敗すると、データ・ソースに異常があるものとしてマークされ、リソースに対する以降の呼出しがすべてブロックされます。

falseに設定すると、この機能が無効になります。

デフォルト: true

JDBCデータ・ソースの「リソース・ヘルス監視」属性は、管理コンソールの「JDBCデータ・ソース」→「構成」→「接続プール」タブで設定します。

MaxXACallMillis
weblogic.management.configuration.JTAMBean

XAリソースに対するXA呼出しの最長許容期間をミリ秒で設定します。この設定は、ドメイン全体に適用されます。

デフォルト値: 120000

MaxResourceUnavailableMillis
weblogic.management.configuration.JTAMBean

XAリソースが異常とマークされる最長期間(ミリ秒)。この期間を過ぎると、トランザクション・マネージャでXAリソースを明示的に再登録しなくても、リソースが再び使用可能と宣言されます。この設定は、ドメイン全体に適用されます。

デフォルト値: 1800000

MaxResourceRequestOnServer
weblogic.management.configuration.JTAMBean

ドメイン内の各サーバーで許容するリソースへの同時リクエストの最大数。

デフォルト値: 50

最小値: 10

最大値: java.lang.Integer.MAX_VALUE


JDBCデータ・ソースの「リソース・ヘルス監視」を除き、これらの属性は、ドメインが非アクティブの時にconfig.xmlファイルで直接設定します。これらの属性は、管理コンソールでは使用できません。次の例は、これらの属性に関する部分を構成ファイルから抜粋したものです。

...
   <JTA
    MaxUniqueNameStatistics="5"
    TimeoutSeconds="300"
    RecoveryThresholdMillis="150000" 
    MaxResourceUnavailableMillis="900000" 
    MaxResourceRequestOnServer="60" 
    MaxXACallMillis="180000" 
   />

ドメイン間およびドメイン内トランザクションのセキュアな通信の構成

分散トランザクションを管理するトランザクション・マネージャの場合、トランザクション・マネージャは、トランザクションを準備して、コミットまたはロールバックするためにすべての参加サーバーやリソースと通信できるようにしておく必要があります。通信チャネルの構成は、トランザクション・ルートが次のどちらであるかによって異なります。

  • ドメイン間 - トランザクション通信は、同じドメイン内ではないトランザクションに参加するサーバー間で行われます。

  • ドメイン内 - トランザクション通信は、同じドメイン内のトランザクションに参加するサーバー間で行われます。

通信チャネルは、悪質なサード・パーティがトランザクションの結果に影響を与える中間者攻撃を使用できず、1つ以上のドメイン間で管理制御を取得できないようにセキュアにしておく必要があります。WebLogic Serverには、通信チャネルをセキュアにする次のオプションが用意されています。

  • クロス・ドメイン・セキュリティ - 資格証明マッパーを使用して、ドメイン間トランザクションのサーバー間で互換性のある通信チャネルを構成できます。この場合、複雑な構成が必要になりますが、クロス・ドメイン・セキュリティを使用すると、各ドメイン間の信頼を調整できます。

  • セキュリティの相互運用モード - すべてのドメインのセキュリティの資格証明を同じ値に設定して、トランザクションに参加するすべてのドメイン間での信頼を確立します。これにより、あるWebLogic Serverインスタンスのサブジェクトのプリンシパルが、別のインスタンスのプリンシパルとして受け入れられます。クロス・ドメイン・セキュリティを構成するよりも簡単ですが、「セキュリティの相互運用モード」の一部の設定は、ドメイン信頼に依存するため、クロス・ドメイン・セキュリティよりもセキュリティの程度は低くなります。

次の項では、トランザクション時にサーバー間でセキュアな通信を構成する方法について説明します。

トランザクション通信の要件

トランザクション環境に通信チャネルを構成する場合、次の要件に注意してください。

  • ドメイン名およびすべての参加リソースの名前は一意でなければなりません。したがって、JDBCデータ・ソース、サーバー、またはドメインを、別のドメイン内や同じドメイン内のオブジェクトと同じ名前にすることはできません。

  • プロセスで使用されるすべてのドメインについて、クロス・ドメイン・セキュリティを構成するか、セキュリティの相互運用モードを設定します。どちらの設定もドメイン・レベルで設定されるため、ドメインがクロス・ドメイン・セキュリティとセキュリティの相互運用モードの両方が設定された混在モードになる可能性があります。

  • WebLogic Server 8.1ドメインと相互運用している場合、JMX 1.0とJMX 1.2の間に互換性がないことに伴って、ドメイン間トランザクションを実行する際に問題が発生する場合があることが知られています。この非互換性に伴う問題を解決するには、JVMフラグ-Djmx.serial.form=1.0を使用します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverアップグレード・ガイド』の「JMX 1.2実装」を参照してください。

  • 次の2つの属性が両方とも次のように設定されているデータ・ソースは、グローバル・トランザクションには1つしか参加させることができません。この制約は、データ・ソースがどのドメインに構成されているかに関係なく適用されます。

    • 「ロギング・ラスト・リソース」または「2フェーズ・コミットのエミュレート」を選択しています。

    • データ・ソースで、非XAドライバを使用してデータベース接続を作成しています。

ドメイン間トランザクションに対する通信の構成

グローバル・トランザクションに参加するすべてのドメインについて、クロス・ドメイン・セキュリティまたはセキュリティの相互運用モードを使用し、互換性のある通信チャネルを適切に構成する必要があります。次を参照してください。

次の表を参考に、クロス・ドメイン・セキュリティまたはセキュリティの相互運用モードを使用するタイミングを決定します。

表3-2 チャネル構成の選択

チャネル構成長所短所

クロス・ドメイン・セキュリティ

  • ドメインのペア間で通信を確立するように特定のユーザーが構成されます。

  • SSLを使用する場合、中間者攻撃を防止します。

  • 構成がより複雑になります。

  • トランザクション・フローの変更(参加者、参加者ロール(コーディネータとリソースまたはサブコーディネータ)の変更、ドメインの追加や削除、トランザクション・ルートの変更など)には、構成の変更が必要です。

セキュリティの相互運用モード

  • 構成が非常に簡単です。

  • セキュリティの相互運用モードの構成時にトランザクション・フローを理解する必要はありません。

  • WebLogic 8.1との下位互換性があります。

  • defaultモードで管理チャネルを使用すると、中間者攻撃が防止されます。

  • 信頼は推移的です: ドメインAがドメインBを信頼し、ドメインBがドメインCを信頼する場合、ドメインAはドメインCを信頼します。

  • compatibilityに設定すると、ドメイン間信頼によって、ドメイン間での管理者権限が付与されます。つまり、ドメイン間で信頼が確立されている場合、ドメインAの管理者にはドメインBの管理者権限があります。

  • 一部の構成では、中間者攻撃の可能性がわずかにあります。


ドメイン間トランザクション用にどのタイプの通信チャネルを構成する必要があるかについては、次の表を参考に判断してください。

表3-3 ドメイン間トランザクション用の通信チャネルの構成

ドメイン10.xおよび9.2 MP2以上9.0、9.1、および9.2 MP1以下8.1 SP5以上8.1 SP4以下

10.xおよび9.2 MP2以上

両方のドメインをクロス・ドメイン・セキュリティ用に構成する

または

セキュリティの相互運用モードを使用し、両方のドメインを「デフォルト」または「パフォーマンス」に設定する

10.xまたは9.2 MP2以上のドメインをクロス・ドメイン・セキュリティ用に構成し、9.0、9.1、または9.2 MP1以下のドメインを例外リストに追加する

または

セキュリティの相互運用モードを使用し、両方のドメインを「デフォルト」または「パフォーマンス」に設定する

10.xまたは9.2 MP2以上のドメインをクロス・ドメイン・セキュリティ用に構成し、8.1ドメインを例外リストに追加する

または

セキュリティの相互運用モードを使用し、両方のドメインを「パフォーマンス」に設定する

10.xまたは9.2 MP2以上のドメインをクロス・ドメイン・セキュリティ用に構成し、8.1ドメインを例外リストに追加する

または

セキュリティの相互運用モードを使用し、10.xまたは9.2 MP2以上のドメインを「互換性」に設定する

9.0、9.1、および9.2 MP1以下

10.xまたは9.2 MP2以上のドメインをクロス・ドメイン・セキュリティ用に構成し、9.0、9.1、または9.2 MP1以下のドメインを例外リストに追加する

または

セキュリティの相互運用モードを使用し、両方のドメインを「デフォルト」または「パフォーマンス」に設定する

両方のドメインを「デフォルト」または「パフォーマンス」に設定する

両方のドメインを「パフォーマンス」に設定する

9.xのドメインを「互換性」に設定する

8.1 SP5以上

10.xまたは9.2 MP2以上のドメインをクロス・ドメイン・セキュリティ用に構成し、8.1ドメインを例外リストに追加する

または

セキュリティの相互運用モードを使用し、両方のドメインを「パフォーマンス」に設定する

両方のドメインを「パフォーマンス」に設定する

両方のドメインを「パフォーマンス」に設定する

8.1 SP5以上のドメインを「互換性」に設定する

8.1 SP4以下

10.xまたは9.2 MP2以上のドメインをクロス・ドメイン・セキュリティ用に構成し、8.1ドメインを例外リストに追加する

または

セキュリティの相互運用モードを使用し、10.xまたは9.2 MP2以上のドメインを「互換性」に設定する

9.xのドメインを「互換性」に設定する

8.1 SP5以上のドメインを「互換性」に設定する

なし



注意:

セキュリティの相互運用モードが「パフォーマンス」に設定されている場合、ドメイン間のドメイン信頼の設定は必須ではありません。

ドメイン内トランザクションに対するドメインの構成

セキュリティの相互運用モードを使用して、同じドメイン内のトランザクションに参加するサーバー間に、互換性のある通信チャネルを正しく構成する必要があります。「セキュリティの相互運用モードの構成」を参照してください。

WebLogic Server 10.xドメインのサーバーの場合は、参加サーバーをdefault、performance、またはcompatibilityに設定します。

クロス・ドメイン・セキュリティの構成

クロス・ドメイン・セキュリティでは、資格証明マッパーを使用することで、グローバル・トランザクション内のサーバー間に、互換性のある通信チャネルを構成することを可能にしています。トランザクションに参加するすべてのドメイン・ペアについて、資格証明マッパーを1つずつ構成します。CrossDomainConnectorセキュリティ・ロールに属する資格証明は、ドメイン・ペアごとに異なっていても構いません。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の「クロス・ドメイン・ユーザーの構成」を参照してください。

『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の「WebLogic Serverドメイン間のクロス・ドメイン・セキュリティの有効化」および「クロス・ドメイン・セキュリティの資格証明マッピングの構成」を参照してください。

クロス・ドメイン・セキュリティは推移的ではない

トランザクションに参加する複数のサーバーでは、相互にクロス・ドメインの資格証明マッピングを設定します。ドメイン信頼とは異なり、クロス・ドメイン・セキュリティの構成は推移的ではありません。つまり、AがBを信頼し、BがCを信頼していても、それによってAがCを信頼しているということにはなりません。

以下のシナリオについて考察します。

  • DomainAにはServer1があります(€ÿコーディネータ)

  • DomainBにはServer2があります(サブコーディネータ)

  • DomainCにはServer3とServer4があります(Server3はサブコーディネータ)

  • DomainDにはServer5があります(トランザクションには参加しません)

このシナリオでクロス・ドメインの資格証明マッピングを設定するには、次の操作を行います。

  1. DomainAにおいてDomainBのクロス・ドメイン・セキュリティを設定します。

  2. DomainBにおいてDomainAのクロス・ドメイン・セキュリティを設定します。

  3. DomainAにおいてDomainCのクロス・ドメイン・セキュリティを設定します。

  4. DomainCにおいてDomainAのクロス・ドメイン・セキュリティを設定します。

  5. DomainBにおいてDomainCのクロス・ドメイン・セキュリティを設定します。

  6. DomainCにおいてDomainBのクロス・ドメイン・セキュリティを設定します。

DomainDはトランザクションに参加しないため、クロス・ドメインの資格証明マッピングを使用する必要はありません。ただし、「トランザクションへの参加に基づいて除外リストにドメインを追加する」にある、より詳細な説明を参照してください。

これらを分かりやすい形で表したのが、表3-4です。表のセルに「必要」と記されているのは、それに対応するドメインの組合せに対してクロス・ドメイン・セキュリティを構成する必要があることを表したものです。

表3-4 参加ドメインが3つの場合のクロス・ドメイン・セキュリティの設定

--DomainADomainBDomainCDomainD

DomainA

いいえ

はい

はい

いいえ

DomainB

はい

いいえ

はい

いいえ

DomainC

はい

はい

いいえ

いいえ

DomainD

いいえ

いいえ

いいえ

いいえ


その上でクロス・ドメイン・セキュリティの構成にDomainDを追加し、さらにDomainEも追加する場合、クロス・ドメインの資格証明マップは表3-5のようになります。表のセルに「必要」と記されているのは、それに対応するドメインの組合せに対してクロス・ドメイン・セキュリティを構成する必要があることを表したものです。

表3-5 参加ドメインが5つの場合のクロス・ドメイン・セキュリティの設定


DomainADomainBDomainCDomainDDomainE

DomainA

いいえ

はい

はい

はい

はい

DomainB

はい

いいえ

はい

はい

はい

DomainC

はい

はい

いいえ

はい

はい

DomainD

はい

はい

はい

いいえ

はい

DomainE

はい

はい

はい

はい

いいえ


トランザクションへの参加に基づいて除外リストにドメインを追加する

除外リストでは、クロス・ドメイン・セキュリティが構成されているドメインのサーバーと、クロス・ドメイン・セキュリティがサポートされていないか、有効になっていない別のドメインのサーバーがトランザクションに参加するためのメカニズムが提供されます。

クロス・ドメイン・セキュリティが構成されていないドメインのサーバーが、クロス・ドメイン・セキュリティが構成されているドメインのサーバーと一緒にトランザクションに参加する場合、クロス・ドメイン・セキュリティが構成されているドメインの除外リストに該当ドメインを追加します。「クロス・ドメイン・セキュリティを構成する場合の重要な考慮事項」の説明に従い、セキュリティの相互運用モードを使用して、参加ドメインの通信チャネルを確立します。

クロス・ドメイン・セキュリティが構成されているドメインすべての除外リストにドメインを追加する必要はありません。ただし、除外リストへ追加する必要があるケースでは、ドメインとのトランザクションへの参加を明示的に行う必要があります。

以下のシナリオについて考察します。

  • トランザクション#1:

    • DomainAにはServer1があります(コーディネータ)

    • DomainBにはServer2があります(サブコーディネータ)

    • DomainCにはServer3とServer4があります(Server3はサブコーディネータ)

    • DomainDにはServer5があります(トランザクションには参加せず、クロス・ドメイン・セキュリティは構成されていません)

  • トランザクション#2:

    • DomainBにはServer6があります(コーディネータ)

    • DomainDにはServer5があります(サブコーディネータで、クロス・ドメイン・セキュリティは構成されていません)

この場合、トランザクション#2のためにDomainDをDomainBの除外リストに追加する必要があります。

DomainAおよびDomainCのサーバーとのトランザクションには参加していないため、これら2つのドメインの除外リストにはDomainDを含める必要はありません。

クロス・ドメイン・セキュリティを構成する際の重要な考慮事項

クロス・ドメイン・セキュリティを構成する際には、以下のガイドラインを考慮に入れてください。

  • クロス・ドメイン・セキュリティでは、ドメイン信頼は必須ではありません。

  • トランザクションに参加するすべてのドメイン・ペアについて、資格証明マッパーを正しく構成する必要があります - CrossDomainConnectorセキュリティ・ロールに属する資格証明のセットを設定しなければなりません。資格証明マッピングが正しくないと、参加ドメイン間のトランザクションは失敗します。『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の「クロス・ドメイン・セキュリティの資格証明マッピングの構成」を参照してください。

  • 中間者攻撃からトランザクションを保護するには、一方向SSLを構成して通信のセキュリティを強化します。

  • クロス・ドメイン・セキュリティをサポートしない(またはクロス・ドメイン・セキュリティが無効になっている)WebLogicドメインと相互運用するには、それらのドメインを、クロス・ドメイン・セキュリティが有効になっているすべての参加WebLogic Serverドメインの「除外するドメイン名」リストに追加する必要があります。「除外するドメイン名」およびCrossDomainSecurityEnabledフラグの構成が、すべての参加ドメインで統一されていない場合、トランザクションのブランチは失敗します。

  • Cross Domain Security Enabledフラグが無効になっているか、ドメインがExcluded Domain Namesリストに含まれている場合は、セキュリティの相互運用モードを使って参加ドメインとの通信チャネルが確立されます。

  • 「クロス・ドメイン・セキュリティの有効化」フラグの有効/無効の設定を切り替えると、しばらくの間トランザクションや他のリモート呼出しが失敗することがあります。トランザクションにおいてコミット・リクエストが失敗した場合は、構成の変更が完了した後にコミットが再試行されます。トランザクションのRMI呼出しが失敗した場合は、トランザクションがタイムアウトしてロールバックされます。ロールバックは、AbandonTimeoutSecondsが経過するまで再試行されます。

セキュリティの相互運用モードの構成

「セキュリティの相互運用モード」を使用すると、グローバル・トランザクション内のサーバー間に、互換性のある通信チャネルを構成できます。次の手順に従って、セキュリティの相互運用モードを構成します。

  1. ドメイン信頼を確立します

  2. 表3-3の値を使用して、セキュリティの相互運用モードを構成します。


    注意:

    「セキュリティの相互運用モード」が「パフォーマンス」に設定されている場合、ドメイン間のドメイン信頼の設定は必須ではありません。

ドメイン信頼を確立する

すべての参加ドメインのセキュリティ資格証明を同じ値に設定することにより、ドメイン信頼を確立します。

セキュリティの相互運用モードの構成

参加しているすべてのサーバーの「セキュリティの相互運用モード」パラメータを同じ値に設定する必要があります。

有効な値は以下のとおりです。

  • default - トランザクション・コーディネータでは、カーネルIDを使用し、管理チャネル(有効化されている場合)を介して呼出しを行います。管理チャネルが構成されていない場合、セキュリティの相互運用モードの動作は、performanceを使用する場合と同じになります。

  • performance - トランザクション・コーディネータでは、常にanonymousを使用して呼出しを行います。この設定では、悪意のあるサード・パーティが中間者攻撃を通じてトランザクションの結果に影響を与える可能性があるため、セキュリティ上、リスクを伴います。

  • compatibility - トランザクション・コーディネータでは、カーネルIDで非セキュアなチャネルを使用して呼出しを行います。このモードは、セキュリティの相互運用モードをサポートしていないWebLogic Serverサーバーと対話する場合に必要です。中間者攻撃が成功すると、攻撃者は双方のドメインに対する管理制御権を得ることができるため、セキュリティ上のリスクが高くなります。この設定は、強固なネットワーク・セキュリティが確立されている場合にのみ使用してください。

参加しているサーバーのセキュリティの相互運用モードを構成する場合は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの次のトピックを参照してください。

管理ユーザーを必要とするJNDIルックアップ用にドメインを構成する

以下では、管理ユーザーを必要とするJNDIルックアップをトランザクションが使用する際にセキュリティの相互運用モードを構成する方法について説明します。

  • WebLogic Serverドメインが9.0、9.1、9.2およびMP以上、または10.xおよびMP以上の場合は、以下のいずれかを行います。

    • セキュリティの相互運用モードを「デフォルト」に設定し、管理チャネルを構成し、ドメイン信頼を有効にします。

    • セキュリティの相互運用モードを「互換性」に設定し、ドメイン信頼を有効にします。

  • WebLogic Serverドメインが8.1SP5以上の場合は、SecurityInteropMode=compatibilityを設定し、ドメイン信頼を有効にします。

セキュリティの相互運用モードを「互換性」に設定すると、中間者攻撃を受ける可能性があります。

トランザクション・ログ・ファイル

各サーバーには、そのサーバーで調整されてコミットされたが、未完了の可能性があるトランザクションの情報を格納するトランザクション・ログが備わっています。WebLogic Serverでは、システムのクラッシュやネットワーク障害からの回復時にトランザクション・ログを使用します。トランザクション・ログを直接見ることはできません。レコードはバイナリ形式で、サーバーのデフォルト永続ストアまたはJDBC TLOGストアに格納されます。

デフォルト永続ストアの使い方

クラスタ内のサーバーに対するトランザクション・リカバリ・サービスの移行機能を利用するには、トランザクション・ログをサーバーとそのバックアップ・サーバーが使用できる場所(デュアル・ポートSCSIディスクまたはSAN (Storage Area Network)を推奨)に格納する必要があります。詳細については、「デフォルト永続ストアへのパスの設定」を参照してください。

デフォルトのストアがトランザクション・ログ・レコードの保存先とするファイル・システムで領域が不足したり、アクセス不能になったりすると、commit()によりSystemExceptionがスローされ、トランザクション・マネージャによってシステム・エラー・ログにメッセージが書き込まれます。使用できる領域が増えるまで、トランザクションはコミットされません。

デフォルト永続ストアへのパスの設定

管理サーバーを含む、各サーバー・インスタンスには、デフォルトの永続ストアがあります。これは、特定のストアを明示的に選択する必要がなく、システムのデフォルトのストレージ・メカニズムを使用することで最適に動作するサブシステムから使用することができる、ファイル・ベースのストアです。トランザクション・マネージャは、デフォルト永続ストアを使用して、トランザクション・ログ・レコードを格納します。多くの場合、デフォルトの永続ストアは、構成を必要としません。ただし、トランザクション・リカバリ・サービスの移行を有効化するには、オリジナルのサーバーで障害が発生した場合に、クラスタ内の別のサーバーで使用できる、永続ストレージ・ソリューションに、データ・ファイルを格納するよう、デフォルトの永続ストアを構成する必要があります。

手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのトランザクション・リカバリ・サービス移行のためのデフォルト永続ストアの構成に関する項を参照してください。

デフォルト永続ストアの同期書込みポリシーの設定

WebLogic Serverは、デフォルト永続ストアを使用して、トランザクション・ログ・レコードを格納します。デフォルト・ストアの書込みポリシーを選択し、WebLogic Serverがレコードをディスクに書き込む方法を変更します。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』の同期書込みポリシーの構成ガイドラインに関する項を参照してください。

手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのトランザクション・リカバリ・サービス移行のためのデフォルト永続ストアの構成に関する項を参照してください。

JDBC JTOGストアの使い方

JDBC TLOGストアを構成して、トランザクション・ログをデータベースに永続化することができます。こうすることで、基礎となるデータベースのレプリケーションやHAの活用、障害回復の単純化、トランザクション回復サービスの移行の改善が可能になります。詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のJDBC TLogの使い方に関する項を参照してください。

読取り専用1フェーズ・コミットの最適化

Oracle Database (AQおよびRACを含む)などのリソース・マネージャによって読取り専用最適化が提供される場合、Oracle WebLogicで読取り専用1フェーズ・コミットの最適化を提供することができます。これによって、同一XAトランザクションの複数の接続を有効にする場合でも、Oracle WebLogicとリソース・マネージャの両方に、XAResource.prepareネットワーク・コールの消去やトランザクション・ログ書込みなどの様々な利点がもたらされます。


注意:

読取り専用1フェーズ・コミットの最適化には、Oracle DB 11.1.0.7.3PSU以上が必要です。

2フェーズ・コミット・トランザクションを必要としないアプリケーションの場合、WebLogicの「2フェーズ・コミット」プロトコルを無効にすることで、パフォーマンスをさらに最適化できます。このプロトコルは、2つ以上のリソース・マネージャ全体のトランザクションを調整します。2フェーズ・コミットを無効にするには、次の手順を実行します。

  • 永続的なインダウト・ロギングおよびロック、ならびにデータベースのブックキーピング・オーバーヘッドを削除します。

  • WebLogicのすべてのチェックポイント・ロギングを削除します。

  • 特定のサーバー・インスタンスが2フェーズ・コミットを必要としないという前提を、施行またはテスト(あるいはその両方を実行)します。

  • WebLogic移行(サーバーまたはサービス全体)リカバリの必要性を排除します。これによって、その移行に関わる追加のアセット/キャパシティ、管理などの必要性が排除されます。

読取り専用1フェーズ・コミットの最適化と2フェーズ・コミット無効化の設定

読取り専用1フェーズ・コミットの最適化を有効にし、2フェーズ・コミットを無効化するには、次のJTAドメイン構成属性を設定します。

  • XA呼出しの並列実行 – falseに設定すると、読取り専用1フェーズ・コミットの最適化が有効になります。

  • 2フェーズ・コミットの有効化 – (オプション)falseに設定すると、2フェーズ・コミットが無効になります。これによって、チェックポインãP¯íƒˆãƒ»ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’含むすべてのトランザクション・ロギングが無効になります。2フェーズ・コミットの使用を試行すると、RollbackExceptionがスローされます。

    重要:「2フェーズ・コミットの有効化」設定(デフォルトではtrueに設定されている)は、読取り専用最適化を提供するリソース・マネージャ(Oracleデータベースなど)のみをアプリケーションが使用すること、あるいは単一のリソース・マネージャへの単一の接続のみをアプリケーションが使用することが周知されている場合を除き、falseには設定してはなりません。


注意:

XAリソースがXA_OK投票を準備から返し(例: 対象がOracleデータベースではない場合)、その後ロールバックが発生する前にWebLogicインスタンスがクラッシュする場合は、インダウト・レコードが存在し、ロックがリソース・マネージャ(データベース)で保持されるため、手動で解決する必要があります。

すべてのJTAドメイン構成オプションの詳細は、WebLogic管理コンソール・オンライン・ヘルプの「JTAドメインの構成」を参照してください。

読取り専用1フェーズ・トランザクション統計の監視

監視目的のため、JTAの「監視」ページには5つのトランザクション処理統計があります。これらの統計はともに「コミット済みトランザクション総数」統計を分類し、あらゆる読取り専用1フェーズ・トランザクション統計を追跡しやすくします。

  • リソースのないコミット済みトランザクションの合計数 - サーバーの起動以降コミットされた、リソースが確保されていないトランザクションの合計数。

  • 1リソース1フェーズ・コミット済みトランザクション合計数 - サーバーの起動以降1フェーズ・コミットされた、1リソースのみが確保されたトランザクションの合計数。

  • 読取り専用1フェーズ・コミット済みトランザクション合計数 - サーバーの起動以降、読取り専用最適化のために1フェーズ・コミットされた、複数のリソースが確保されたトランザクションの合計数。

  • 2フェーズ・コミット済みトランザクション合計数 - サーバーの起動以降2フェーズ・コミットされた、複数のリソースが確保されたトランザクションの合計数。

  • LLRコミット済みトランザクション合計数 – サーバーの起動以降コミットされたLLRトランザクションの合計数。

    注意: JTAトランザクションに列記された唯一のリソースがLLRデータ・ソースの場合、そのトランザクションは「LLRコミット済みトランザクション合計数」カテゴリではなく、「1リソース1フェーズ・コミット済みトランザクション合計数」カテゴリの下に含まれます。

JTA監視統計の詳細は、WebLogic管理コンソール・オンライン・ヘルプの「JTA統計の監視」を参照してください。

PK¯ßg…_PPK»~@!OEBPS/dcommon/O_signature_clr.JPG×"(ÝÿØÿàJFIF``ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ "ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (®ÇÞ?O 'ö~Ÿ²MQ×$žVz;· üOlÅJ‘§i8L%\]UFŠ»ÕÙÖjšÞ™¢Â%Ô¯¡¶SÐ;rßAÔþÈÜü]ðÔ¶5¾¸ފþ<À׈Þß]j7Ouyq$ó¹Ë<’jŎ…«ji¾ÇM»¸OïÅ 2þxÅy’ÇT“´÷8SFØ©¶ýl¿¯™ìð¹<=ÿ>z§ýúÿ‹£þ'‡¿çÏTÿ¿Qÿñuåð†ø—þ€wÿ÷á¨ÿ„7Ä¿ô¿ÿ¿ KëXžß§öMüÿù2=Sþ'‡¿çÏTÿ¿QÿñtÂäð÷üùêŸ÷ê?þ.¼¯þßÿÐÿþü5ð†ø—þ€wÿ÷á¨úÖ'·àØ97óÿäÈö;Š~½pq=£Ú" ~k?ëí®`¼'¶ž9¡q•’6 §èE|³yay§Må^ÚOm'÷fŒ¡ýkCÃþ&Õ<5x'Óî ©?¼…¹ŽAî?¯Zºxù'jˆæÅð•ß={=SùÿßMÕ gVƒCÒ.5+¤‘á€ËŽHdßÖªxcÄÖ^)ҖòÐíuùf…Íz{CÞ©|Dÿ‘ Vÿ®kÿ¡­zšönqì|…+XÈaë+{É5ó0ÿárx{þ|õOûõÿGü.OϞ©ÿ~£ÿâëÃëf/ x†x’X´[çÔ2²ÂH ò¯)c+½¿#ïjpÞUOZ¯YXõø\žÿŸ=SþýGÿÅÑÿ “Ãßóçªߨÿøºò¿øC|Kÿ@;ÿûðÔÂâ_úßÿ߆ªúÖ'·àeýƒ“?þLTÿ…ÉáïùóÕ?ïÔü]:?Œ>w Öڔ`ÿD˜““^Sÿo‰èÿ~«Þxo[Ó 3Þi7B:Èð°Qõ8â—Öñ V¿®Éäùc-ď¢ôoi:üFM2ö9öòÈ2~ªy©_*Ø_Ý闱ÞYNð\Fr®‡ÿ®=«èxZ›3鳎£Oêá¼wW½×_™íôQEz‡ÂWãßÇá˜~Ãc¶]REÈeaSüMê}â}â¥Hӏ4Žœ&®.ª£E]¿êìêu=gMÑ óµ+Ømôó–ú§ð®Fçâç†`r±‹ë‘ýè¡ãÄñëû½Níîïn$žw9gäÿõ‡µMa¡êº¢–°Ón®Tuh¢f˜¯2Xú’v‚>އ a(Û6ß­‘ì?ð¹<=ÿ>z§ýúÿ‹£þ'‡¿çÏTÿ¿Qÿñuåð†ø—þ€wÿ÷á¨ÿ„7Ä¿ô¿ÿ¿ KëXžß¯öMüÿù2=Sþ'‡¿çÏTÿ¿QÿñtÂäð÷üùêŸ÷ê?þ.¼¯þßÿÐÿþü5Kkào\ÝÃÒ.â8S$±TÉêO £ëXžß€žG’¥w?ü™çáZx®æ±´¼ŠX)’áC7 Ã‘Æ~¢²µŸ‰Ú.‡«Üi·6ºƒÍš(ЩÈŒ¸=ý+¤Ñ4{mG·Ó­¸-Ž]»±÷&¼â'üº·ýt_ýk«V¥*Iõ<£ƒÌ1Õ)Ùû4®µ×thð¿tßIs„q›p¥üôQœçÃJé+È> ÿÇæ±ÿ\âþm^¿[aªJ¥5)nyÙÖž:4¾oÅ&QEnyAEPEEss •¬·72,PD¥ÝÛ¢Ô׃øÏâ÷ˆ¦’ÒÉÞÛK᦯ííüë øˆÑW{ž®W”×ÌjrÓÒ+wÛüÙêÚ¯Ä iÑM¨¬Ó/;pd?˜à~&±Æ?‚@´ÔÎ;ˆ£çÿ¯Ž7–EŽ4gv8 £$Ÿ¥l'„z§ýúÿ‹£þ'‡¿çÏTÿ¿Qÿñuåð†ø—þ€wÿ÷á¨ÿ„7Ä¿ô¿ÿ¿ GÖ±=¿þÁÉ¿Ÿÿ&GªÂäð÷üùêŸ÷ê?þ.Æ iR(¬5W‘Ø*ªÃ$ž€|õå?ð†ø—þ€wÿ÷᫼øgàk«mIõbÎHÜí·†eÁ/Ž_Ðt÷>Õtëâg%ÐåÆåy.„ªÞíl”·}NÔ5[]+Mkëæ0Ä eHËdôPrsÆsÖÿtù'U¹³»´›ižC,y8`V%9Àù‡Z³ãÁ•©IËia|³Üª‚v¦Öñßi מÀ±YG,’Ëo}öë+«kk{YbyIeb¡‚Ì*sÎÞAÅtÕ«8ÊÈñ2ü¾…zóWoÏ×Eæ·×K5óöz*¦—o-®“eo;nš(³œ°P üêÝu-I)4ÂŠ(¦HQEQEQEQEŸ®ê±hzæ¥(ÊÛÆX/÷›¢Ä?ùŽöò}BökË© “ÌåݏrkÚþ0]4>†8óîÑXz¨V?Ì ñ}6Óíú¥¥˜$}¢d‹ö˜ë^F>nUú ááK µì¿?äBÕ¿ëšÿèk_9×¾xžåï~Éw'ßžÆ êÛ þuDŽ›t§ØúLÿ ãð؈îä“ù5cÀëê-þEÍ/þ½"ÿÐ|»_Oè³Åoá.I¥HÓ쐍ÎÀ¸=iå߈ãÝ*Iw’5(ªŸÚºwüÿÚÿßåÿ?µtïùÿµÿ¿Ëþ5ês.çÂû)ÿ+û‹tŒªèQÔ2°ÁdUµtïùÿµÿ¿Ëþ5Vÿĺ.™j×Zª"Ž‚@ÌÞÀIúRrŠZ±Æ…Y4£ß¡á_´;}ųÛÚ(KyQfŽ1üº¦Aǵt¯?ßÙç÷sZù„g«+?F5Èø·_oøŠãQØR&ÂD‡ª àgß¿ã]¿Á6F¿ÔuR¤D‘ u>¤ÇòÚ¿xôlñ7†×?IÌTéäŽ8Ÿ‹•'ë§ãsØh¢«jöú^Ÿ=õÛì‚.ííè=ÏJö›¶¬üÊ1rj1Wlä¾$ø¯þý얲cP¼˜ÓøŸú¥x«;„E,Ìp$֟ˆµËkw•É Èqg"4ž¹5Úü(ð§Ûõ®ÝǛkVć/¯Ñž=+Å©)b«Yl~›„£K#˝JŸïÍô_כ5&ø\«ðüF±®'úI#©8æ/Ëÿõä|«wʾ²¯ø§á_ìXjö±âÎõŽðËÔþ ×ëšÛ†QŠ”:oçs¯^T1.îMµëÕ‘è_|TO.;?ãßÜëëæ_ ø‚ ë°j吳F?å¤g¨þ£Ü úNÎî û8ní¤A2FÁ®œ%i =ÑâqWõ,G=5îOUäú¯òòô Öu8´]ïR›”·ˆ¾Üãqì?ø×Ìw÷םü÷·r'Ë»Sý+Û¾.ܼ ©ââê8Ûè7óQ^elo/ííTàÍ*Æ?õ®L|ۚô<%‡…<,ñ/víò_ðOKøsðú BÙ5½f/29¶·nŽñ0î=¥züq¤Q¬q¢¢(ªŒ=¦ÛÁ­´Vð¨X¢@ˆ£²€*Jô(э(Ù™f5qõJN‹¢_ÖáEVǞQEóŸÄOùuoúè¿ú×ѕóŸÄOùuoúè¿ú×aü5ê}gÿ¾Oü?ª:߂¿ñù¬×8¿›W¯×|ÿÍcþ¹ÅüÚ½~µÁ]N&ÿ‘O—þ’‚Š(®£Á (¢€<Ÿãˆ]>Í @øVQ=Æ^~Uý ü«Ì´m&ë\Õ­ôë5i›žŠ:’}€æµ|}r×~9՝‰ùfòÆ}þ•_Ã>'»ð­ì·vVÖ²Í$~^ë„fÚ3“Œ0ë^i©×n{\ý_.ÃO –F8tœÜoó}ý?${φ|#¦x^Í#µ…^è¯ïn~w=þƒØ~½k~¼?þ'ˆçÏKÿ¿RñtÂäñüùé÷êOþ.»ãŒ¡hŸ![‡3Zóu*Ù·Õ³Ü(¯ÿ…ÉâùóÒÿïԟü]ð¹z_ýú“ÿ‹ªúõ/õW1ì¾óÜ(¯ÿ…ÉâùóÒÿïԟü]v~ñgˆ|Yq<ז¶0éð ¥âÃ;žŠ b8ŸÃÖ®ºs—,w9ñ\?ŒÂÒuªÙEyíS·ÒtÛK†¸¶Óía™¾ô‘ªÇê@Í\¢º,™ã)Ê)¤÷ (¢™!EPEPEPEPEPñzѧðts¨ÿ{¤v>ŠC/ó"¼NÂèØê6×`dÁ*J®Òô¯§µ2gG»Ó§ÿWqBq§±üá_1êZuΓ©\X]¦ÉàrŒ?¨ö=Ey8ø8ÍM¡pž&p³ÃKtïòðO©-®"»µŠæ¨wR2 K^-ðóâZ< £ëÂÌÜ\c>V…¿Ù÷íôéì–÷0^@³ÛOÑ7ÝxØ2ŸÄW¡F´jÆësãó<²¶³„×»Ñôküû¢Z(¢¶<ТŠ(®OâF¤šw‚/ƒ6$¹Þ1ê[¯þ:ÖÞ¯®éš©¸Ô¯#q¤üÍì«Ôþà~4ñ|þ,Õ›LVPemá=@=Y½ÎÓõ®LUxӃV}A•UÅbcU«B.í÷·Ds5ïÞ*µk„²Ù¸ÃAeG>ªPJòxžt͝› §b88?*þ$~@ׯüDÿ‘ Vÿ®kÿ¡­raiµJs}Qôö.2Ì0Øxï&þmXùξ›Ó,íµØZ]“A-”Jñ¸È#`¯™+ê-þEÍ/þ½"ÿÐ<½]È\a'tZÞïôäG¢‘ïÔþµy‡Ž¼.þ×Þ(Ôý†|ÉlދÝ~£§Ó½gMK OÚZ÷ü¬dèçxDŽU9T6Òüϯ^<®Ï µtïùÿµÿ¿Ëþ5CZ]]Ò.tÛ«ëSéŒù«•=˜sÔùšŠ`Ú³ˆá§%8Öi­VŸðK:Œšn£qe+#<.T²6U½>‡­zWÂoy3Ÿ^Iû¹ {F?ÂÝJ~=G¾}kË)ñK$$Ñ;$‘°de8*G Šã¥Uӟ4O¤ÇàcÂºw}|ûÿ]4=ÛâÝ£\x$Ê ‘ms­ôå?öq^ipÖw\ ËÃ"È¿Ps^ÿáýZ×ÇÞ š ’Ï·ºQÕ_0ýGåÚ¼UÓ.t}RãO»M³Àå[ÐúìG#ë]8Õw±Ùž ÏÙÓ«¬­87§“þ¿}Cgw ý”vミHêÈ©«ÄþüBM5Ò5vo°ä˜f“ =AÝþ_ËÙ­®­ï`YígŽx[•’6 §ñéP¯±ºÜøÌÓ,­€¬á5îô}ÿ>蚊(­0(¢Š+ç?ˆŸò>êßõÑô¯£+ç?ˆŸò>êßõÑô® ÃøkÔúÎÿ|ŸøTu¿ãóXÿ®q6¯_¯ ø+ÿšÇýs‹ùµzýk‚þ þºœÍðõ:ÎÍu‘ã_ð¥õú Zÿ߶£þ¾£ÿAk_ûöÕì´U}JcõŸ2þu÷/òì1·˜á[‚_»åݸG±ò41-bሬ۴“}÷¹òÅ}E ȹ¥ÿפ_ú®cþ?…ÿç•×ýÿ5ÙÚÛÇgi ´@ˆácLœœ\¸L<é6åÔ÷¸‡8Ãæ„hßF÷_ðIh¢Šî>Xóü4Kß7UТ sËMj¼ =Jú7·CõëãÄKo>ø¥½Õ•ý5õ…s:߀t ~ûí·–Î·ašÙ¿Üã©÷¯?‚ç|Ôôg×düLððö8»Ê+g×Ñ÷G%ào‰Ë?—¦x‚`²ýد€ÞÏèÚüýO§Ïq­´—ȱ×wc¨&¸¿øTþÿžW_÷üÖãøVÆ_ÿaI=ãÙdpÓÛG!wu۞սZ1´õìy™”òÊõ•L5â›÷•¿¯á±àþ0ñ$¾(×å½l­ºþîÞ3ü(:~'©úÖ·Ão ÂA®}ªæ<éöD<€Ž$á_ê}¾µèßð©ü/ÿ<®¿ïù®£EÑlt 5,4øŒp)-ÉÉbz’{×-<ÝNz§¹Œâ<40_WÀ¦¬®­e÷ïÿhU[Ý6ÇREKû+k¤C•YâWúŒŠµEzM'¹ñQ”¢ïfdÿÂ-áïúéøøQÿ·‡¿è¥ÿàáZÔRäc_­Wþw÷³'þoÐKÿÀ8ÿ¼Sâ7…G‡uã5¬[tû¼¼AG·ñ'õÇÚ¾¬ÝsB°ñœluŒî6œ2°înãñ¬1xԅ’³=L£8«‚Ä©ÔnQz5¿Íy£À|ây‡Êa3¼N*ñû[®ü­Ðù0‚¯Ç­êÑ HõKÔQÑVáÀ­}ªøG@֜É¥Á$§¬Š 9ú²àšÂo…f$Ar£ÐNqú×ÀUOÝgÕË05#ûêm?D×çú)ý¿¬ÿÐ^ÿÿ_ühþßÖè/ÿ/þ5í_ð©ü/ÿ<®¿ïù£þ?…ÿç•×ýÿ4}J¿įõ—+þGÿ€¯ó"p`¨ðƒFF "a"Eƒ|¥ŠÕªOC&xü CŸR¹z «OBtÔXÉð¦>¡X¹ŠEÖ*O>tdèðq‚ŸAŽJ±¢ +–,W£xPÐÀ”!…C‹þÕê•ÕY­pÙQë HQzDHP)³®T¡²µƒÂ nj¬JŒM2¥ê”€J2Tˆ0á„dŠ#Õ+I…:ò‰<ˆÐ¶kÁ 'ꤱò—«F‘ ÁA£B @˜€ç@ØnÄháò ¤W¤zˆ¸Ä'€ H°|ðÃ-7f¼\ÿA#—yN©R5Š Û/ôP‚M™0â¹ä9u •ªUª€ÂÄjµÄ‡T|q~YÐq@ˆ&0䐔YæZAP¡†a`ÑEzÒI /$A‹D Al°!AÌAal 2H@$ PVAÆB&c˜±Æ*Ø Á p @Å%¤Á p´ñÆ-`°Ä @÷b`uàB›°aÇ Ðl¶é&`3ÄAp8‘ª©æ§–ÊX~¶ vX€$Eh`Á“.J™hÀA ˜epA\ê"˜ŠªBlÁ§ÀšŒ, :åHÎÚkœÚë±;PKx[¨?:PK»~@OEBPS/dcommon/oracle-logo.jpg÷rÿØÿàJFIFÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ'7"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (ÅQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE†–šzгE7Vö%È£Š‹ÎOïΏ9?¼?:aË"\Òf£óSûãóžrýÐğjAÊÉsKš„J:n§OzO=}E1-I›îÐ)3•¥(ÔQEQEQEQEQEQEQEÓ֝HzŠa<Õ[›Èí"2Í"¢’ÌpÅO#ˆÁf8šðÏø®M[R“L·‹(‹,˜?ëg¯û9þ¶3«QSZØ ñuy"lø‹â£ïx4hƒ`àO!Âþ¸›¿ë÷ŒLºµÂúˆ˜ÅÊ¨Xé×Z­ìv¶q™&“  äúcÿ՚ô]+á:˜‘õ É ãîǵ@ý+…Jµ]©tðËQ]ž~ø§¹ã¶Õã[å[ˆ¾eϸ¦ê¿ –(Ú]6êA&>äÜ«~+ƒúכêzmÛZ^ÄÉ(°<îûÃ57«KsHÒÀf妬Ϧmnẁ&…ƒFÃ!”çŠÏñ¼:-ëÆî¥`b¥©\/¨¯(øâÙtÝF*îBÖ³“ü ~èöVä{W«x™ƒxfù‡Cnøÿ¾MvF·=;Ÿ5_,6%S’>}ö²ücQÿÀ§ÿQ¯jÀs«ßñÿOOþ5›Îê=«Òü)ðûO×t [û†¸W‘9 /{é^tyêNÑgØâ#„ÁЄªGs‡þßÖ¿è1ÿ-þ4oëô¿ÿÀ–ÿõoøTZ?üõŸþûáKÿ Gÿž³ÿßcü+o«ÕîyÿڙoòNuíhÿÌ^ÿÿüiSÄÔo¹5{ì¯\ܹý3·ô¯Y´oùísÿ}ðª÷ô¿$ˆ.nQ€ã-œ~½nå,Ó-zr~- |KÕ4ëˆ×R"êÔðÌ8‘¯¡¯aÒõ{]^Ê;»I<ȤL©¯ž5"çEÔ¤²¹ÆP’²7_jë>ëOoªK¥;*U.œôaŒùþ•t*ÉK’[˜fymÒúÅÜ3Æii ü´^ò#wcŒõ®CÇ'ÓIŒ†º”ì‰Iêk¤½ºŽÊÒIæp‹î$ö󿉵ù|C­ËtĈ—÷p¯÷Wü¹±½œl{9>⪦׺·*ͯjóÜ¥Õ.L„ä•‚§Ðf½Gáߍ¦ÔÒõw] Ýÿ|W–Á¤ÞÝéWŒ1–·ƒï8>¸úw¨­.çÓ¯!»öÍ ïVӃüÈú× :²Œ¯#ê1¹~½ +މõ·=Å;5Îøc_‹_Òb¼ˆò@¹û­ÜW@ +ï^´]ևÀՃ§7 n‚ º»ŠÖ&–gŠ2I8ÅLí±w7u¯ø‡â×Ôï¤Ò­$"Ö&"b§‰ê eZ§":ð8)âªòDÙñ'Å%{}5¯{±Çà;× wâÏ]–iu;”_údLʳ¬4û­Rí-,â2Hß6Ñü>þ½HøL¯K¨Ü¹”ŽR ~f¸oZ£Ðú§K—®ZŠìà¿·õ‘ÿ1[ÿüoñ£ûZÿ ­ÿþ7ø׫„Z7üõ¸ÿ¾ÇøRÿ¢Ñÿç½Ïýö?«êõ»‘ý«—'ày?öþµÿA}Cÿ_üiGˆ5®s¬_ý~Òÿã^«ÿ Jí5Çýö?œŸ tpÊ]îX/c'𪎯r%šeܺA|4µÕ®-¤Ôµ+ëْeÄ1M38Ç® `|KÕµ O¬VڅÔ‹u;"™Ðd–À5ì6¶ÑÙÚ, XЯø¢â­ÿÉÿ¡5kY¸R<Ì­CÕiØ·ð×XÔ®¸ô©¼]âü;£Oy)•O–¿ÞcÐW€j…Ö©}=í܅¥s‚Û¸QÏò®Zõ”*Üö²¼­âŸ<þ§Õ~%뺃²ÛȶpÒ ˆ÷f~B¹éð®î„zbæ\ݳz™øW*yê{’¯–á=Î[³Ë·õ¯ú ßÿàC/öö³ÿAkÿü oñ¯Xÿ…C¢ÿÏkŸûì…ð¨t_ùísÿ}ð«ö{‘ý­—'ày?öî±ÿAmCÿüjޓ{â WR‚Æ×VÔ7ÌÁr.Ÿ gæ~¿Qõ"½7þ&×͹Ïûãü+cÃÞÓ<=,מd³J1¾V߁è=³ÍT)TR՜¸¬Ó*N4á«ò ^æëBðÚ¥¼%ÎäËìB+±=@fþ•ÂE5ëkía§}öꕧódܤFHÉþ¬®æû¤ï^¥¬i1k\¶SgdƒüðkŒ> Ö¤ŸaŸOM®\_ \T)8靠¸ã¡®»3Ä£Rš‹æ:ï j²júä ,Ž˜p‡Ù·k/KÓ!Ótø,íÓÀ=ÇϯãZ•¡Ç6œ´Š( ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤4´†€9Ïê ¦xnúå_k¬Lž›ˆÀýkç&f9s’K`’zóýxü…{¿ÅçÁ×{yù£8úHµàÄ ˜Ï8ÿðçbß4’>Ç©¨ÐE¹î|7›£Åvñ´Ü(‘É€z/á]ð½k7IxÛM‰»Œ}8­!÷«ºœyc¡óº’«ZR˜ïÀQø péKVrü(§RPEr?^}ñ'ðßhÏ{x¸´ýè+Հê¿LW¡15—®4cKºó@ÙåœçÓÔN<ËS«VT«EÅõ>g À† C)rœr9ý+Þc¿:¯Ã×¹b –ЖÇf*s^ éøf½‹ÂêÃáKƒŸõSî7¶å^} ‘õ¹Ì*{£Çîzq_@ü8#þË ÿpÿèF¾~þ ÷´Ëà[V·Pe³(nw0šM‹ˆWû=3·Í#økȵ‰z晨Écy¥Ç ñòPÊpG÷Ç#ô÷ªƒâæ¦W:%ÿ¶­ÿÄ×d±ã¹ó´rŒMhóÁ]Ð3éHH<ôâ¼\ü]ԁÿ|_÷ôÿ…Wºø«ªÜÆË ¤HHë’ßÒ¡bàú›¬‹}PÿŠ×>¹k {ZEŒœrxþMX¾‰¤ñ¾ž@8C&qî¤søç󬫹¯®k©L³Êۙ‰çŸOnOç^ð«ÃsCæk7ql2¨XCw©5ÍÞVæG¿Š¶.öS~ñêÿÁHÌ8=(§­s1ñ~Ñå¸c™V5îÌz ô§%v|U2«QF=Nâo‰šW]Õ¸?<ì`~ï×®}ˆõ¯=Ó¬fÔµ,­òÒÈà=;ÿ"~‚£žâIç–æy7K#–gì{ñúJõ?†žû5§ö½Ú$ y`ÿ zýzÿÀ@¯-~þ¥úm7·m¤ÎËGð宝 G§ˆ•£Ù±ò>öG&¼KÅ#ø]–؃öy1$$«ÎÔt>Äw¯£q·€jãüsáµ×t·XÆ.b̐·£{ûWej)ÃDxfc:8‡)=$y‡|Lú²°Îø³¹`²xV8Úߙö¯~‰ÖE)HÎkåwW$Œ¬ˆJ²0äuʟ®kÙ>ø¨ê6ŸÙ×S»·ÿg¡¬pµ~Ë;óÜ•±4֌ê¼W¨+ÃחcŠ"Ã=Í|àřÙå9bùcýãÜþ5îÿÉ> ½*r™ðgôá {~cüj1rnIðì#¨·Gµ|8ðìv4w³Ä¿h¸Fb>è<^‚ pJÌÑLm¥[ùDl1®Ð;ŒV®x5ÝIZ:1Œ­*µ¤äp)Ø¥Š1Z¢bŒAKŠ(1´ûׅ|SÇü&Óì©ÿ¡5{Áé^ ñKþGÿ^éÿ¡5rã>Üáï÷´;áXÿŠÈÿ×»ÿèK^ì•á? sÿ ‘ÿ¯fþk^îµ8Oá•Ä/ý­ú"J)3K]‡‚ÒN)iL怏ÿ„×Ãÿô±ÿÀ…ÿ?á5ðÿý¬ð!ƾq:þ¢Çü‘GÖåØ_êíùø£Œü=ÛX²ÿÀ…ÿšßÄú-ìé ¾©i,Žv¬i2’N3Ž |Ö03œóõ¯Qøaá†Ûý·s ! ¼€7}kZU§7ª81ùM,->e;³×@Q°z T(êëG€„Kš(Åah¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šç¼Y¦[׶j2ÒFÁ}oÖ¾o‘YY¢qµ× ƒÆêú©£<ç?…x¯Ä/Ëe}&©e h$%¦@3µ¿½\XªM®d}AŒ9:Sz3¦øqâ4½ÓÆy¹¶R q_þµz6îœõ¯–¬ï.-.cº²™áš?¸Ès¯¨äó^¥|XžÝ5;`äËHÛþù¢†!ZÒ5ÌrZŽ£©E]3ÚâŒûחÿÂàÓÿçÆïþù_þ*ø\Zwüø]ãŸüUoõˆw<¯ìŒ_ò3Ô3Fáê+ËÿáqißóáwÿŽñTŒzüø]ÿãŸüUX§Ü?²1ÈÏLf rkÎ>$øš+]%´è$æè” v^rÏ­`êÿn®ax¬,ZÃïÏÉEþuç÷WSÞܽÅÌÍ,Òg%Ðà~"°¯‰MrÇsÕËrYÆ~Ò¾‰ÇË"Åî–Fت;±8üÍ{Ñ°þËøxÖYËEfP°ö^µÂü;ð„×WPëwqbù¡B:œc?…z‡‰p<7ŽÇþ;SB›Œ˜fØÕZ¼)Ãdϛ; ÷ÿ‡ 7ƒ¬sýÓ×ýã^>í}ðá¿â±ìŸýÖx?¼BßÕi“x§Âö^#±hfŒ,©Ÿ*P9Sþ{w¯Öô[ÝüÛ]Gœó€Fñê?1ùZú_nGõ‡­ø~Ï]³kkˆƒ)9¡SêcÉç¯5Ո¢¦´<<¯6žJ-èϛ€éè}xþUÓi>Õux#šÖâÅ£cœùþ‰ü'{ᛲ²‚öŽqà?Oþ¸ªºˆoü?x&´mѱùá'å#×ë^t)ƴϲÄbªb0þÓ ÏFðÿ«kIVmVsv@º}êkÒ¡!ËUTt¬x³Oñ¢½»þ𬍇̧é]òO±¯R”b•â|2­yÔµk܊{„¶¥s…PIcí_?ø×ħÄ:ÛI“g)¡=¾¹Zí~'øŸìð "Ò\M2æVS÷S°üMyLÉslûú⺿øU~"ù–CþÚ7ÿ\¶­£ÞhzƒØ_ Rsµ—$~? ÂTêAóØõá‹Áâi¬<Ïl¹•óòOþ*“þŸÿ>’ÿñUÑõŠ}Ï+û'üŒôüÒf¼ÃþŸÿ>7_øçÿKÿ ‹NÿŸ ¯üsÿŠ£ëûå8¿äg¦1í^ñCæñÿ¯eÿК½ÿíüE¨ ;{+ ÅY™È\ ìO5翲|Yü{/oö›ü+ L”©ÝùÑÆòÔVc¾ÿÈÞOý;7óZ÷€x¯›ü-­E k&úd‘—ËØp¥zübÓ±°Þß+ÿÅTa«B0³gNy—×­‰æ§£Ô 3^cÿ ŠÃþ÷’ÿñTßø\šýîÿ$ÿâ««ëûž?öF3ùéù…‡¨¯3?tãÿ._øçÿQŒ~Nln°:ðŸüU/¬C¸eb’»ƒ1þ-i­§m¨¢’ °è ’WùŸÊ¸ÍQM+V‚æpØafR3òd׫éÙ|AÒ¯-Äq*ŒI P7óÓò:Ÿ¯­y&©¤]h×ÒX^Fbtû¼pëÜ©î?—|Wuï󭏤ʫóÑxJš3ß´ûm"öš( uqÁA}jÿö.˜ßòéýð+Àü?âÍSÃò„öÜ£¹Çà wVÿí¼¡ö‹ …~á °üó[B½&µ<¬^UŒ§?rí‡ý‡§Ϝ_÷À£ûOÿŸH¿ï\'ü.;þ|.ÿ%ÿâ©ápéßóáwù/ÿZûZG'Ô1ÿÊÎçûÀøõ‹þøj(#†0‘¨UT` WŸŒzw}>ïò_þ*“þþš9m>󑓀¼ãÔF¥?²EL3–õ"ìzpãŠubèz¯öΕêÁ$+0܉&3ŒåzÚ¶+¡jy­r»1ôQE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ƒUç·I£d‘C«0EZæ“m+]Y6Ñå^!ø[ Ô¯s¥Ìmܶ捆å?óü+Š¸ð‰me+ýŸæãþZE2•üŽ¾ˆ9¤)žÜÖÃB[Æ;Äя*wGÍÿð‡x‡þsã¿ãKÿˆ¿è7þ;þ5ôw”¾‚)}gõHë~ÈùÃþÿÐ.ÍƔx?ÄXÿ\ߚÿ}äA@ˆtQõ(â:ý‘óͧ€|Iq(C§ˆTÿ’ ð?¥vÞø[´‰s«Kö©G+Œ*ר„qÇҍ¾Üc¥k <#©ÇˆÎ±5ãÊ݈`†8cXãP¨6T5ëi.´KÈ!äxX*ú’­p¸Æ&ќ÷çšÕÅZǓ¸Ï˜ù´ø7Ä ãû*oÍƽ³ÀÖ:w…lຈÇ:‚QÉ5ÒyIž‚´‘Á¬¡EA݆/2©Š‚„ú*2¦jAҐÖçšeê}¶¥k%½ÌK$N9R2?Ïò¯ñ7ýKM¾VÓ!{«W9\PûŽâ½×›Aì+´c4w`ó ØWx=ž´ÝÅZeò\ÙXͪ{‘ó}y¯X°ÖõIô §¹Ò®!½…aùO˜ßÎ{ÿúñ]Q‰xÊ)#¹ D@9éÓéE:*µÇŠÇ}b|òZŸ>_økÅ7ú„÷—:dí$¯¼Œ¯Ýz ë>ø&êÖùµVÜÆêvÅ󃏽ùW¬lR:Rìq¥J ¹ùêfõ§GØ¥d9Tmè(ÇҝEtO¨}©1O¢•‚ä[xâ¸xEõÛ´Y ût¦8,3’¼vþ ô bšFF )Ǚr›PÄN…E8=OœÂ#ÒæV*C”Œó×Ôçð¯cð¹¾¾ðê&±lñÜ&cmøùÀïŒ÷®¨CçhÍ<.ÌÖP¡{˜¼Ê¦&Üۣ̥ÿY+öGÎð‡x‹þs~kþ5$>ñ ÓÇÓ¥PÌquŽä×ўZt~Tl†>œQ.g> ¯%k#ú:•œK¸‘Én¤þ'Ÿ­&¿á{[yWQGÝqÃF}Aþ•Ð…À¥Ûÿ×®§òòž/·©í}¥õ<;VøY«ZÈÍa$wQg!$;_ñã ùŠÀ“Áþ$NK—þúSü}“Ë_•„°{½ÿMYê|áÿwˆè7æ¿ãGü!þ"ÿ \ßøïø×ÑþJÿtRy+è´¾§õŽ¿d|ãÿoˆ¿è/þ;þ5­áßj—zÌ_Ú6fHÈw˼ŽÝkÞ<µþâÑ°ƒJ#„„]ÌkçõêAÆȎÚ J€ €=¥Y¤NÅu%dxRwwbÑEÄQEQEQEQEQEQEQEQEQE'f–ŠLQŠZ(1F)h ¢ŒQ@X1KE˜æŒQE-Q@ Š1KE3h=©iÔPb“ê(¢Š(¢Š(1GjZ(£ð¥Å-Í´ìRâŒPbŒRÑ@ Š1KE7`bÚ’y´S0(Å- Å&)ÔP+ ڎԴP11F)h Å&:ŠLRm§Q@¬¥Q@Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Šòý+â>±ÿ ¢÷Àú½µÙÿyö9m÷ýÁ*y…›êòïcs^¡@ãs|g¹‹ã(ðªAi6ŠoVÇÎH\N% !f 1Á;~è8Ïû%WŸÛøßX¿øÑwàëk[ôÍ>Ð\]M)s4™E#fÑóJƒŽyzQEW‡ÿnëðÔ¿ÙÚ·ßٟóåö‡òãËwÜÎß½ÏN¼×¸PEÁüYñ®¥à? Úêš\“O-ê[²Ý#2…(푵”ç(;úÐyEeøkR›Y𮑪\,k=í”7,`… 聒N2}MjPEPEPEPEçþñWŒ5Oˆzޑ«è?cÑ-|ÿ±ÞýŽhüí²ª§ÎÄ«e <q‘ÅzQ@Q@WÝ|cÖ¼Kª6›ðãÃRjf'Ä··ŠV,|ý·(@ÁAVvRys@ÉExÿü,oˆ¾ýÿ‹üæX·ÎÓéO»ìñ¯23€Ò„¸ àóԏ` Š( Š( Š( Š( Š( Š( Š( Š+ËüñXñÅ?ø^òÚÅ,tß´ù2BŽ$o.uwÄ Îæ€=BŠò½[]ø˳}—á=}=.$[Yd•C‚¹?üXø£àï²ÿoøwC³ûVÿ'†“vÜnû“œcrõõ  (¯ÿ„‡ãŸý šýþ_þH®óÁW¾+¾Ñ¦—Æe¦Ÿ¨ †Xâµ`ÊbÚ¸c‡~w{=@:J(¯#ð_ÆCâ߉·š—i’é(Ó¤Xä2ÎÈA‰àA#à¨Ç$õõÊ(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€>øÇÿŸÅ¯ ø½unû<ÿ²|³Kä¸ó3ÐÑÈ©Éä+Ý5mJF¾Õ.F‚ÊÞK‰0 E,@É8¢¼ÏöƒÑ¿´>.¢‰™¦ÝÇ+Hãç¿îÊ©ÇvhÉ·Ô ÇñoŒ¾Óû5i÷‚kïµjQC§™™¾v‘ mÙ*Ây'pÈäàÉ55{?èžÕtVÒõ’÷Vì±y‘ƪ²š6%eÎ…=út=+¨ýŸu)¯¾ yV0–²ÛÄT•!eËs×tŒ8Ç}Hªê¶:íQq©êw1ÛYÛ¦ùe~Š>Áù’N’H$×_?Æۛë‰[žÖuí>'15ìjè¥ÁèÆüm*yÁù¹QߐÕ4«kö­k JÚ;«Gtw†NUŠY‡\ŽãrŽ¡È⾇‚mmâ··Š8`‰GjQ@ÀŒPà‰š/íä[1%®¡+Oe1€ e¾Ž3Áé23ÉþÑßòO4ÿû Çÿ¢¥®sÅÐCá?Ú_Ã÷ºdQ«êoΌ  ià¨\rW-“Ÿ˜’sœWGûGÉ<Óÿì+þŠ–€=ÀŸòO<5ÿ`«_ýµÐW?àOù'žÿ°U¯þŠZè(Äþ'Òü#¡Í«êóùVñ𪼼®z"ìp"I<΍šö¢†ëGøi¬ßéîì ¹Fr$PÄg剀ú8Ϧ@ÈÏY}o¦i×7÷’yv¶±<Ó>Òv¢‚Xàrpé^ñ³þ)‰^ñ•Ÿ?úèaýÓKä²îÝ ë½$œº¸äp5?i nkO i4^b¥ýÃË+¬…AX€ùˆ‘[“ÁAÇ ɾ:>¡¨ÜCá/jºý­¾—nLXµQÈR ¶ÒyàbCãö—iáãw8Õà»[[½&îo"H‰F,Àí;•YJtd.F}#¾·ð§…ôíÕ·ÇiBø#Ìrrï‚N71cŒñœ+Ëÿhë ?øCtýGì}»ûB8>Óå3Ëòåm›ºíÏ8éšõ SþÛðö™«y>OÛ­"¹ò·nÙ½mÎqœg¸ÿ üMÿ„›â·áO쏳fyÿé_ißæùr¬s`Æwg©Æ1Ítÿ’yá¯ûZÿ襯øYÿ' ã_û~ÿÒ´ tÕu[K¸Ôõ;˜í¬íÓ|²¿E̒p’@&¼œ|x›V¸u𷁵b‘LÎ2­p Ʋ 8$ŒóLJñÒkÍ{â…¼öŸ³ØÜùO¹AoÞM)‹s.@m¡xè~fçš÷M+J±Ðô»}3L¶ŽÚÎÝ6EtQüÉ'$“É$“’hðWÄy¼Q¬Í¢jžÔ´-Q-ÚíaºkÂSp,²YˆÆÜ|§žÕÞQEcø²ÆãSðn¹ag™uu§ÜC ns´ldð2Hë^!ðÅz^y}á=ZÛìµÕÞcžeØdpýòV6Ðz–aÁÀo¡ëÎþ | Ñ|wqý '“MÕ¶71 e”1æ'ˆP@ ƒÈÎ@z%󅇈|{ðcX¶°ñ*Ï©økäŒ:,j €2°YBDp0!ëÕüqã x¾êž$Ñ.~Ó Ö›-® ”ÆTÈ àã*È[8à‚¸àôÏñ?ÅË}/\›Bðî‡}âMZۛ˜¬Ù0,ªÄ² ¸°H ŠÂŸ,u¯kºE߇µ‡}±Avr¬HRªI UÛ'®$°æŸ ~)x?À>k;?U—S¹•¥»šae88EV.­´/8=ŸjŸÅω~ñþ§Å¦ØjQjw–[¤UQ)Þ£kœ’Ëä äwúŽ¼oEý¡´[½/Q¾Ö4Ù4ójð¤6ð\ å¹/»;AT(\’N9©ú‡†µ)µŸ é¥ÂƳÞÙCq"ÆP΁ˆ$ã'Ô×ϟ³Ç†4½c\Ôõ{ø<û+È6ªü¢;ïùÈîÃ`ǦsŒ€@£é¿¾ÒãÓ´ù/ƒÞÍ$i/–WtaŒ<1RÄuÎÜpGIðóÇøÿÃM«Ec%“ÇpöòÂÒ€VʶFÖ^ s‘Û'¬¯Ÿ>HÞø˯x&Xdò/]–ÝÜ«¸†’&f 4LÄàg%xгøÃÄ°ø?Âwúôöò\%¢)¡»3Q“Ðna“Îx=*¿%øgÇú6Ÿ›a©E¨YÜYn‘UDL§z®rK,g‘ü'‘Üê:ñ½ö†Ñnô½FûXÓdÓͫÛÁp'–ä¾ìíP¡rI8ä¤êÔ¦Ö|+¤j— Ï{e ċ!C: d“ŒŸS_>~ÏÒõsSÕïàóî4¯ Ú«òˆï¿ç#» ƒ™Î2·à¯ëÞ(Öf²Õ<©hP%»J·7Eö»Q°nFHbzÿ â»Ê( ¾øYÿ' ã_û~ÿÒ´¯ +çÿ…Ÿòp¾5ÿ·ïý+Jú¾ý¦¿æVÿ·¿ý£_@WÏÿ´×üÊßö÷ÿ´hè (¢€8?‹þ+›Â_®î- ‹yzâÊÞDÈò™ÃùB«FpÛxÆkÈ> ø¾Xx'^ÓâŽ[»T¼‘Š˜žå_Î^W`O˜¹<썯Oªø“EñOÇ«x5mRÒËGð²;Ân¥,×jÊ ÛH!öñ–È8áv?×<%âë:<^)њyíË@‰©À¥åB5Ë6,ªqÁ<Ž´Üi:”:΍cª[¬‹í¼w¬€ ê‚Fp}M\¯ýuöÔ<}¢ÊÒ3éw£Ê¨UŠ\°PG$ïYIÏ÷‡=‡²PEPEPEPEPEPEPEPEPEP?ŠôoøH|%«i y.í$Š/£p“¹1N¡#%Y0A!! ç>a “öq~øa øKÅWþ Òä»YïRDkv( ‰]ÃáPPÉÀ Ò¾tðUÌ?>/jÞÖ.¤·ÑïÐ {‰Tlo›0»¹+HŒGÊœð¹EÖ?ˆ|+¡x®ÌZëšd±¯Ü.xòA;\a—;FpFqƒÅjA<7Vñ\[ËÐJã’6 ®¤dGÎj;[û;ï?ìwp\y´y2òä_¼ŽŒ22"¼ŸþÇÁÿô×?ïü?üj½žÒ<£ /F†Hà/æHÒH]¤“j©sž!Gèxf·­éÞý©gÕµk³ØÁ·Ì—c>ÝÖAG <8ô:¶›s¥R BÒ]<#9»I•¢ ¹ÜwƒŒ œñƒ\¼ÿ 4¯K㠉.漕 Ik!F·u0ù$)’ öÏ_n+›¾ýž|wy$ð˪ÙFØÄ\)DÀ‚èÍÏ^IëéÅríÿ+ö‰·½°ÿJÑ4+7¶œ'î÷H¹fÈlÌJü¿yA#€ZºÚ;þIæŸÿaXÿôTµéš‡4 ik¦è¶1ÚZ/±IbÌz–f$±è2IàÐ Ïñ¯‚´ßhÐéz¤÷pÁÂÜ+Zº« ˃¹Xc{zPžÿ’yá¯ûZÿ襮‚¼þÇÁÿô×?ïü?üjøgÿÐK\ÿ¿ðÿñªÃø‰Þøá¢xÜÅ ÒîÞ4ºº•KÇm0È_˜œœã8 {¥ýž§gå…Üv²gdÐH$FÁ á‡øTz®•c®iwf§m͝Âl–'èÃù‚#@#W—Ïû:ø6k‰eK½fw,±GqTýѺ2p:rIõ&€9Oˆw‰ñS⮇á}·L°Á¹»³u`B†gd®Õ@€d}üŒ]?í ውcÂVZ½œÏ6•+™V<:üîGS‚‰Ó ,HÀÈô ø/BðVœÖz-§•æí3Ìì^I™Ff?‰À‚NÉ­MSU±ÑlÿR¹ŽÖÑ擅Rîr{ Ì9<§šãü#ñ[Ã> ðÕ¥õþµ¦é÷û][Üΰ”»hvÉBy'ƒƒÈ yGƉzGŒôt½ »›K[Øå›QhŠE¸ÆáAÉËýà¿êÎG©ÿ­økâ?ø›[hÖ7Ï÷e°ºt…¶ü§h‰ÂF\çœ×š|f¼ð宍¤xÂ6–:މf†Ãçd•T¨ÁA/+AÉßò ƒ¸PµøþI熿ìkÿ¢–¼ágüœ/íûÿJÒ½ÃBÓ?±<=¦i>wöH­¼Ý»wì@»±“Œã8É®@øq£øsÆZ§Š,îožûRó|èæt1¯™ ‘¶€ Ž@ÆIâ€<ÿ㾍y¦jڏôôó¤Ó%Š)£pYl†H˜€8Rŕ‰a÷Mz§…ü]¢øÇKKýö9Ei`,°‘¶DÎTå[Ø㠑ÍlO7VòÛÜEÐJ…$ŽE ®¤`‚Æ+Ëõ/Ù÷Á× -¸Ô´ôÅkrIÉù˜®sÎ:ãÇ\€zgÛìÿ´³¾×Û¼¯?ìÞ`ó<¼íß·®Üñž™«Åø+áw‡<q5ޖ·s^J\ÝM¹„d©Ø…\eÎ3לq]¥W¿¾·Ó4ë›ûÉ<»[XžiŸi;QA,p98ôªúf»£ë~oöN«cäãÌû%ÂK³9Æv“Œàõô5rx!º·–Þâ(æ‚T)$r(eu#x Ž1^_©~Ͼ¾¸YmÆ¥§ @¦+[ÊNOÌ|Åsžq×:ä¿ÇýEµðCèwMºµãÇ-¤AC4A\fSýÀT:Ôî dnÅÍÀW—ß³ü¾?g¾žÑ¥PIO.F”ϾW#¨qŒ˜Æ´<1ðgÁÞ¼†öIïo —͆âö]æ3Œ *…N •$sÀÇ P‡ü ñ¥–7ƒu»¿±jv—n¶°]¨‹*̈‚dùOÍó g/¶O<6¶òÜ\K0D…ä’F ¨ d’OÎk“ñwà xÓtº••|qþhDsS‚… óÀÎ1\œ³¯ƒa¸ŠW»ÖgDpÍ—…pÝ;c§B(Ö ž«x®-åŽh%@ñÉWR2#‚ç5à³/üÍ?öéÿµ«Þ,,môÍ:ÚÂÎ?.ÖÖ$†ÜNÔPŒžNk—ð/ÍáÿÛÿ²no¦ûw—æ}­Ñ±³v1µWûç®{Pa_?üwÒn~Ò­Ž³ábÐÉ RdûDr2°24xÁà†‘ÎG<û }@?ão|GÖü_}¨è-û™7—äÛi\E³ª·ÊŠTeƒ=kŸÿ…Yñþ‡ßü¬]ÿñôóÿü*ϋÿô>ÿåbïÿˆ®C_‡â„üe¥øUÖ¿·®/<©#°¹º’êÒã|…$I°§,½úpAd}__:A8ø“ûIEqo,“ézC‡ŽHÚ1¶89èӜç’Uûvöÿ x?@ð}¼ðh:lvi;‡”‡gg `e˜“Îp2}MeüRÖõ|8Õµm&ãì÷Ðy>\»öî™ðÀƒÁ#‘]…yÿÆßù$:ïý»ÿéDtæ&·ñÛÄz<¶“qö‹÷yrì±MÛX©á€#G"¯ÿÆCÿŸìúô‚_òHt/ûxÿ҉+Ð(ç‹ûïÚfsy'—kkÍ3í°;QA,p98ô®ÿ৊uŸx6òÿ\¼û]ÔzƒÂ¯å$xAd «κÿÉ<ñ/ý‚®¿ôSWŸþÎ?òO5û Éÿ¢¢ `¬¿ëö>ðý浩4‚ÒÕ?–»™‰!U@õ,@çžHքó-µ¼³¸¤h]„q³±g…PK` =«æÍfëÅ?|rú-­¼ú^‰¦Ê|Ø`•/0ï1ݹ€î@0ü-£üIÖu›¿øcJg½¸…ÉX†v%ü±9'%w ÿçï ë/ï¾?išuÍýäž]­¬O4϶ÀíE±ÀäàÒ½ïJÒ¬t=.ßLÓ-£¶³·M‘D2IÉ$òI$äšòÚÅpéÞ‹ÃqÞïTuyTà˜áƒg®Ag  ‚ûŠËø£ÂÚÒm¼Aâ$‚=KKÕFu+ä\Þ*Æd……ÚLXqóaHOÌ}â¹?†ÞoxMÒ§Ž5¼Øf»ÚŠšçq A!Š‚vNBØÖP/âOˆžðŽ£†¹ªý’êH„ÊŸg–L¡$”R:©ü«‡ÿ„Ëàgüúèø"oþ3]lj>øWÅڌwúæ•ö»¨â«ý¢Xð€’€êÇó¬øR_?è^ÿÉۏþ9@ÿü&_?ç×CÿÁñšÔÑ>$ü&Ón<÷MÓÞéÑç=º±Î{y`7Xàdô«Ÿð¤¾нÿ“·ür¼sãOƒü7áÍgBÑü-¦É¡rŽó[ÆóJÒeX±¸œ’Ë Âóëڀ>£¢²ü7¢¯‡|5¦èé<“‹+t‡ÍrĹ“ó@ÏEÎ`­JËÔ¼5 ë7 qªhšmôêK«T•‚äœÀœd“s\§ðÀ×þWÙ­ï´Ý™ÝöK¢ÞfqŒù¡úc¶:œçŒ\ø‡ðÒûÇZΙ‰¤ÒÓNLÛǦöIKdÈ:~Tã¶ÜŽ¦¸s£|pðeºKkªÇ®Û«µÄÑ EËa@ʟ5VB Œç®0O øOâÿøÎÁ­|K$Þ óÅo+D_1^ÊYU2 6#i_l¯'ðÅOx—Å ác¿b¿†'šöo5¡òP ©ò\nçtcï½»§OX ¸?ˆ ô¢ÜK4–Z´h‘Åz¹p# ÇcG¸>f99Ç8=åâώ¼?ãCÁºìr\i¶vâQ4Îì°¯ ’ø £@CŒll`«)öÊ(  ?x–øNÿ^žÞK„´E" f`Š2z Ì2yÀÏ¥GàïYøÛCþ×°³¾¶µ2´IöȂ6ã,¸b 䑜õV«Ä<¬Þ|]ø‹eá?›¤YK—»·%ѳ´I;B•L•_\œ1Þ{þ‡£Yø{C²Ò,e­¤Kd[Y°,NI8ä’hB¼㦹7‰µ½3áö…k%栗 <豐D…?v¡‰™‰iÈÃc´ø½ñóÀúG¦YN÷÷$w0[g<–#kIÁÂ{e¸Àlƒ_ ï4_?Å^&‡~·}óÀ·i­Õ²]œ“ďžxÜå™@)¥i_4=.ßLÓ-£¶³·M‘DŸ`æI9$žI$œ“TæñoÄËiñ”v7Ñê2ÂM¿‚Ù¡MŠY¢Vۆœp~“žxmm常–8`‰ É$ŒQ@É$žœ×Ï"o‰?5?½¼k§Ø¿œ©$jrvùvà©c‡Ú»÷ €ÑñŒŠö?øNð5ý¶,ïÝÛÜly¤JOȊ¤œap }æÆIÆê(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€<ß㏇®5ÿ†·/jß¼Óeå0>tE`ü’1…vnùۀ2k?Á?¼-eð«O¹Ô5 ºÓ-Ö[4îр‹± nNGÊ7[å$zÅyœÿ<sâ uG¶»HåÛOŽ`–à‘Ž€ê3ó`0ð8â€9?ƒºN©âÿj?|AÖlÇdV=ˆîG–Å0yTA³s¸ó¹M{¤óÃko-ÅıÃH^I$`ªŠI$ðæ£ûG§}ŠÌýŠ5‹Ê„Û¢$…ؤã‚8éŠðøUŸ¼u?™ã-{ìv¦\´Ì%ÚU0®Ä|¡œãï)ûÇ<€Sñ½û|\ø½¦øI2]è¶#’{VRSq0r¸ (ÎàJ¹ßƒôs~ ð6‹à]-ìtx¤&Wß5Ää4³q¸€8'©$ô”U{ëû=2ÎKËû¸--cÆù§F‹’ËIñ¬?éÚÖ­àËÛ\ÉmªLð¬3¤æóP»o€vqÉ⼟Mýžõ-RýµxžK‰ÝȔZ³K$ª&iFA 9ç€üñaüm¿Á^³žõµ‘Õ-HÌèˆ@!pfbÝàŒ|ÕéŸ ü€<4lÚXî5 —Þ\" cã%œg¹c»SÂ~ м§5ž‹iåy»Ló;’fQ€Yâp0 “€2k  ¼ÿãoü’wþÝÿô¢:ô åþ"xnóÅÞÔ´; ŽêëÊØó±6ʎr@'¢žÔæÿ ~)x7ß4'VÖ~Ï}æEöYŸn靇*„<ì?ávü<ÿ¡‡ÿ$®?øÝcø[àW†-<9i‰t¸/uußö‰à»œ#åØ®eè»GAÓñ­øR_?è^ÿÉۏþ9@þ,ø¿àMOÁºå…ž»æ]]i÷Ÿdœnv‚Œ”ÀÉ#­Wýœäžjö“ÿEEZš·ÀïM£_E¥è±Á¨=¼‹k,——RR§cœð¡úÐøMà­KÀ~ºÒõIí&ž[׸Vµve Qr©ÎPöô ò£Žayž(£G™÷ÊÊ m¡rÞ§j¨ÉìíRW‹øçÆm¼[yáÏhPyoå=µÝ¬ pë± Îíû´ÜQÁÞ  HÈy㟈:/t¹'¾ž9¯Êo§¤€K19㪦TåÈÀÁÆNó¿†þ×|e∾$xÉÿÛÓlÙݸ;+gdkœ§ñùóÝäð_Á¥¿_xþòMOR.’-«ÌfS„NÌ rÐvüXl Š( ŠÇñ^¡y¤xKVÔì êÊÒK”Æ]b–*@e<€FsÆsÎ0|1µ¿Ž¾*{ß±é÷zt k @ÊGîÞl>x'!‰öâ€=ŸÆ~9Ñ| ¥¥ö±,„Êû!·€–cÆv‚@À$’àu #øOáÝGÇ~4ºøâX°«(k4¨Ši( ƒ“¶ ªêX»*ÙÜð¿Àµ]Q5ÏêÒkšus v’&+<ÇšQ€œa@Æá^ÁÚÛÅoopÁŽ8Ô*¢€  *ž­y6£_^ÛÚIy=½¼’ÇmwLʤ„䑎‡¯CW( ŸÇïh7oâŸÇîŠðƶl$DËFèzöíôOŽþÖ.<‰®nôÇ.‰¿„*¹c¼…‚ÆK?\zDðCuo-½ÄQͨRHäPÊêF ðAb¼ÿ_ø%àyÚUÓäÓ'g ÒiÎ"Æ݄¡8Pr3žN@;Ëû=NÎ;Ë ¸.ídÎÉ H‚AÃ#ð«óF±ðWƾ •/¼%¬OzÒ췑¬™­gÛ€Ø1‚“»Ž¤¥«èûn-ôëho.¾×uH“\yb?5ÀŸhárrp:f€,QEy?ƆÚǍï4©tI ¾h¯L÷ˆUC4LTÒÒ®@ÝûßLØxŸâ…¼#ßښ´ê. ”,$œ±]Ê6W#-…ädŒ×Œk>2ñÆ}EôOYO§éä]9ŸfôrP4Î:)Rt»³†?>: ~ÎÚŒPÏâ;Éõ+¡ÌBÆ(9\mÈùÛ ’ÏQÈ>Ácag¦YÇgai¥¬yÙ ˆÑrI8QÀÉ$þ4ÏøÀº_€ô1a`<ۉ0×Wn¸{‡Ï¢Œœ/l÷$“ÔQEG4Ü IâŽT®Ô0 ¬O=ÃAì@4O<6¶òÜ\K0D…ä’F ¨ d’OÎkŸñ毭h¿Õt;K«»Dó.œ…X——`7 ñ¹{œ’·ŒI¢|Wø³pcÖ¼Í EH%­ãà¡8ˆüòž7 çnA—¥iøëÇZ§ÄMpø ÀGÍ·“+¨#a Œà·ñçjäŸÖ<á;?x^×E³7ÊËÍ9@4ŒrÌ@üÎHP£'¨üàmÀº[ØèñHL¯¾k‰Èif<ãq pORIé(¢Šóþ¼ñÃÉ>Ç$ ý›)Ô&ó˜ÑÇ›‚à·#à{ФQ^ðKþI…ÿoúQ%zQEQEQEQEQEQEQEQEQEQEQEQEQEQEU{û=NÎ;Ë ¸.ídÎÉ H‚AÃ#ð«QTõ-[MÑ­ÖãTÔ-,`g²]L±)l€Xœqìj=3]Ñõ¿7û'U±¿òqæ}’á%ٜã;IÆpzúТŠ(¢Š(¢Š(¢Šçô¯xw[ñ jv§cæ}¢&EÙ±Â7ÌT)Ã8&€: (¢€ (¢€ +Ÿñ?¼;àï²ÿoêcûVÿ'÷2I»n7}Å8Æåëë]QEQEQEQEQEQEQUìoìõ;8ï,.໵“;&‚A"6  88 Â€,QEQEQEQEW?ã\x¯CþȋWŸL·šUûc@€¼ðs¾ OÝÝÇ<ôÁ+ ¢€+ØXÛéšuµ…œ~]­¬I )¸¨ <œ:Պ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¾xø‰àÃàMKÄ^.ñ„ú•ÔS®Ÿ+l’R Àp>ã7DS–êyÝô=yÿÆßù$:ïý»ÿéDt|ÿ’C¡ÛÇþ”I^^ðKþI…ÿoúQ%zy>“ð?N»¼ŸWñ½üúþ¯wóO‡haF!x]¤1ۂÊ®ÒÁ\¿Å/…Ö^ Ñ×ÅÞ ¹ŸH“OړÅěˆvØ’Á¾|œ=ˆ!¾€¯øÑâÉuùm¾øa?´/ïeSuöwGcܞ»X2obJí 3Á8ôÏø–oø#L×n-㷞åId•ÜŽÈHÏ ¹Ç8Î2qšé+¾·ð§…ôíÕ·ÇiBø#Ìrrï‚N71cŒñœ+Éþ"xï]ñ"øy૏³]B\ßÇp–Q½•]NUP»1*T`p¢¼nÙ×A™ Úƽ¬Þê;<÷(è‚F,NpÊç<òKœžø¯@ðW…fð~6–úÍÞ§¸gµk¢KAÕTˆrF/`£“…ÒWϟ †×ãïŒ-íâŽ"KԎ8Ô*¢‹¤81_A×Ïÿ ?äá|kÿoßúV”ô|ÿð³þNÆ¿öýÿ¥i_@WÏÿ ?äá|kÿoßúV”ôQ@>~Ó0B·¸X£º\£ÈneSPORf vÜ}kè:ùÿöšÿ™[þÞÿö}@?þÓ_ó+Ûßþѯ +çÿÚkþeoû{ÿÚ5ôU{ûë}3N¹¿¼“˵µ‰æ™ö“µÇ“€Jáÿávü<ÿ¡‡ÿ$®?øÝzçÿð»~ÐÃÿ’Wünø]¿?èaÿÉ+þ7@Eyÿü.߇Ÿô0ÿä•Çÿ®ÃDÖôïèðjÚMÇÚ,gÝå˱“vÖ*x`äÈ  þ*ºÖ,|/¨Þhð\jpDe†ÑÝdÚrÊ>bÅC«b¼_þŸÅÿú¿òwÿÅ×ÐPƒØüGøɨ^Gk`I83é÷ À'—yŽÏ=:ՏüWñŽ¯ñ kZ,bY#l“i±)…bX¹Se9É$—ùIùP÷Ÿüm‚|ut—¦©p†+ÉšC€\!Ür0p#p®Oàƒ±|/'ˆo!Û}ªÿ©Þ¸híÁùq•o9n ¢3@ÁEPÏ<â˜| ©x‹ÅÞ0ŸRºƒÊuÓàm’C*DÜfèŠrÝO;½à—ü’ þÞ?ô¢J>6ÿÉ!×íßÿJ#£à—ü’ þÞ?ô¢Jô (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ óÿ¿òHußûwÿ҈ëÐ+çÿxçÆ1ð…öÿ Ç\³ûW—ûý“I·lŠÿwÉÎÜuï@ðKþI…ÿoúQ%z|ÿàŸøÃÁÞ±Ð?áX뗟eó?²h÷n‘Ÿîù'ݎ½«Û¡ñÀ÷‘i>»•ïZin´Ë¦bª6˜ôÏÌrOêÿáiü_ÿ¡ ÿ(÷ü]}_?ü6ÿAý£<]çú<Óý³ÉŽo‘¤Ý:H»A딆:¯=+Ø<ªë߄,u~ÃìœÞgmä¼[1#*ü®K ¨SÏ­pÿþë:†¹gã/Mäx†×jðÕ¦a`D€Í*¦Ó<¸¤nIÉ#¦Nà Ü¢Š(Ïþ&ü2ÿ…ý—ÿìÿ°y¿òíæïß³ýµÆ6{õ¯@¨ç™m­åÄ…#Bì#ˆ<*‚XûIí^'âònÒ|i=ýýÆ"†ñ¢!UÛnß."7HÜ°Ãù€á‡‘ñy¿á0øÍáï $³Ík•ÄPGóÂÒ¶éX¼â!g•ÿz¾‡¯#øCðÆû÷ž#ñLqɯ\¹ò„çI$ïrà]óÔdßæ`=r€ çÿáðý šþ ¡ÿâk ¢€9ÿøA<ÿB¦‡ÿ‚èøš?áðý šþ ¡ÿâk ¢€9ÿøA<ÿB¦‡ÿ‚èøšØ±°³Ó,ã³°´‚ÒÖ<ì†Äh¹$œ(àd’±EÇøëâF…à;3öé¼íJHŒ–Öç|¼àdà„\ÿþë`1¯7ø…ão‰3xÒûÁžÓ¼ÛZ ¬¢všHÞdl*.æåÀ]Œ1¿‚N‡~[ÛÊ5¿Éý©©Ï‰šÒF,‘J[q26|njçååßhÐ~ø§ã±yâ_\O§ZI-\ÂFì®c#ËÜœüÙ8%‹2êx_â6µð·TOxæÖIlàu[{äbÆ@eã2Ő1є$A×/ã¯é~<Ðͅøò®#ËZÝ¢åíÜ÷ªp2½ñ؀@IðÝ[Åqo,sA*ŽHØ2º‘AG9©+Åþ h>9ðö±©èúì  ir´ nH—|Ϋ 10Ã"íesž>r6î,WÚ(Ïþ6ÿÉ!×íßÿJ#£à—ü’ þÞ?ô¢JóÿxçÆ1ð…öÿ Ç\³ûW—ûý“I·lŠÿwÉÎÜuïG‚|sãxBÇ@ÿ…c®^}—ÌýþɣݺF»äœcv:ö  (¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢£3· nÒÆ'tgHË Ìª@bReöÜ=hJ(¢€ (¢€ (¢€ (¢€ ÏÖôM;Äz<úN­oö‹öù‘odݵƒT‚9ðkBŠ¯cag¦YÇgai¥¬yÙ ˆÑrI8QÀÉ$þ5bŠ(¢Š(¬}+º‰¨Þê:v™7×ÒÉ5ÅÎ Hìä3 Ç$) £ žÕ±EQQÃ<7(^ c•²F +aÇpÀ‚;EIEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP?Š¼CoáO ê:åÒïŽÒ"á2G˜äá nb£8ã9#øËⶕgf5ɠУ¿ß[i¬¡Ï–Q‹ù™—;ÀáÆvœ€Íô½|ÿûMÌ­ÿoûF€>€¬ê¦—áË»­NþÑÔÆÈí­‰ÀgwT¿Ù]ۏ#…<Ž£bŠñ¸>üKñ¼W¾ ø‰w¦^ -¬…UÆ~o-£]à–º˜ŒcÛÆ~/øSãmƗòj^Ï“©II!æù•³¸Ì»Õ·•åà©o|¯Ÿ>.OÄ?‰¾ð^,rKjò%ÍÊ0a9Aƒ€LiârI^Å}EP^oâŸ|E¹ñއáA¬;#}bù¾Cæ"ñƒ€vÙÀ“ Èì}"Šñ€Þ*×|Wyâ{­sSžöEû.Àä"Pv Â®vŒà ã'šöŠùÿöeÿ™§þÝ?öµ}@Q@|Iã{f'ÁþPsn·2^Ý9XÜÊc(7ð­÷ó‚~^ã‡øUâoê¿5­+Ě̗¯§YOnÑDŽƒ|s¢î¡A<·ÌFpqí^é_?ü,ÿ“…ñ¯ý¿éZPÐâzÝÎ¥ðâö¨º’ëÂ^#½y/c•XýŽf9gAÁ$Ë*• • ^Ù\?Åíûoá~µ¤kh…äo0ûžQÅN uïc @Åçÿµ¿í¿…ú^û:âÇu”¿&ݛȽ8ŒÇÈϹÎkÐ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(çÿŠòp¾ ÿ·ý+zú¼oö„Ño¦ðþ“âK ä‰ô[‚\Æv² 6A]`~|ñŠõMY³ñ‡e«Ø>û[¸–TÉ®z«`‚3ÁP…|ÿûMÌ­ÿoûF½Ã[ÖôïhóêÚµÇÙì`ÛæK±Ÿnæ 8PIäÀ¯œ>:xÛþ1þÁþÀÔ>Ùö_´yß¹’=»¼½¿}FsµºzPÓôW¢|Rðoˆõˆ4'YûEôû¼¸¾Ë2nÚ¥,€<šËøÕâ‹ï |>’m6I!»½¸K4¸ö´!ƒ30àóµ ñ‚7dŠÏñόõ­oT“Á^ŽIµâGTLˆ´ðs•ó¾²zŒ ¿Ýé<ðïKðWÚn£š}CW¼æïQ»;¤œûª[-Œ’N2[Aðß⧁üáx¬³5Y5)y}u´CÍ|œ ™sµAÚ:w8uÿðÑÞÿ n¹ÿ~!ÿã´ìQ^_£|`þ×ø¡'‚ÿ°¼­—w6ßlû^ìù!Îí›]7qžôêQ\~·ñKÁ¾Ö'Òumgì÷Ðmó"û,Ï·r†ªx ðhËÿf_ùšíÓÿkWÐóÀ¿xwÁßÛßÛú‡ØþÕö'÷2I»o™»î)Æ7/_Zú?DÖôïèðjÚMÇÚ,gÝå˱“vÖ*x`äÈ  +ËõŸŒÙ#ð_ö›¾îÚÛíŸkۏ8!ݳa鿦îqÚ½B€ ùÿágüœ/íûÿJÒ½cğ<+áF; sUû%ԑ •>Ï,™BH(¤uSùW„xÆÞÑ>2x£_Ôu'L¾û_Ùçòdmûî×å XeA<@O×?ã¿ù'ž%ÿ°U×þŠj±á¿èÞ.Ó¤¿Ðï>×k¦)ãÀ pFq|CðÞêÈ\Éæ¨ëoÄáX¨`ÒÈ;6‚§ûà eþÎ?òO5û Éÿ¢¢¯`®_áׇ®<+ðÿGÑï7PÄ^aò;³HÉÁ í,W óŒ÷®¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€#žn­å·¸Š9 • IŠ]HÁ#ŒW›ü?ð׈ü â«Ï µÄ—Þ’Ýî´û‰Z 7¨18RC“Œa±¹pwŠôÊ(½õ…ž§g%ý¤v²c|3Æ$FÁeOøV?ü žÿ¡SCÿÁt?üMtP=„ü7¦^Gyaáý*Òê<ìš (ãuÈ á€ÈÈ$~5sRÒtÝfÝmõM>ÒúpëÔ+*†ÁÁ#>æ®Q@ÿü žÿ¡SCÿÁt?üMð‚x?þ…MÿÐÿñ5ÐQ@eÃá­ÛT:¤&› ]œÝ¥ª,¥›;Žð3“““žrkRŠ+ûÂ~Ôï$¼¿ðþ•wu&7Í=”r;`2Ädà? Ø¢€9ÿøA<ÿB¦‡ÿ‚èøšØ±°³Ó,ã³°´‚ÒÖ<ì†Äh¹$œ(àd’±EeÍá­çT¤ú&›. \]½ª4¡—Nò3‘ƒž0+RŠ(/Rðփ¬Ü-Æ©¢i·ÓªY.­RV ’p q’N=ÍSÿ„Áÿô*hø.‡ÿ‰®‚Š§¦é:nnÖú^Ÿic9vŽÖ‰K`   àŸa^o§x3ZñoÄkx¶I#Ó´‹Ù#Ñ4õÊ#“ 3 äT7«7ªQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ÿÙPK÷ÂÇ]ür÷rPK»~@OEBPS/dcommon/feedbck2.gif ôþGIF89aó1ÿÿÿ÷÷÷ïï÷ÞçïÎÖçµÆ֔­½k„¥RsŒBc„)Jk9Z1R1,@ÀÈI«­E1ӘÀ4Fqƒ²ß°$Èa²AXBqh@²Ü§I!¡ù$‚„gp-f¥ÓG*œ eñädµ‡•`ÚŒ†/KRht4ˆ€6ÛÉÆ•04buQAq:22ˆZŠ‹ŒŒJO,XfVjbH# & -, ¡kJ>kpG4"$¦ r| —±¾>SÆ4Ђ"S 1Ñ%ÉR:ȝ“ßÛ 8;PK³PzØ PK»~@OEBPS/dcommon/rightnav.gif&ÙþGIF89aó1ÿÿÿÿ÷ÿïçÞç÷ÿÞç÷ÎÖÖ½Þç­½Þ­µÆ”Œ½Œ¥µk„œZ„œZk{Bc{,@ÛÈ )ç l)-ˆ ³âÐ$ÓæCˆÂҠҀ ³è! œD1Á †#Ñ:šaS( »…còé4B0 AßÎC8ù Ö°9!%M¢‘Lj Z * ctypJBa H t>#SbœŠ(clhUŽ<¦?i9¯[› 8´µ1 Lªpƒµ%IHB »Æ‘¹ &[‘57½Ó1e?DXŒ ]5K¬Ȓh ælSå H6+Ò¦ü©œ;PK‘+&PK»~@OEBPS/dcommon/doccd_epub.jsM ²õ/* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PK»~@OEBPS/dcommon/mix.gifk”ýGIF89aÕÿÿÿ÷÷÷­­­ZZZBBBJJJ”””ÞÞÞkkkïïï999µµµsss„„„!!!111ccc¥¥¥œœœÖÖÖ½½½{{{RRR)))çç猌ŒÆÆÆ­¥­{s{ÎÎÎsks!ù,@ÿ@€pH,ÆB$ 8 ‚t:Õ<8 ¢’*'²ˆÉntPP D„‡üQ@rI½ ‰ ÇBJLNPT‡VE‚MOQ‡UWfj^! š›œš hh€§¨G­ ©H«­ „·· kC³®¸Ãº¼£k_aÃÍŠǤÉ^ ÚÛÜ»ÈhÊ`B è¿ èBeÈH÷õ mmâÅˆê…  ˜#F¬` I„ ì†l°p £ÇŽ,ÀpÄ B… J\Y!TŠ\Ì(dãǏ!GŠªÀdˆ… ®œèR²53Ù¼ Rä;iʲ)¸Gµê=@-xn.4œ °¬Y… BuÍàUÁ…(*€BLÑÒ0Pñ«¹X v`[D! |ø À” >è‚!/’;xPð` õò(˜J€j"˜M°6‘ ;PKý枰pkPK»~@OEBPS/dcommon/larrow.gifÜ#þGIF87aÕÿÿÿŒŒŒ¥¥¥µµµ½½½ÆÆÆÎÎÎÞÞÞçççïïï÷÷÷ççïïï÷÷÷ÿÆÆÎÎÎÖÖÖÞÞÞçµµ½¥¥­­­µ½½ÆŒŒ”””œœœ¥„„Œçç÷ÎÎÞÞÞïÆÆÖµµÆ½½Î{{ŒµµÖssŒ­­ÖœœÆ””ÆZZ„{{µ{{½ZZŒssµZZ”cc­JJ„JJŒRRœBB„JJ”JJ¥99œ11Œ11”))Œ!!„Œ„{„,ÿ@€pH,È¤rÉl:ŸÐ¨tÚÔp¨ÅÆH–c`  §Ó©©b[.ç64*1$#¶ƒ¡"%+ ( °²´ E'ªãî ±³µØýþÿnû7Ȇ(¤,„ò¬Ò…(Là@‘(Q$\x ‘¡Æ8=äãµî6 '¼× ƒ9túJ&"€[Epljtûú ˆp#€Ñ£HíÇbÁ€ ¢:…õ鋳få Æ F`A =l|˜€‚;ž&9lD¢¿P2nÀÙñcH ´R `q‘‘„›tÈíp!dȐYH›+?¢è“$¿Ê4mBAó9 ” iÓ@Ê@† ¥É]@ˆú³êƒ¤F¼xAD*^Å´„†#Ý,¬(»ε ñà $H°ž}»„F—‹€àè.óåxfª,Bð¸ïÞD ÂZóë÷;PK1ý„FAPK»~@OEBPS/dcommon/conticon.gif^¡üGIF87aæÿÿÿ!!!)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷¥œœZRRÞÞÖççÞ½½µ­­¥””Œ{{ssskkkcccZ991ccRZZBBJJZck)19ZcsBJZ19J!k„Æ{„œk„Î)Z1¥RZs1!B¥)!JÎ9µ1µ{„¥k{µ)J½!Bµ!B½9­1¥1­)¥k{½csµ!1s!9œ)s!9¥!BÆ!k)„k1c!)Z!R{9BJÖÖÞcckZZcBBJ„„”99B119„„œ{{”!!)BBR„„¥BBZ!))999R99Z!!999c1!9!)19B1)!B9R,ÿ€‚ƒ„…†‡ˆ‰Š‹Œ‹ ŽŠ oua”…\h2SYPaŽ aowwxY¦i¬‰ 9SwyyxxyYSd ¼‰$'^qÅYȵYÊvh Ïч,/?g{ÉÚÛÆÞàн„.J5fe{´Ú¶ÉyîáñY#%’/}ôЂe–,Zî|“pAÜ  `žô’äK™YxÚâ†çÎï,˜Çĉ‘&@¾¨iëX9|`”pà ]lèR„1khٜ'E‰Š ô„6¨Ã…B‡Ü0J£;tÜ X bÕ ¤RÈP(—*MÄ!2cL˜hPŒ C <€0Ⴁ à ñ¡Ç $4à!B 6lHCâ%<¢À1‚e H ‚ ˆ4p±"ä ›¶L`PÀÀ!/,m*1Fˆ`€‚š#D0¡ÛD^ìð!A™…O—@¡‚.‹.(` `ÍÔË_؅¾QW„K­>_Ã*O÷Y0äé¢J@Žp ÁÌw '†tÀÁƒVhá…;PKpµ*¤c^PK»~@OEBPS/dcommon/feedback.gifÈ7ùGIF89a÷ÿÿý'%(h¨pêòÚýÿÓ|…þüÿˆ¹˜fdx?AN¹¸ÊÏÑÿÖÿâ5:”dfeDGHÄɾüüúTdQÿÿûõþÿc`gÿü÷*6D‹C\?ýõþ½½¼þÿÿãäâüÿÿËÿؘ™¨êìð||{ª·ª;=E6JUÝõՄ…ƒÿøþãøÿëëéÿúÿ²¿­ìþôíòõf†eÿþÿÊÊÃèýþ‘ŒúùþôòíëñíA=<ÆÆÄCO¯ ýûöýÿò­²½ÚÛÖùùõÿÿúÿÿÿ¥¥¤úýú+*F¢£œþÿøÂÃÍlon213þýùÝÝÚúûùúÿÿøÿÿ;<=õõòòÿþþþüõþ햖–ìüåòìÿùòþÔÔÒËËɬ«ªøÿýûñòóüâÿûùuuwùÿêüüÿüÿøŽŽ[\\¹»¶íÿøø÷ÿññþïííùþò‘‘’ÿõúôÿùüúÿíÿÿöúéñÿììóæððøñöùñòïrm}ãÿñþþþûÿýóÿ÷ÿûü`^bþþÿ”•îöùñöÿîùÿöõúéùÿñþêþÿîÒÚÍûüö7J¦‹Œ‡ñôò²§®þÿúúÿæþÿê÷öüðîòýüø‰‰Šöÿðãðøüþýÿüýúõïòùêòùìÿþù©ª¢±²±øüÿt†lBT_óþøÍÌÜòúþïðÿ‹ŠœÎÍÒC9QÁÏÒÀÅۏ‹õû÷ðãÿtq„““”Xœa††ˆ,.kùìÿ1$+/7:çïòÀ½aŒp·±Óxxur|{ûýÿéëøu „ùûíWVRGUœAC–JL‰Ž‰âçÿèöÿóùÉéñÿYNTýýû3-O÷úñ'!ööôôóñÉ×ÚóóõÔÊÒôðû…xæþàÞùêçèål_”…¿ÞäÖîþçù÷ø×ØÖÿóøÀ¶¾ýðÿyk¨áâÝüÿûÿþü! õùü=eCVLdçòôE^|ýøòGTBûýüJHUTSY&- /!^Ê¿ÅËÓÈ/7^V[q˜“<;7ßøÿ ’ÏçÝ士®Š’•öþé@M@——˜Þéë!ù,@ÿ—‰a  ˆ‚ ðèƒà”>@,4`±H.|ø°`a© ‡(Q²Ò ˜9:Àó&ž[|ځ,ž¨4¤pà Y„&ù°BD†˜b,à×!˜‘„2@€,ßÜÑ $wPA'ÜܠǃÆ@ÅâˆãC¼ìÂO~/dÓÃ.¤`ÁÂIì Áò —Üà@ðš8AÁr‹ÚH¬xœÁ€9HÀˆ75 ñÜj ñÎ’LÔ£ƒ 3ÄB/`ƒÍ ŸàP¢üƒÎ#†¬qD*Ìs 3ƒA:3,H70ðPÃ,Œ”RŠ¨Ø”@ ƒ¼p! (…F oÔ¥ D;‚"Ð0„ ,â6QüB´R‰É„HhŠI@ÕªÐ@Vì°ÖDLÀCká8ð@NŒBB¹L2&pCl±A?DAk­%³„$`I2 ¹Ø#ÃþQ…+l¡7 "=¢˜µÄõ›€¥&d‘ƒLÚ&P‡R¯è¢SL±IÙP)PɼirËqМ'N8—œ[¥_}w;PKë-´ÅÍÈPK»~@OEBPS/dcommon/oracle-small.JPGð8ÇÿØÿàJFIF``ÿáExifII*ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ'7"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?÷ú(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (ÅQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE†–šzгE7Ԃ̗4¹¨D£¦àzt÷¤ó×ÔSԙ¾í“9ZQҀEPEPEPEPEPEPEPM=iԍÔP æªÜÞGi–i –c€*yF 1À׆ü@ñ\š¶¥&™o!QY0Ö0Ï_örýlgV¢¦µ;°)âêòDØñÅGÞðhÑÁÀžC…üq7~.ñã.¯p¾¢&1còª:uÖ«{­œfI¤È¨¹>˜ÿõf½JøL¦$}BòBøû±íP?JàR­WcêÝ<^¹j+³Ï‡ˆ5œÈb÷ÿ[ühþßÖ¿è-ÿ þ5êÿð¨ô_ùø¹ÿ¿Ÿýj?áPèßóÚãþûáOêõ»™ÿke¿ÉøQý¿­Ð^ÿÿühþÞÖ¿è1¨àLŸã^¯ÿ ‡Hÿž·÷Øÿ ?áQi?óÚçþþð§õz½ÉþÕË?ó+_x†É”Ū\°þ썽Oç“]χ>)îxíµxÂùVâ/™sî)º¯ÂeŠ6—MºI¹7*ߊàþµæú……Þ›v֗±2J,;†~ðÍEêÒÜÒ4°Œyi«3é«[¸n I¡`Ñ°Èe9â³ü@ï‹zñ»©X©F*W ê+Éþø¶]7Q‡J»µ¬ä$$ÿº=•¹Çêþ&`Þ¿aÐÛ¾?ï“]±­ÏNçÌ×ÁË ‰T䏟½¬¿'XÔð)ÿƔkú°ê÷üÓÓÿfó€:jô¿ |>ÓõÝÖþá®äNBËÇÞúW›z“´Yöx˜á0t!*‘Üáÿ·õ¯ú _ÿàKðkô¿ÿÀ–ÿõoøTZ?üõŸþûáKÿ Gÿž³ÿßcü+«UîyßÚ¹gòNuíhÿÌ^ÿÿüiSÄÔo¹5{ì¯\ܹý3·ô¯Y´oùísÿ}ð¨.>if ¹¹FŒ¶qøRö5»”³\µéÉø®ñ/TÓ®#]H‹«SÃ0âD¾†½‡KÕíu{(îí$ó"‘2¦¾xÖ´{S’ÆçBJÈ8Þ=}«­øY­=¾«.”ì|©Tºsц2çúUЫ%.Inaše”gKëoÏ¥¦ƒòÐ zÈ ÝŽ3Ö¹xœxwM&2êS²%'©®’òê;+I'™Â,k¸“ØWÎþ&×åñ·-Ó"_Ý¿Ý_ñÿ æÄVöq±ìäøŠª›^êÜ«6½«Ïpf—T¹2RV ŸAšõ‡^6›RKÔeÝtƒtoýñ^[“{w¥\jPÆZÞ¼@àúãéÞ¢´»ŸN¼†îÛ4/½XNó#ë\4êÊ2¼©Æåøjô\(¯z'ÔjÜ ÷ì×=á~-IŠò#É:çî·q[à’¾õëEÝh|X:sp–è* «¸­bifpˆ£$“ŒTÎÛspZñˆž-}NúM*ÒB-bb&*xŽ ÖUªr#¯‚ž*¯$M|QW·ÑãY ñç»~½p×~-ñ Ùf—T¹Eÿ¦DÇü«6ÃOºÕ.ÒÒÎ#$ómÃïì+Ñt„ªð$ºË™Hå"Gæk†õª=«t°9r娮ÎûYó¿ÿÀ†ÿ?·õ¯ú ßÿàCz¸øE£Ï[ûì…/ü*-þ{Üÿßcü*¾­[¹ÚÙwò~“ÿoë_ôÔ?ð%ÿƔxƒZç:Åÿ×í/þ5êß𨴟ùíqÿ}ð§/Â]2—’å‚ö2p qÃÕîD³\·—H"¿ÃK]ZâÚMKR¾½™&\CÓ3ŒzàÖĽ[P´ñJÅm¨]A·S²)Iaœ^Ãkm¢Á ñŠMŸ@ÿdÿК¶¬Ü)fT¡‰Æê´ì[øi¬jW*hnu »ˆþÌͲi™Æw/bkÛExG£Ÿ@ÿf?ÚZ÷u§…“”.ÌsÊ0¥Š´‰(¢Šê<`£µ‡¥0‘Ö¹oxÇOðäÌûæaòD¿xŸ\zTþ-ñ^ѧ¼”‚ʧË_ï1è+çýCPºÕ/§½»´®p[w 9à~UË^²‚å[žÖU•<[çŸÂtú¯Ä½wPv[yÎzD1ìÀÈW='‰u¹$ÞÚÅÞOe¹aýk[Ã^ Ô|G‰÷k2x¯ÎçØvÝÛü#Ó2æí›ÔÈ?¹TkÏSݕ|· îrݞ[ý¿­ÐVÿÿüi·µŸú _ÿàKzÇü*þ{\ÿßcü(ÿ…C¢ÿÏkŸûì…_°«Üí|»ù?Éÿ·uú jøßãVô›ßêڔ6º¶¡¾f ‘tù?3õú©éßð¨ôn¾mÎßáZþð6™áéf¸´ó%šQò¶üAížj¡J¢–¬åÅf¸9Rq§ _j÷7Z†Õ-äy.pG$îXïb]‰ê0'ô®)¯[_kµ;ï¶$Ì­?›&å"0âFOõew7Ý zõ-cI‹XÒ岛;$Ïu=çƒ\aðnµ$û úzmrâý‚à¡IÇLíuÇ uٞ% ”Ô_1×xcU“WÐìï%dtÀxÜ88öÈ5»Yš^™›§Ágn˜Ž¹î;þ}Ó­)´å ´QE…Q@Q@Q@Q@Q@Q@!¥¤4Îx¿Pm3Ãw×*û]b`¤ôÜFë_931˜’[“ןëÇä+Ýþ(> »ÛÏÍÇÒE¯ lÆyÇøÿ€¯;ù¤‘ö<;MF„ê-Ïqøsá¸tÝ+·Œ}¦áDŽHäÑ ï@õëYºKÆÚlL„mؤcéÅiµÝN<±Ðù|]IU­)Lwà(ü8t¥«9FþS©(=¹¯>ø“áØoôg½Ž<\Z~ôêÀu_¦+ÐXšÌÖÚ1¥Ýy lòÎséŽj'e©Õƒ«*U¢âúŸ3`C!”ƒ¹N9þ•ïQ_WáëܱËhKc³9¯ôü3^Çáuað¡ÁÏú©À÷Ûò¯>†ŽHúìê ƕG½Ñãk÷=8¯ ~ÿe†¸ô#_?{ǀÚeð-«[¨2ˆÙ”7;=&ÅÄKýž™Û挑ü5äzÄÍsLÔd±¼Òã†xù(e8#ûÀã‘ú{Õ1ñwS+ΝÿÛVÿâk²XŠqÜùÚ9>&´yஏhô¤$zq^0~/j@ÿÈ:/ûú«ÝüVÕnce†Ò$$uÉoéP±p}M–CŒ¾¨Å{ˆ$×-akH±±“Ž@ÏÉ«À1³øãO !“8÷R9üsùÖÕÜ××5Ô¦YåmÌÄóϧ·'ó¯OøUṡó5«¸¶T,!¿»Ôšæ‡ï+s#è1VÁeÞÊoÞ=[ø)€¥ôõ®gÆ>#ÃÚ<· s)ÊƽُA^”䠮ω£FUj(Ç©Ã|Nñ3Jë¡Ú·睁ìÝúõϱµçšuŒÚ–¡•¾ZYG§äOÐTsÜI<òÜÏ&édrÌýaøv?Aé^©ðÏÃ_f´þ×»B$”,áO_¯_øå¯ßÔ¿Cíæã–`­´™ÙiµÓtôá´{6>GÞÈä׈ø§Cë²Û~Ï&$„ÕyÀúŽ‡ØŽõôv1Àµqþ9ðÚëÚS¤c1fH[ѽý«²µá¢>,ÌgGå'¤0ð'‰Ÿ@ÖVßw,BO Ç[ó#>Õﱺº‰¤g5ò»«ÆΒFVD%Yr:åO×5ìŸ ¼Tu+Oì멃]ی‚Ž3ÐÖ8Z¿ež†}€R¶&šÑ_Šµ¥xzòìc1DXg¹¯›Ø³;<§,_,¼{ŸÆ½ãâY'Á¥AÎS#¾Œþ‚¼ä’o̍F.MÉ#~„cBuèö¿‡ŠÃEŽöx—í7ÈÌGݐ+ЁŽéYš)´«(†5ÚqŠÕÏ»©+GCåñ•¥V´œ€; qF+C”LQè)qEC&6Ÿz𿊘ÿ„Äz}•?ô&¯w=+Áþ)ÿÈâ?ëÝ?ô&®\gÀ{¼;þö…øV?â²?õîÿú×»­xGœÿÂdëÙ¿š×¼-Nøcâ'þÖýú)3K]‡‚ÒN)iLæ€÷ÊÿñTÂãÓ¿çÂëÿÿ⫬C¹ådbÿ‘žŸš7Q^aÿ NÿŸ ¿üsÿŠ üdÓÿçÂïÿÿâ¨úÅ>áý‘‹þFz[0S“^sñ'ÄÑZi ¦Á 77D¡²ó“þ}kWø­us ÅabÐî~~Hú(Ïó¯>ººžöåî.fif“9,~‡ñ…|Jk–;ž®Y’N3ö•ôHŽ8ÞY(—t²6ÅQ݉ÀÇækÞ͇ö_÷²ÎZ+2…‡²õ®á߄&ºº‡[»‹¯Í Ôãü+ÔT r§üöï^­è—ºù¶º9æ7ãÔ~cóµô¾ÜŽ=ë[ðýž»fÖ×1RrB§ÔǓÏ^k«EMhxYVm<”[џ6ÓÐúñü«§Ò| ªêöñÏkqbѱÎ|Æÿ ‹Å½ðÅÙYA{G8Šp?Ÿ§ÿ\UMÄ7þ¼Z6èØüð“ò‘ëõ¯6ã ÚgÙâ1U1i…g£øáUµ¤«6«9» ݈¾„u5éPÀÇåƪª:V‡V¼êZµîC=Â[@ҹ¨$±ö¯ŸükâSâm¤É³€”‹ÐžŒß\­vßç“ý“‹þFz~i3^aÿ ‡OÿŸ¯üsÿŠ¥ÿ…ŧυ×þ9ÿÅQõŠ}ÆòŒ_ò3Ó ö¯ø¥ÏŒOý{/þ„Õßøw⿈µgoet«39 „‰æ¼÷âvO‹2ÿeíþÓ…a‰’•;£ÐÈèΎ7–¢³$øUÿ#‰?ôìßÍkÝÁ¯›¼+­E k&úd‘—ËØp¥zübÓ±°Þß+ÿÅTa«B0³gN{€¯[ÍN7G¨þŒ×™Ââ°ÿ }ßä¿üU7þ&Ÿÿ@û¿É?øªêúÅ>çý‘ŒþFz~E!až¢¼Ïþÿ@û¯üsÿŠ¨‡Æ ?'67XxOþ*—Ö!Ü?²qi]Á™ô֏T¶ÔQNÉ@…ØtI+üÏå\^…¨¦•«Ás8l0³)ù2kÖ!Ôì¾!iW–‚Æâ8•F$(ùé‚yO×Ö¼TÒ.´ké,/#1:}Þ8uîT÷˾+Žº÷ùÖÇÒå5ý¥„©£=ÿO¶Ò/`I¢†W GÖ¯ÿbéÿ.ÿß¼ÃÞ-Õ<= HOmÇú;œ~×soñ~ÛÊh°¸Wî«Ï5´+ÒkSÉÅå8Ês÷.ÑèŸØzwüùEÿ| ?±4ïùô‹þøÁÿÂáÓ¿èwù/ÿKÿ ‹NÿŸ ¿Éøª×ÚÒ9?³ñÿÊÎëûÀøô‹þøj(#†0‘ UT` WŒzw}:ïò_þ*“þš9m>󑓀¼ãÔF¥?²EL¿Ëz‘v=8qÅ:±´=WûgJ‚õ`’˜nD“Ær½ íZõе<Ö¹]˜ú(¢Q@Q@Q@Q@Q@Q@Q@Q@ Á¨'·I£d‘C«0EYÁ¤ÛJ×VcM§ty_ˆ~Áu+ÜéSw-¹£a¹Oû§¨üÿ ân<â[YJÿgù¸ÿ–‘L¥#†¯¢6i g·5„ðЖDZ‡Ï14cʝÑóü!Þ!ÿ \ßøïøÒÿÂâ/úMÿŽÿ}å/ £Ê_AYýR_úÉ_²>oÿ„CÄ?ô Ÿó_ñ¥ñ?ä7æ¿ã_Gù#ÐRÇ÷ER€ßW쏞¬üâK™B”»}¸ÇJÖxGSâkǕ»A pƱơP m¨ëÖÒ]hw°B7Èð°Uõ$ZÁqŒ M£9ïÏ5«Šµ"3qŸ1óiðoˆAÇöTߚÿ{g¬.tï ÙÁuŽu2£’k¤ò“=;h#ƒYBŠƒº= fgS ô:TdLԃ¥!­Ï4ÌÔ4ûmFÖK{¨–Hœr¤dŸå^7âo‡z–›|­¦B÷V®r¸<¡÷Å{®)6AXÕ££»˜V»Áè|õ¦è>*Ó/’æÊÆh¥S܏›ëÍz͆·ªO M=Εq ì(sÊ|Æþsßÿ׊êLKÆQIÍ :9ÏNŸJ)ÑP®Å+!Ê£oAF>”ê+ ò=@ƒíIŠ}¬"ÛÇÁxóÂ/®Ø}¢ÍÛ å1Áaœ•ã·õ× c¹4§eÊmC:àõ>p_xŒWK™X`© >R3Ï_SŸÂ½“ÂæúûèšÅ³Çp™·ãç¾3Þº¡uÚ3N õüÍe §±ÛŒÌêbmͺ<ÃÄ_ mnÝ®ô¹¬Çø1òÃøO¸Åp÷?üGm)Qb%NσüÈ5ô8¼þ†5'%AúŠš˜hÏs\6yˆ ¬Ñówü!¾"Ïüƒ&ÿÇƗþßÿÐ._üwüké)}åG’¾‚£êP;¿ÖZý‘óü!Þ#ÿ \¿šÿÁÞ"< *oÍƾò—û£ò£Ë\ýÀ)}N>"®Õ¬Ž/À~]LógŒ}ªpBG ‹X?<¨êzŒZ–—#xº69äø¯SÚ=6ý) jz€xº=”y9O&ž>¬+ûe¹ó‡ü!Þ!?ó —ðÚ?­ð†ø‡þs~kþ5ô€‰GðÊ)º?*çú”cýeÄ7ÿÂâúOúð†x‡þ“~kþ5ô‡”¾‹ùQå/ ü¨úŒýe¯Ù7ÿÂâ/úÍù¯øԐø#Ä3OgN•C0]Å× ;“_FùiýÑùRl†>œQ.g>!¯%k#ú:•œK¸‘Én¤þ'Ÿ­&½á}?ÄÞUÜ@‘÷\pџP¥tp)vÿõë©Â<¼§‰íê{_i}OÕ¾êÖ²3XIÔYÈI×üxÃ~b¹ù<âDáô¹ï¥?È×ÑÁì(Ø=_JÂXH=bbi«=O›ÿáñý¦ü×ühÿ„?Ä_ô ›ÿÿúCÉ_îŠO)}—Ôàoþ²W쏜?á ñý%ÿÇƵ¼;à-RïY‹ûFÌÃiù`w‘Û­{ϖ¿ÜZM€túQ$"îc_ˆ+ԃËx1*0ô•b;ԕ‘àÉÝ݋ESQEQEQEQEQEQEQEQEQEœQšZ(1F)h Å¥¢€Š1K@XLRÑE&9£´P (¢€b–ŠfÐ{RÓ¨ Å&)ÔPEPEPbŽÔ´PGáKŠZ(›iإŠť¢€b–Šn(ÀÅ:ŠAä%´S0(Å- Å&)ÔP+ ڎԴP11F)h Å&:ŠLRm§Q@¬¥Q@Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙPKjÓeõ8ð8PK»~@OEBPS/dcommon/cpyr.htm1Îí Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2012, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in prerelease status:

This documentation is in prerelease status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PKºNê61PK»~@OEBPS/dcommon/contbig.gifŸ`úGIF87a÷ÿÿÿ!!!111999BBBJJJRRRccckkksss{{{„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷skk„{{ZRRRJJƽµ„{sµ­¥ZRJRJB91)kcZB9)Œ„sskZRJ1÷÷ïÿÿ÷ÎÎÆÖÖÎÞÞÖççÞ½½µÆƽ””Œœœ”{{ssskkkcÆƵZZRµµ¥ccZRRJJJBŒŒ{BB9991ssckkZccR))!RRB!!JJ1))99!11”œ”œ¥œ„Œ„”œœœ¥¥„ŒŒ„Œœ­µÆŒ”¥¥­Æ)œ¥Æ1RÎ)k­µÖ”œ½œ¥Î)s1”œÆRZ„JR{BJs9RÎ1J½!1„1JÆ1JÎ9k{ÖcsÎZkÖ!1ŒJ¥­ç!)cBRÎ9JÎ1B½)9¥1BÆ!cRs{Î!)s!){1BÎ!k!s!{ksÎksÖckÎckÞZcÎ9B­)1œ!)„!)ŒBJÎ9BÎ19µ19έ­µœœ¥””¥­­ÆŒŒ¥!!)JJcZZ{!!!1RR{JJsBBkJJ{!!9BB{1!!J9)!!Z!!c1!!kR!!s9Z!BckJs)19!!c!!ZRZ,ÿH° Áƒ r àà†Œ„rxÁ¡B(Khˆ±‰" DÕªuIÇCŽiи @±S« zõ$G”3èT«T°ø°äʖ&7!f°ã b¸`ýDŒ 0€õá!éA  ÙkÖ,>S«òôçO¬[!ÄÁÄ\µ µ*¨¯_¬‚t Èà Eªxr%¨*_¿}Á€!#¨U #4 & Ö©Ž˜3|b]…Lš Ñ]štÌ Øb+Da&…Rõ—ô_2ƒlEÙ±Z`a´îÀC)/яm›vUkS ¾… ró(Ž–-iPE¶™ V¯v_ÿàð{z G…ÌLât\2÷Æs•!F A…#Ä©ù葡JY ¡ r|‘AÆ‚ôAÇ,©hB€}øé÷…àqˆ|B`d€u }—00Á”Ì(„䡆‘<‡–pb‡,¦‘ÑG+oÔB Cü0ÅpÂ/Œ´á…x$…ŸÈ– ]Ð7€Ôã ƒ@2HF‚‡cˆ‘ )µ¼¢ @ìAD€À \0 LøÒHGö',(AŒà` `@SÐC)_®ˆ"˜¸Ä àPœH`}¼Y+ˆÒÈ_|1‡.K8„pAKMA @À?3È®æ҄$[£„JPA–ñÀ)€´¡Ç+NH I ,€@8°G0؂/‹@R T,à`pÁF8ùЃ)³à$^á$Ð DñD¼TƒDlAÃÁ@ s;PKüïü³¤ŸPK»~@OEBPS/dcommon/bp_layout.css# Üò@charset "utf-8"; /* bp_layout.css Copyright 2007, Oracle and/or its affiliates. All rights reserved. */ body { margin: 0ex; padding: 0ex; } h1 { display: none; } #FOOTER { border-top: #0d4988 solid 10px; background-color: inherit; color: #e4edf3; clear: both; } #FOOTER p { font-size: 80%; margin-top: 0em; margin-left: 1em; } #FOOTER a { background-color: inherit; color: gray; } #LEFTCOLUMN { float: left; width: 50%; } #RIGHTCOLUMN { float: right; width: 50%; clear: right; /* IE hack */ } #LEFTCOLUMN div.portlet { margin-left: 2ex; margin-right: 1ex; } #RIGHTCOLUMN div.portlet { margin-left: 1ex; margin-right: 2ex; } div.portlet { margin: 2ex 1ex; padding-left: 0.5em; padding-right: 0.5em; border: 1px #bcc solid; background-color: #f6f6ff; color: black; } div.portlet h2 { margin-top: 0.5ex; margin-bottom: 0ex; font-size: 110%; } div.portlet p { margin-top: 0ex; } div.portlet ul { list-style-type: none; padding-left: 0em; margin-left: 0em; /* IE Hack */ } div.portlet li { text-align: right; } div.portlet li cite { font-style: normal; float: left; } div.portlet li a { margin: 0px 0.2ex; padding: 0px 0.2ex; font-size: 95%; } #NAME { margin: 0em; padding: 0em; position: relative; top: 0.6ex; left: 10px; width: 80%; } #PRODUCT { font-size: 180%; } #LIBRARY { color: #0b3d73; background: inherit; font-size: 180%; font-family: serif; } #RELEASE { position: absolute; top: 28px; font-size: 80%; font-weight: bold; } #TOOLS { list-style-type: none; position: absolute; top: 1ex; right: 2em; margin: 0em; padding: 0em; background: inherit; color: black; } #TOOLS a { background: inherit; color: black; } #NAV { float: left; width: 96%; margin: 3ex 0em 0ex 0em; padding: 2ex 0em 0ex 4%; /* Avoiding horizontal scroll bars. */ list-style-type: none; background: transparent url(../gifs/nav_bg.gif) repeat-x bottom; } #NAV li { float: left; margin: 0ex 0.1em 0ex 0em; padding: 0ex 0em 0ex 0em; } #NAV li a { display: block; margin: 0em; padding: 3px 0.7em; border-top: 1px solid gray; border-right: 1px solid gray; border-bottom: none; border-left: 1px solid gray; background-color: #a6b3c8; color: #333; } #SUBNAV { float: right; width: 96%; margin: 0ex 0em 0ex 0em; padding: 0.1ex 4% 0.2ex 0em; /* Avoiding horizontal scroll bars. */ list-style-type: none; background-color: #0d4988; color: #e4edf3; } #SUBNAV li { float: right; } #SUBNAV li a { display: block; margin: 0em; padding: 0ex 0.5em; background-color: inherit; color: #e4edf3; } #SIMPLESEARCH { position: absolute; top: 5ex; right: 1em; } #CONTENT { clear: both; } #NAV a:hover, #PORTAL_1 #OVERVIEW a, #PORTAL_2 #OVERVIEW a, #PORTAL_3 #OVERVIEW a, #PORTAL_4 #ADMINISTRATION a, #PORTAL_5 #DEVELOPMENT a, #PORTAL_6 #DEVELOPMENT a, #PORTAL_7 #DEVELOPMENT a, #PORTAL_11 #INSTALLATION a, #PORTAL_15 #ADMINISTRATION a, #PORTAL_16 #ADMINISTRATION a { background-color: #0d4988; color: #e4edf3; padding-bottom: 4px; border-color: gray; } #SUBNAV a:hover, #PORTAL_2 #SEARCH a, #PORTAL_3 #BOOKS a, #PORTAL_6 #WAREHOUSING a, #PORTAL_7 #UNSTRUCTURED a, #PORTAL_15 #INTEGRATION a, #PORTAL_16 #GRID a { position: relative; top: 2px; background-color: white; color: #0a4e89; } PK3š“( # PK»~@OEBPS/dcommon/rarrow.gifÐ/þGIF87aÕÿÿÿŒŒŒ¥¥¥µµµ½½½ÆÆÆÎÎÎÞÞÞçççïïï÷÷÷ççïïï÷÷÷ÿÆÆÎÎÎÖÖÖÞÞÞçµµ½¥¥­­­µ½½ÆŒŒ”””œœœ¥„„Œçç÷ÎÎÞÞÞïÆÆÖµµÆ½½Î{{ŒµµÖssŒ­­ÖœœÆ””ÆZZ„{{µ{{½ZZŒssµZZ”cc­JJ„JJŒRRœBB„JJ”JJ¥99œ11Œ11”))Œ!!„Œ„{„,õ@€pH,È¤rÉl:ŸÐ¨ÔÉÑL“ŒœlÔ¸ •N‡CqºWEd“·Š)#ˆ¹Ýå34¡€vwwpN|0yhX!'+-‰’[ŒF '’™n5 H $/14šw3% •C .¤90" qF ™7&¹E °²"ÃÄ·ÇD mnÀе¨ªB|,cÎÜÓãä96)ÜÞìî ©I @»0¡B»ðƒW­°{ùÂᢦdN ´‹p!5"ˆD°`â0 ¨TÐÏ 0-]ʜ™$;PK£JV^ÕÐPK»~@OEBPS/dcommon/prodbig.gif öùGIF87a÷ÿÿÿ!!!)))111BBBZZZsss„„„¥¥¥­­­µµµÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷½µµ„{{ZRRcZZ!!1!ÞÖÎ91)JB9B9)ÎÎÆÖÖÎççÞkkc¥¥”JJB991sscï÷÷ÖÞÞÞççµ½½½ÆÆZcc!!{”œ¥Ö祽ÆBZc!9B!c{!)c{9œÆ{¥Z{{­œ­µc­ÎZ¥ÆBœÆ1Œµ)”Æ„µŒÆs¥„½Jk{µ{œ­Z{Œ„µÎk­ÎBsŒZ­ÖJœÆ9Œµ1Œ½)„µZ{!ŒÆ„½{µ„½Bc„½Þs­ÎRœÆs­Bc{½9ZZŒ”­½k„”¥Î甽Ök­ÖBkR„½Öç¥ÆÞ!BZ9c)JJc{!))BZŒ”œ„Œ”ks{Bc„R{¥JsœBk”9kœ)ZŒcµkÎ!!BZµ”œ¥1k­!ZœcµRœB„ZµcÆZ½Jk”Bkœ1ZŒ9c!RŒ!cµ9kZ­R¥ZµR­B”ZÆ9{99„!R1{9Œ9R{1„!1)c1J”œ­)1BÖÞ÷!BJRïï÷¥¥­ŒŒ”œœ¥„„Œkk{œœµ¥¥Æ½½çµµÞŒŒ­­­ÞkkŒ­­çµµ÷RRs{{­„„½ŒŒÎ””Þ{{½JJsssµŒŒÞBBk„„Ökkµ!!9ssÎ{{çZZ­ssçccÎJJœZZ½RRµccÞRR½ZZÖ))cBB¥JJÆ99¥JJÖ!!c11”99½11¥99ÎZ11½!c!!œ))ÎZ!!ÆÆ­µÆ΄­µ!1BRck{„”œ½¥„Œ½µ÷)!cJBkZRZ,ÿHPà)X²ÆRõ  Ã‡EåZÖ¬4jÛJ0 ¢@ "8„pð‰YÒ´ES–ìYº3CƊª@µ*•U:l“ÎY0_û0üë’#  5tXð1E:‰î šCã_ºxޘýÂeK©‘T¢<¹ñOC(xrÔ' Jžþ©“çm1aÀú½0S%È-IÒex ‚ŸD} 1ZÔi”^sà°Eƒ¦Ïß #…ø`¢˜qTv å©ÓFËá¼Y»–Í3è)PÖ¶e ÁOê@¬]ëåëìoàÁ…{(óbÀ½S¯ž#|¯·b´\±º‹'YÐ$ÿÀP tߪƒ¿¶Î,¯^ãXB†.+ÎKWÿo¹Ø³qc[¸=1‡ ( Ÿ#ü‘H#¯ùGN8ãÌãN:ŸUaE\èpÅ (s’Ç#˜ä¥Ž9Šc!† m¸ƒ†8b‰…DbI%zÝC9ç¼xEŒUA#ˆÐ‘èˆ!9îxُ.^8¤†Ei£’LF² +¶($‘Dxˆ¤ˆX6É%‹@~ÉņF֘$Ž:r)O=õœ#”g±C›cÞ¸¤™O¦‰çVÁç•v,É xý£K2ǃŒ4ß`h†M”±Å 6ôéƒw$¢Èÿ ÐÊ)§¼âË3ž­E ¢¤î‘„ ž&JÈx4Bª·Ô’Ï.ÆPãPd1†Ltj㧆òH£ÛT3Í4ÖtSégBàðRìÑ'*u¢‡†H‡^ø”SÎ8ö¼“Î: 1„Eœá핇2I!„˜‹îèÐãî ñÎë…÷B‡&ƒd" &—šÎ;óÈ#<íüóÂ`€qÆ_¤“ tq¼ñI)¦¢Î?^±ãŽ;í°óÒ?ž°q |X62° 'é¨ó’´0Œ:ë-?-„²Ç6¸á† 4ôlðAЀ't`×#0àc{àA @ P@;PKœ_£ã PK»~@OEBPS/dcommon/doccd.css,Óý/* Minimal CSS for Oracle Database Documentation */ /* Standard Element Selectors */ h1, h2, h3, h4, h5, h6 { font-family: sans-serif; color: #309; background: white; } th { font-family: sans-serif; } a img { border-style: none; } div.header > p { display: none; } /* Class Selectors */ .ProductTitle { font-family: sans-serif; } .BookTitle { font-family: sans-serif; } .VersionNumber { font-family: sans-serif; } .PrintDate { font-family: sans-serif; font-size: small; } .PartNumber { font-family: sans-serif; font-size: small; } PKeÓº³1,PK»~@OEBPS/dcommon/indxicon.gifáýGIF87aÕÿÿÿ!!!)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷­¥­{s{sks,ÿ@€pH,È¤rÉl:ŸÐ¨ºù@®–ÍTx¡0‹CÑ TÎhôD“L ¼q@Øï÷‚(’4L8C…†… Ir‘’“F  ¡¢   ›rM šDœd a½¾a¨ ·CÎÏÏ–Ãśfii§ÕÆBœ éêëé§ã®PðÄäŽCû·€š²â9PA`S¡€€=gÏH‚ B ÁQD‚pð1A‹p)R‚"ˆ€ÀÀÈŸX3¢aƒCš¡Ô< à₋0 poÈ 4PáÁƒ¨ ˜iÀU›$4<»Á… f™e@kAC«(o‹ÄÝB·®Ý»L‚;PKúª¥#PK»~@OEBPS/dcommon/doclib.gif õþGIF89aó1ÿÿÿïï÷ÖÞçÆÎÖ­½Îœ­½„œ­{ŒœkŒ­c{ŒJsŒBc„9Zs1Jk,@¿ÈI«­Œ¥vÊ Ø5aƒ-¡‡é5-vÆasEnq0& ˆó҈VF[|’ÉO ¸ @’@°É48ÛªpM„(¬‘œ 7*X(±ÅƙÎjŽ¶o0Fq|uH‡ˆ‰Šu9’(dK@ @Y ! mFt,¥gN–¬h¦%± N˜µN¸@±¶·¬ À§F³¦Ë¿lºN· du¸_ÂÒg%½‹áâ‹;PKÏY@¹ PK»~@OEBPS/dcommon/help.gif!ÞþGIF89aó1ÿÿÿÿ÷ÿç÷ÿÞç÷ÖÖçÎÎεÎÖµµÖœµÖœ­½””­{”­k„œZs„Bc{,@ÖÈ )è˜sÆ TQà$8(4ʔ%ÑŌC„ÉKÓ$·ÉA› H¥„ãP „`$h8Œ€Sðd+°É¡\¶ H¡@æ%¯ú¹à' 6M HO3ƒSJ‚M ““/:ŠZi[‘7   \—(® R9ƒr ERI…%  ¥N=a±‚Êqƒ ¶  ƒqƦ©s *q-n/ÇSqÎj ² ”…DŠ XZŸè;PK¤Þ‡{&!PK»~@OEBPS/dcommon/uarrow.gifÐ/ýGIF89aõÿÿÿÞÞïçç÷ïï÷„JJ¥­­Ö÷÷ÿ÷÷÷ssµ{Œ{{½ÞÞçÎÎތŒŒJJ”ïïï­­µ{{Œ„ÆÆÎBB„µµÖ{{µZZ”JJ„11”ççÆRRœ11Œ99œ””ÆÎÎÎ¥¥¥JJŒssŒœœ¥½½Æµµµ„„Œ!!„ZZ„””œçççÆÆƽ½½ÞÞÞ½½ÎŒŒ”ÎÎÖcc­ÖÖÞ))ŒZZŒµµ½ÆÆÖµµÆ¥¥­!þ% Imported from GIF image: arrtop.gif,…ÿÿÿÞÞïçç÷ïï÷„JJ¥­­Ö÷÷ÿ÷÷÷ssµ{Œ{{½ÞÞçÎÎތŒŒJJ”ïïï­­µ{{Œ„ÆÆÎBB„µµÖ{{µZZ”JJ„11”ççÆRRœ11Œ99œ””ÆÎÎÎ¥¥¥JJŒssŒœœ¥½½Æµµµ„„Œ!!„ZZ„””œçççÆÆƽ½½ÞÞÞ½½ÎŒŒ”ÎÎÖcc­ÖÖÞ))ŒZZŒµµ½ÆÆÖµµÆ¥¥­þ@€pH,È¤rÉl:ˆèÁ©ä "­bJ56œ«aåv‡Eè”z5´çá¡ ™R¬Yc`î€%))'5Vq € ƒ&zq ‹ƒ25p]i‹ +ƒ3-]sž *ƒ,0}K¨ ‚)8†¥NŠ³){N“³ –)2…›KÃ );£¹J§Ã©«o°F²Ô´ƒ·‡J»Ü½¤Ò”Üėz¯IË $‹7ÞoÑFt2(€0b  l<𥉠<Pƒ|Å A@‡„0ø 0Aƒ“ .`è …  jä@¹ï”"àÌɁC Ο%³!J´¨Q&A;PKhu,­ÕÐPK»~@OEBPS/dcommon/toc.gifúþGIF89aó1ÿÿÿ÷ÿÿïïïÎÖçÆÆÎ¥µÎ¥­½Œ¥µ{”¥c{ŒZ{¥JkŒJk„1Rk,@ºÈI«­K%´Œ „0|„Ñ ‚ÅeJB²,çK-‰ŒÆ1ÿ±–§iˆ'—°]‚B¢Ñt9‡žëdäzè€0&ðpZì1Ìo'qÉ(؟dQª=3S „„SZŠ‹ŒC8db f&3‰v2@VPsuk2Gˆsiw`"Iªz¥E¨%²< Cž °!.“hC I»Q’ ­3o?3…9‰ÏT ҍÜÝ;PKv I’ PK»~@OEBPS/dcommon/masterix.gif.ÑþGIF89aó1ÿÿÿçï÷ÖÞç½ÎޜµÎŒ¥½s”­c„œJkŒ1Rs!Bc1J),@ãÈI«µ‚œS@˜ß0Ã"1 ÈѾ®b$²¥b0À ñ8P……bÉL,³aËÆc™Ír ªÕB@(fD°n ‚Jx11+™\Ú%1ˆ÷³¨ýÒÅïÈÈòÒËóÙÒýíÛꑈÕ5ÿêæÝ3=ÿäÛýÚËäZ]Å'ù¾Äñyuø•†ø¢§çLGÅÉ*Æ)ëg^÷—“Õ!8ßC?ß-6á(2Û9KË"ñĨÉØ0ôЯæl…Ý;UÛ+Kð¥¥ÿòìÑ9÷¶³è^uÏ2,@þ@À (\È°À Ë $P°`¢Ç‰ 8x à£I$4Hˆ‘ၠ*(´@Á¤Í‰0dа¡åÂ8tððA† Å DсSÀP‚ †èÀv"ÐTU±†H Ph抸PÄ"Y1bxDǕŽÌ§_š¬=‚$úIŠ /âç&¯½¡žµÈ þ.)+ 60D)™bÞ§˜´B~=0#'ŠŽœæÂ& ‘Š*«D+í´«l1ˆMG CL1&¸„+D`Œ.Ä1qVèG¨Œà‚ ( ó‘"ÀD2óQ LË,p.Ì;Âu¾. Í|î¸ãrÁ$ûp‚+5€qÄBNÃµl<îTzB"\9e0÷u )¨@çD,´óιð ÌÃ2Ì@C~KU 'LöØÎ6Üa9´ ƒŽì /Ï;ç<ô`P!Dº#TaÅl·í6ÛXTñ˜YhÑn¬[pñöþ]ô݅ ¼–Ã7}ìB a€¨‚&AÆ®e˜áÅ{³íEÊɲ†Æ®i¨±•ŸáE¹ñpì#G¼À}D„#x¶TÀñI€Ü‚ìz­G½ÃFǂ„ØEc^…q}ú)ƒ Y­# (œt´Û®”NeáÆG‘L*É@“¤ /%UBÖ:&ßk–0{ &Sd¢ÿþüïïÁñDÑn¶ BëQá^íêô‰(⌠"@q¸ „â#‡` Ò@1ˆB4i…@ ažNȅ@ò[Þ\öB >üe00Á¬7V´Â[ð“N°(Ðvþ…p…yFeŒ ¯€ÅGb‘/&|a²˜…¥H‹Z j±…@À„"ˆ"~Êӎ)t ? $ èEQýø±‚.Õ½üâJ$¸C,lŒ]åA `Œ¬é˜8A o ‚B C?8ðÌ€cÁÑyA @‘‚Nz²“œ|`§¤:šäÐ`~7‘-˜G|yQÂÒåŒü A¢qA6ÉÉOzÐPbZ`>„¡—¾ôå~#8‚=./“éÉeÚdGˆAŒ2ªnr“¤¨B´‰ Yš†R¨@ …ØŦW h'j4p'¬!k 00Š ¼ÙMTƒ RN‚ô¡¤ÀF6̙ m` …(7%ꑀ;PKl-íƒOJPK»~@OEBPS/dcommon/index.gifüÿGIF89aó1ÿÿÿ÷ÿÿççïÖÞçÎÎÞµÆÎ¥µÎ¥­½”­½„œ­{Œ¥s„”c{ŒBZs,@±ÈI«½M"È AD³ BÅ0 3¶í».‹Rƒîü~[D"±0,† „­”]žÐ¨ôÙpÞR¿NC  …/Â& H&[%È7¼TûMƒí/ØÄ`vSƒ„…†+-‰+ŒŠ ‚q D go@" š˜4o'‚Uxcxcc§&k/ ·q·p¨´ zUm(ÁU³HDDJBGM‡Óԃ;PK(ýžüPK»~@OEBPS/dcommon/bookbig.gifÔ +öGIF89a$÷ÿÿÿ!!!)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷½µµ”ŒŒskkB991)))!!B11))1!JB9B9!!cZ9÷÷ïÿÿ÷ÎÎÆ­­¥µµ­Æƽœœ”¥¥œŒŒ„ssk„„{ZZRccZRRJJJBBB9„„c!!ÆνÎÖÎ)1)k{sï÷÷ÖÞÞÞççµ½½¥­­½Æƌ””kssÆÖÖ½ÎÎZccJRRœ­­BJJ„””{ŒŒ9BB)11)99!!))11!!k„ŒœÆÖ!JZ!)RcJcc„”Bcs)1c­Î)JZ!BR!)BZ)9œ½Î9J!Rk9¥Þ!c„1”Æ1B)”ÎZ{­½Æ)9BkµÞc­Ö1kŒBœÎ9”ÆBZ!Z{9­ïRs)ŒÆJk¥Îçk”­sµÞk­Ö9kŒB”Æ1sœ1ŒÆJk9RœµÆ¥ÆÞc{Œk¥Î9sœ)Z{1k”9ŒÆ1„½)s¥1Rk)Jc1Jœ¥­œ­½!))BZ!1ÎÖÞk{Œcs„c{”)19B!)BcsŒc„Î{Œµk„Æs„µc{½k„ÎZs½!Rk„ÖJkÎJkք”Îc{Î9ZÎks”{„­ckŒ9Rµ)B¥ksœ9RÎ9RÖ1JÆ!)Z1B­!)c)9¥)9µ9BœR19¥÷÷ÿkksBBJcc{cc„BBZ))9kkœ!!199c11ZBB{9!!R!!Z!!c))„!!kR!!s!!„BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9B!þ& Imported from GIF image: bookbig.gif,$‡ÿÿÿ!!!)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷½µµ”ŒŒskkB991)))!!B11))1!JB9B9!!cZ9÷÷ïÿÿ÷ÎÎÆ­­¥µµ­Æƽœœ”¥¥œŒŒ„ssk„„{ZZRccZRRJJJBBB9„„c!!ÆνÎÖÎ)1)k{sï÷÷ÖÞÞÞççµ½½¥­­½Æƌ””kssÆÖÖ½ÎÎZccJRRœ­­BJJ„””{ŒŒ9BB)11)99!!))11!!k„ŒœÆÖ!JZ!)RcJcc„”Bcs)1c­Î)JZ!BR!)BZ)9œ½Î9J!Rk9¥Þ!c„1”Æ1B)”ÎZ{­½Æ)9BkµÞc­Ö1kŒBœÎ9”ÆBZ!Z{9­ïRs)ŒÆJk¥Îçk”­sµÞk­Ö9kŒB”Æ1sœ1ŒÆJk9RœµÆ¥ÆÞc{Œk¥Î9sœ)Z{1k”9ŒÆ1„½)s¥1Rk)Jc1Jœ¥­œ­½!))BZ!1ÎÖÞk{Œcs„c{”)19B!)BcsŒc„Î{Œµk„Æs„µc{½k„ÎZs½!Rk„ÖJkÎJkք”Îc{Î9ZÎks”{„­ckŒ9Rµ)B¥ksœ9RÎ9RÖ1JÆ!)Z1B­!)c)9¥)9µ9BœR19¥÷÷ÿkksBBJcc{cc„BBZ))9kkœ!!199c11ZBB{9!!R!!Z!!c))„!!kR!!s!!„BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9BþH ‡`\Ȑá†:pظа"A6D±BH,Vä@DÿÚ¹û'„G"vРƂ Ü¥;‡n;!;>Äx¡AÜܽ[G.\¸rãÜèQC¤‡ ‚¤„w®œÓrä¾}‹ºBŊQ ôA­Þ9§á¾‘#ç5Yª0VȒj0lÝæÒ-Gø›ÓqíÊÒèÀðF>Z³pM³§ ¸rb ;=÷.€ސ¦ÌW-W½¬Ñ»œ™°WoçÜ ha!}ã~ْ šÐÏ;ª t²¸ò 5í´3 :\€ 4PcD,0À 4ã*_l³Ì0ÂÜK3-¸`€lÀÁ.j!c ð“ìA‰a|¡Í2“L4/1C`@Á@md À;…(‚H¦”†*ăŒ8÷ä0ÄL0àL(ÿ€„hÀƒ*‡Ò‡Ÿ°Ò†o#N8×4pC Ê(x¬ÂOä§Áª@ò ‹ÈA)€¡J6à¬r€þVl±F‘ r ÿ ðÀfrÉy†$Ÿœr_p¡l5£xhÐA+@A=ˆF €rG©UŒÁ a„ ­Ø1Ȩ˜Ñ…4sÉ&òH à–Bdzt‰ ‚x¢ŠàÄàð‰#ùÞÑH%ÄRr‰ê ‚Š²(Ѐä7P`#R‰ ¤Ñ‰'xŒ"€ #0`@ð~iƒ Ò`HûúAÆ'Tˆ‘k?3!$`-A¤@1‚äl"ôP„ LhÁÿüƒ€‘ò€Ê–RG&œ’8‘A`0€¡DcBH s¤€q@A ÀXÞB¤4@´&yˆ‚QhPAžpÀpxCQ„ ‚(˜ˆrBW00@ÈDP 1E‘ƒ?Òôó©@€l€öP1£%¬ðÕT`ÉÔ´Š 0 áW”ÄB~nQ@;PKéöGCÙ Ô PK»~@OEBPS/dcommon/darbbook.cssÿÿPKPK»~@OEBPS/dcommon/booklist.giféþGIF89aó1ÿÿÿ÷÷ÿÞçï½ÎÞµÆÖ¥µÎ„œ½kŒ¥Z{œJkŒ1Rs!BZ)B),@ËÈI«½9¦ŽZ͓Ca Â% Dz8Ȁ0‚F‘ZØЌÆâ0P­ ›!ñx8Ð!eœ”L8ƒaWÈ F·’D(~ŒãÑ@p+õrMS|ÃӛâR$ v "Z:]ZJJ‡Ec{’*=AP “ BiA ']j4$*›  ¦ & 9Žq sMiO?½ˆ„½jQ ‡‘= , ÒYFÍg4.778c&Š½$¹c%9¬“’;PKː5’PK»~@OEBPS/jtaapi.htm1~Î Java Transaction APIとOracle WebLogicの拡張機能

6 Java Transaction APIとOracle WebLogicの拡張機能

この章では、Java Transaction API (JTA)とOracleが提供するJTAの拡張機能について概説します。

JTA APIの概要

WebLogic Serverでは、JavaアプリケーションのJava Transaction API (JTA)を実装するjavax.transactionパッケージとjavax.transaction.xaパッケージがサポートされています。JTAの詳細は、Java Transaction API (JTA)仕様(http://www.oracle.com/technetwork/java/javaee/jta/index.html)を参照してください。javax.transactionインタフェースおよびjavax.transaction.xaインタフェースの詳細は、JTAのJavadocを参照してください。

JTAの構成要素は以下のとおりです。

  • アプリケーションからトランザクション境界を設定したり、トランザクションを管理したりするためのインタフェースであるjavax.transaction.UserTransaction。このインタフェースは、Javaクライアント・プログラムの一部として、またはEJB内でBean管理のトランザクションの一部として使用します。

  • トランザクション・マネージャがアプリケーションのトランザクションの境界を設定したり、トランザクションを管理したりするためのインタフェースであるjavax.transaction.TransactionManager。このインタフェースはコンテナ管理のトランザクションの一部としてEJBコンテナによって使用されます。このインタフェースでは、javax.transaction.Transactionインタフェースを使用して特定のトランザクションで処理が実行されます。

  • トランザクション・マネージャがアプリケーション・サーバーにステータスおよび同期の情報を提供するためのインタフェースであるjavax.transaction.Statusとjavax.transaction.Synchronization。これらのインタフェースは、トランザクション・マネージャによってのみアクセスされ、アプリケーション・プログラムの一部として使用することはできません。

  • トランザクション・マネージャがXA準拠リソースのリソース・マネージャと連係するためのインタフェースであるjavax.transaction.xa.XAResource、およびトランザクション・マネージャがトランザクションの識別子を取り出すためのインタフェースであるjavax.transaction.xa.Xid。これらのインタフェースは、トランザクション・マネージャによってのみアクセスされ、アプリケーション・プログラムの一部として使用することはできません。

JTAに対するOracle WebLogicの拡張機能

Java Transactions APIの拡張機能は、JTAの仕様で実装の細かな部分がカバーされていないところや補足的な機能が必要なところで提供されます。

Oracle WebLogicでは、JTA仕様の解釈に基づいて以下の機能が提供されます。

  • クライアントが開始するトランザクション - JTAトランザクション・マネージャ・インタフェース(javax.transaction.TransactionManager)がJNDIを通じてクライアントやBeanプロバイダから利用可能になります。この機能により、クライアントや、Bean管理のトランザクションを利用するEJBでトランザクションをサスペンドしたり再開したりすることができます。


    注意:

    サスペンドされたトランザクションは、それがサスペンドされた同じサーバー・プロセスで再開する必要があります。

  • トランザクションのスコープ - トランザクションはクラスタとドメインの内部、およびクラスタとドメイン間で機能します。

  • 拡張されたjavax.transaction.TransactionSynchronizationRegistryのサポート - WebLogic Serverでは、java:comp/TransactionSynchronizationRegistryの標準名を使用して、JNDI内のTransactionSynchronizationRegistryオブジェクトをルックアップできるようになりました。Oracleでは、このサポートを拡張するため、2つのグローバルJNDI名(javax/transaction/TransactionSynchronizationRegistryとweblogic/transaction/TransactionSynchronizationRegistry)を追加しました。詳細は、http://download.oracle.com/javaee/5/api/index.html?javax/transaction/TransactionSynchronizationRegistry.htmlのjavax.transaction.TransactionSynchronizationRegistryを参照してください。

Oracle WebLogicでは、JTAの拡張機能として以下のクラスとインタフェースが提供されます。

  • weblogic.transaction.RollbackException (javax.transaction.RollbackExceptionを拡張)

    このクラスでは、より包括的な例外情報で使用するためにロールバックの元々の理由が保持されます。

  • weblogic.transaction.TransactionManager (javax.transaction.TransactionManagerを拡張)

    WebLogic JTAトランザクション・マネージャ・オブジェクトでは、XAリソースが起動時にトランザクション・マネージャに対する登録を行ったり、登録を解除したりできるようにするこのインタフェースがサポートされています。このインタフェースを利用すると、トランザクションをサスペンド後に再開することもできます。

    このインタフェースには、以下のメソッドがあります。

    • registerStaticResource、registerDynamicResource、およびunregisterResource

    • registerResource - (WebLogic Server 8.1で新しく追加されたメソッド)このメソッドでは、トランザクション・マネージャによるリソースの管理方法を指定するためのプロパティがサポートされています。

    • getTransaction

    • forceResumeおよびforceSuspend

    • begin

  • weblogic.transaction.Transaction (javax.transaction.Transactionを拡張)

    WebLogic JTAトランザクション・オブジェクトでは、ユーザーがトランザクション・プロパティを取得および設定できるようにするこのインタフェースがサポートされています。

    このインタフェースには、以下のメソッドがあります。

    • setNameおよびgetName

    • addProperties、setProperty、getProperty、およびgetProperties

    • setRollbackReasonおよびgetRollbackReason

    • getHeuristicErrorMessage

    • getXIDおよびgetXid

    • getStatusAsString

    • getMillisSinceBegin

    • getTimeToLiveMillis

    • isTimedOut

  • weblogic.transaction.TransactionHelper

    このクラスを使用すると、現在のトランザクション・マネージャおよびトランザクションを取得できます。TxHelperのかわりに使用されます。

    このインタフェースには、以下の静的メソッドがあります。

    • getTransaction

    • getUserTransaction

    • getTransactionManager

  • weblogic.transaction.TxHelper (非推奨です。かわりにTransactionHelperを使用してください)

    このクラスを使用すると、現在のトランザクション・マネージャおよびトランザクションを取得できます。

    このインタフェースには、以下の静的メソッドがあります。

    • getTransaction、getUserTransaction、getTransactionManager

    • status2String

  • weblogic.transaction.XAResource (javax.transaction.xa.XAResourceを拡張)

    このクラスを使用すると、XAリソースをリストから削除できます。

    このインタフェースには、次のメソッドがあります。

    • getDelistFlag

  • weblogic.transaction.nonxa.NonXAResource

    このインタフェースを使用すると、javax.transaction.xa.XAResourceインタフェースをサポートしていないリソースを簡単にWebLogic Serverトランザクション・マネージャに統合できます。トランザクション・マネージャでは、非XAリソースが分散トランザクションに参加することを許可する、最後のエージェントによる2フェーズ・コミットの最適化のバリエーションがサポートされています。プロトコルは、非XAリソースに対して1フェーズ・コミットを発行し、その処理の結果を使用してトランザクションのコミットの決定を行います。

javax.transactionインタフェースおよびjavax.transaction.xaインタフェースに対するWebLogicの拡張機能の詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transactionパッケージの概要に関する項を参照してください。

PKӝÏֆ11PK»~@OEBPS/trxrmi.htm‰vì RMIアプリケーションのトランザクション

9 RMIアプリケーションのトランザクション

この章では、Oracle WebLogic Server環境で動作するRMIアプリケーションで、トランザクションを使用するためのガイドラインを説明し、追加のリファレンスを示します。

始める前に

開始する前に、第2章「トランザクションについて」(特に次のトピック)を読んでください。

RMIアプリケーションの詳細は、『Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング』を参照してください。

ガイドライン

以下のガイドラインは、WebLogic Server向けのRMIアプリケーションでトランザクションを実装するときに適用されます。

  • WebLogic Serverでは、フラット・トランザクションのみがサポートされています。トランザクションをネストすることはできません。

  • 標準的なプログラミング手法を使用してトランザクション処理を最適化します。たとえば、トランザクションの境界を適切に設定すると、トランザクションの処理が速くなります。

  • RMIアプリケーションでは、トランザクションでコールバック・オブジェクトを使用することが推奨されていません(WebLogic Serverで管理できないため)。

    デフォルトでは、リモート・オブジェクトにおけるすべてのメソッド呼出しはトランザクション処理です。コールバック・オブジェクトが必要な場合は、WebLogic RMIコンパイラで -nontransactionalフラグを使って、これらのクラスをコンパイルする必要があります。『Oracle WebLogic Server RMIのプログラミング』の「WebLogic RMIコンパイラの使い方」および「WebLogic RMIコンパイラのオプション」を参照してください。

  • RMIアプリケーションでは、RMIクライアントがトランザクションを開始できますが、すべてのトランザクション処理はWebLogic Serverをホストとするサーバー・オブジェクトまたはリモート・オブジェクト上で行われる必要があります。クライアントJVM上でホストされるリモート・オブジェクトは、トランザクション処理に参加できません。

    回避策としては、クライアントJVM上のリモート・オブジェクトを呼び出す前にトランザクションをサスペンドし、リモート処理が終了した後でトランザクションを再開します。

WebLogic Serverトランザクション・サービスのガイドラインについては、「機能と制限」を参照してください。

PKŒ~Ž‰PK »~@oa«,mimetypePK»~@û[D‡“Ž:iTunesMetadata.plistPK»~@YuìçâMETA-INF/container.xmlPK»~@/…ÌŽá_Ü_ :OEBPS/toc.htmPK»~@jn?”LGVfOEBPS/img_text/rmitrx.htmPK»~@TáG{¥ #éiOEBPS/img_text/client_interp_tm.htmPK»~@¬¤%*–‘ßoOEBPS/img_text/trxejbap.htmPK»~@6…|ý„ ¾sOEBPS/img_text/imp_tx_client.htmPK»~@k™Ü†ˆ xOEBPS/img_text/imp_tx_server.htmPK»~@íºùôk~OEBPS/img_text/exp_tx.htmPK»~@mUŒsªiª«OEBPS/trxejb.htmPK»~@ëk¹À(EE\,OEBPS/trxman.htmPK»~@S<Øp‰a„aÂqOEBPS/trxsvc.htmPK»~@%W‘Þ‡g‚g‰ÓOEBPS/jtatximp.htmPK»~@KrÜ^g$b$P;OEBPS/intro.htmPK»~@…ôô<½2½ô_OEBPS/jtatxexp.htmPK»~@Häô¿º pOEBPS/toc.ncxPK»~@[×ßpTOj1OEBPS/cover.htmPK»~@_ž*çŽb‰bû3OEBPS/thirdpartytx.htmPK»~@õhè1b>]>͖OEBPS/img/client_interp_tm.gifPK»~@$ïq8ý&ø&{ÕOEBPS/img/exp_tx.gifPK»~@Üx&ï|wºüOEBPS/img/imp_tx_client.gifPK»~@ ±pkOEBPS/img/rmitrx.gifPK»~@}Øñn?!:!11OEBPS/img/imp_tx_server.gifPK»~@þ'ߤ¸³¹ROEBPS/img/trxejbap.gifPK»~@Ëî<¨Q£QµhOEBPS/trbtrx.htmPK»~@vr2W ··›ºOEBPS/gstrx.htmPK»~@yý×1–‘äqOEBPS/title.htmPK»~@<íxi‘Œ·ŠOEBPS/preface.htmPK»~@Û,n ss ‡›OEBPS/llr.htmPK»~@ß_…E @ ËOEBPS/content.opfPK»~@¯ßg…_PO/OEBPS/trxcon.htmPK»~@MάÜ"×"!ìAOEBPS/dcommon/O_signature_clr.JPGPK»~@é r~$eOEBPS/dcommon/topnav.gifPK»~@x[¨?:fOEBPS/dcommon/bookicon.gifPK»~@÷ÂÇ]ür÷rlOEBPS/dcommon/oracle-logo.jpgPK»~@³PzØ OßOEBPS/dcommon/feedbck2.gifPK»~@‘+&§àOEBPS/dcommon/rightnav.gifPK»~@o"nR M âOEBPS/dcommon/doccd_epub.jsPK»~@ý枰pkµìOEBPS/dcommon/mix.gifPK»~@¿ê7 áÜhïOEBPS/dcommon/larrow.gifPK»~@1ý„FAñOEBPS/dcommon/prodicon.gifPK»~@pµ*¤c^õOEBPS/dcommon/conticon.gifPK»~@ë-´ÅÍÈÈøOEBPS/dcommon/feedback.gifPK»~@jÓeõ8ð8ÝÿOEBPS/dcommon/oracle-small.JPGPK»~@ºNê619 OEBPS/dcommon/cpyr.htmPK»~@üïü³¤Ÿ˜K OEBPS/dcommon/contbig.gifPK»~@3š“( # ƒQ OEBPS/dcommon/bp_layout.cssPK»~@£JV^ÕÐô^ OEBPS/dcommon/rarrow.gifPK»~@œ_£ã a OEBPS/dcommon/prodbig.gifPK»~@eÓº³1,dg OEBPS/dcommon/doccd.cssPK»~@úª¥#Úi OEBPS/dcommon/indxicon.gifPK»~@ÏY@¹ El OEBPS/dcommon/doclib.gifPK»~@¤Þ‡{&!šm OEBPS/dcommon/help.gifPK»~@hu,­ÕÐo OEBPS/dcommon/uarrow.gifPK»~@v I’ r OEBPS/dcommon/toc.gifPK»~@Ò!:·3.ls OEBPS/dcommon/masterix.gifPK»~@²Ê¸³çt OEBPS/dcommon/blafdoc.cssPK»~@×ÍS«'"æ‹ OEBPS/dcommon/leftnav.gifPK»~@l-íƒOJT OEBPS/dcommon/oracle.gifPK»~@(ýžüé• OEBPS/dcommon/index.gifPK»~@éöGCÙ Ô /— OEBPS/dcommon/bookbig.gifPK»~@O¡ OEBPS/dcommon/darbbook.cssPK»~@ː5’œ¡ OEBPS/dcommon/booklist.gifPK»~@ӝÏֆ11ÿ¢ OEBPS/jtaapi.htmPK»~@Œ~Ž‰ÃÔ OEBPS/trxrmi.htmPKBB¦è