ヘッダーをスキップ
Oracle TopLink開発者ガイド
10g(10.1.3.1.0)
B31861-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

74 セッションの構成

この章では、TopLinkセッションを構成する方法について説明します。

表74-1は、構成可能なTopLinkセッション・タイプと、そのタイプで対応している構成可能オプションが記載されたタイプ別の章への相互参照を示しています。

表74-1 TopLinkセッションの構成

作成対象 参照先

サーバーおよびクライアントのセッション


第76章「サーバー・セッションの構成」


作業ユニット・セッション


第97章「TopLinkトランザクションの概要」


独立クライアント・セッション


第77章「Virtual Private Database用の排他独立クライアント・セッションの構成」


履歴セッション


第78章「履歴セッションの構成」


セッション・ブローカおよびクライアント・セッション


第79章「セッション・ブローカおよびクライアント・セッションの構成」


データベース・セッション


第80章「データベース・セッションの構成」



表74-2に、2つ以上のTopLinkセッション・タイプで共通に使用される構成可能オプションをリストします。

詳細は、次を参照してください。

共通セッション・オプションの構成

表74-2に、2つ以上のTopLinkセッション・タイプで共通に使用される構成可能オプションをリストします。ここで説明する構成可能オプション以外にも、表74-1に示すように、特定のセッションのタイプについて説明しているオプションも構成する必要があります。

プライマリ・マッピング・プロジェクトの構成

マッピング・プロジェクトには、ディスクリプタやマッピングなど、TopLinkのマッピング・メタデータを格納します(「プロジェクトの概要」を参照)。セッションがディスクリプタを登録できるように、各セッションは少なくとも1つのプロジェクトと関連付けられます。

表74-3では、どのセッションがプライマリ・マッピング・プロジェクトの構成をサポートしているかを示します。

TopLink Workbenchを使用すると、マッピング・メタデータを、デプロイXMLファイルまたはJavaクラスとしてエクスポートできます。このため、セッションには、マッピング・プロジェクトをXMLファイルまたはJavaクラスとして指定できます。

マッピング・メタデータをTopLink WorkbenchからデプロイXMLファイルとしてエクスポートすることをお薦めします(「プロジェクト情報のエクスポート」を参照)。

マッピング・メタデータをJavaクラスとしてエクスポートした場合は、セッションに追加する前に、コンパイルしてセッション構成クラスパスに追加する必要があります(「セッション構成の構成」を参照)。


注意:

XMLを使用してマッピング・プロジェクトを指定する場合、Javaリソース・パスを指定できます。ほとんどのアプリケーションで、sessions.xmlファイルとproject.xmlファイルをJARファイル内にデプロイし、Javaリソース・パスとしてプロジェクトXMLパスを指定します。

Javaリソース・パスを指定する場合、ディレクトリにはバックスラッシュ(\)ではなくスラッシュ(/)を使用してください。たとえば、com/myapp/mypersistence/my-project.xmlMETA-INF/my-project.xmlのようになります。


セッションでの追加のTopLinkプロジェクトの構成の詳細は、「複数マッピング・プロジェクトの構成」を参照してください。

TopLink Workbenchの使用

セッション用にTopLinkプライマリ・プロジェクトのメタデータを指定するには、次の手順を実行します。

  1. ナビゲータでサーバーまたはデータベース・セッションを選択します。そのプロパティがエディタに表示されます。

  2. 「一般」タブをクリックします。「一般」タブが表示されます。

  3. 「プロジェクト」サブタブをクリックします。「プロジェクト」サブタブが表示されます。

    図74-1 「一般」タブ、「プロジェクト」サブタブ、「プライマリ・プロジェクト」オプション

    図74-1の説明が続きます
    「図74-1 「一般」タブ、「プロジェクト」サブタブ、「プライマリ・プロジェクト」オプション」の説明

  4. 次のオプションを選択します。

    • 「編集」をクリックしてプライマリ・プロジェクトを定義します。「プライマリ・プロジェクトの編集」ダイアログ・ボックスが表示されます。

    • 「複数のプロジェクト」 オプションを選択すると、追加のプロジェクトをセッションに追加できます。詳細は、「複数マッピング・プロジェクトの構成」を参照してください。

    図74-2 「プライマリ・プロジェクトの編集」ダイアログ・ボックス

    図74-2の説明が続きます
    「図74-2 「プライマリ・プロジェクトの編集」ダイアログ・ボックス」の説明

次の情報を参照し、「プライマリ・プロジェクトの編集」ダイアログ・ボックスの各フィールドにデータを入力します。

フィールド 説明
XML 「XML」を選択すると、マッピング・プロジェクトをデプロイXMLファイルとして追加できます。「参照」をクリックしてファイルを選択します。
クラス 「クラス」を選択すると、マッピング・プロジェクトをコンパイル済のJavaクラス・ファイルとして追加できます。「参照」をクリックしてファイルを選択します。

Javaの使用

Javaを使用すると、次のAPIを使用してディスクリプタをセッションに登録できます。

  • Project API: project.xmlファイルを読み取り(またはプロジェクト・クラスをインスタンス化し)、ProjectメソッドcreateServerSessionまたはcreateDatabaseSessionを使用してセッションを作成します。

  • Session API: 表74-4に示すDatabaseSession APIを使用して、ディスクリプタまたはディスクリプタのセットをセッションに追加します。ディスクリプタはログインする前に登録してください。ただし、プライマリでないプロジェクトのディスクリプタのセットはログイン後に追加できます。

表74-4 ディスクリプタ登録用のDatabaseSession API

セッション・メソッド 説明

addDescriptors(Project)

渡されたProjectによって所有されるディスクリプタがすべてセッションに追加されます。

addDescriptors(Vector)

渡されたVectorにあるディスクリプタがすべてセッションに追加されます。

addDescriptor(Descriptor)

セッションに個々のディスクリプタを追加します。


セッション・ログインの構成

セッション・ログインでは、データ・ソースに永続化するセッションのデータ・ソース・アクセスの詳細をカプセル化します。セッション・ログインにより、その他のログイン構成がオーバーライドされます。

表74-5に、どのセッションがセッション・ログインの構成をサポートしているかを示します。

表74-5 セッションでのセッション・ログインのサポート

セッション セッション・ログイン

サーバーおよびクライアントのセッション


サポートされている


セッション・ブローカおよびクライアント・セッション


サポートされている


データベース・セッション


サポートされている



セッション・ログインを使用すると、様々な機能を利用できます。次の機能があります。

詳細は、次を参照してください。

ロギングの構成

TopLinkのロギング・フレームワークを使用して、ログ・ファイルまたはセッション・コンソールにTopLinkの動作を記録します。

表74-6に、どのセッションがロギング構成をサポートするかを示します。


注意:

セッションがセッション・ブローカに登録されている場合は、セッション自体にではなくセッション・ブローカにロギング情報を指定する必要があります。

非CMPアプリケーションでは、TopLink Workbenchを使用してロギングを構成できます(「TopLink Workbenchの使用」を参照)。CMPアプリケーションの場合は、「CMPアプリケーションでのロギングの構成」を参照してください。

詳細は、「ロギング」を参照してください。

TopLink Workbenchの使用

セッションにロギング情報を指定するには、次の手順を実行します。

  1. ナビゲータでデータベース・セッションを選択します。そのプロパティがエディタに表示されます。

  2. 「ロギング」タブをクリックします。「ロギング」タブが表示されます。

    図74-3 「ロギング」タブ

    図74-3の説明が続きます
    「図74-3 「ロギング」タブ」の説明

次の情報を参照し、「ロギング」タブの各フィールドにデータを入力して、このセッションで使用するプロファイラ・オプションを選択します。

オプション 説明
ロギングなし このオプションを選択すると、このセッションでは何も記録されません。
サーバー このオプションを選択すると、このアプリケーションがデプロイされているアプリケーション・サーバーのロギング機能が使用されます。
Java このオプションを選択すると、java.util.loggingパッケージが使用されます。
標準 このオプションを選択すると、TopLinkのロギング・フレームワークが使用されます。

選択すると、任意で次のオプションを構成することもできます。

    ロギング・レベル (情報の昇順で)記録するロギング情報の量を定義します。
  • CONFIG: ログイン、JDBC接続およびデータベース情報のみを記録します。

  • INFO(デフォルト): サーバー・セッションごとのログイン/ログアウトをユーザー名付きで記録します。セッションを取得すると、詳細情報が記録されます。

  • WARNING: SEVEREレベルで記録されないすべての例外など、TopLinkを強制的に停止しない例外を記録します。これにはスタック・トレースは含まれません。

  • SEVERE: TopLinkで継続できないことを示す例外およびログイン時に生成された例外を記録します。これにはスタック・トレースが含まれます。

  • FINE: SQL(スレッド情報を含む)を記録します。

  • FINER: 警告と同じです。ただし、スタック・トレースが含まれます。

  • FINEST: その他の低レベル情報が含まれます。

  • ALL: すべてを記録します。

    コンソール このオプションを選択すると、ロギング情報が標準コンソール出力に表示されます。
    ファイル このオプションを選択すると、ロギング情報がファイルに記録されます。「参照」をクリックしてログ・ファイルの名前と場所を指定します。
オプション このオプションを選択すると、「Java」または「標準」ロギングを選択した場合の、これ以外のロギング・オプションのデフォルトをオーバーライドします。
    例外のログのスタック・トレース このオプションを選択すると、スタック・トレースが含まれ、すべての例外がログに書き込まれます。

デフォルト: SEVEREメッセージの場合に、スタック・トレースが記録されます。WARNINGメッセージの場合は、ロギング・レベルがFINER以下のときにのみスタック・トレースが記録されます。

    接続を出力 このオプションを選択すると、接続識別子が接続関連ログ・メッセージに記録されます。

デフォルト: すべてのメッセージ・レベルとログ・レベルで有効化されます。

    日付を出力 このオプションを選択すると、ログ・メッセージが生成された日付と時刻も記録されます。

デフォルト: すべてのメッセージ・レベルとログ・レベルで有効化されます。

    セッションを出力 このオプションを選択すると、セッション名がセッション関連ログ・メッセージに記録されます。

デフォルト: すべてのメッセージ・レベルとログ・レベルで有効化されます。

    スレッドを出力 このオプションを選択すると、スレッド名がスレッド関連ログ・メッセージに記録されます。

デフォルト: FINER以下のロギング・レベルでのみ記録します。


Javaの使用

この項の内容は次のとおりです。

セッション・ロギングAPIの使用

TopLinkネイティブ・ロギング(デフォルト)を使用した場合は、実行時にoracle.toplink.sessions.SessionロギングAPIを使用してロギング・オプションを構成できます。

Sessionインタフェースは、次のロギング・メソッドを定義します。

  • setSessionLog: 使用するロギング・タイプを指定します(oracle.toplink.logging.SessionLogの任意のインプリメンタ)。

  • dontLogMessages: ロギングを無効にします。

  • setLog: セッションがメッセージを書き込むjava.io.Writerを指定します。

  • setLogLevel: セッションがoracle.toplink.logging.SessionLog定数を使用して行うロギングのレベルを指定します。

    • OFF

    • SEVERE

    • WARNING

    • INFO

    • CONFIG

    • FINE

    • FINER

    • FINEST

    • ALL

例74-1に、java.util.loggingパッケージを使用するようにセッションを構成する方法を示します。

例74-1 java.util.loggingを使用するためのセッションの構成

session.setSessionLog(new JavaLog());

例74-2に、OC4Jが用意しているサーバー・ログを使用するようにセッションを構成する方法を示します。サーバー・ロギングの詳細は、「サーバー・ロギング」を参照してください。

例74-2 アプリケーション・サーバー・ロギングを使用するためのセッションの構成

session.setSessionLog(new OjdlLog());

例74-3に、java.io.Writerにログを書き込むようにセッションを構成する方法を示します。

例74-3 java.io.Writerを記録先にするためのセッションの構成

session.setLog(myWriter);

java.util.loggingパッケージを使用するためのセッションの構成

java.util.loggingパッケージを使用する場合は、<JRE_HOME>/lib/logging.propertiesファイルにロギング・オプションを構成します。メッセージは、この構成ファイルに基づいて0(ゼロ)の宛先や複数の宛先に書き込まれます。

java.util.loggingパッケージを使用するようにセッションを構成する場合は、次に留意してください。

logging.properties

例74-4のようにlogging.propertiesファイルを構成します。

例74-4 logging.propertiesでのjava.util.loggingの構成

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = CONFIG
java.util.logging.ConsoleHandler.formatter = oracle.toplink.logging.TopLinkSimpleFormatter
oracle.toplink.LoggingSession.connection.level = CONFIG

使用可能なフォーマッタのタイプについては、「フォーマッタ」を参照してください。

フォーマッタ

TopLinkでは、TopLinkSimpleFormatterTopLinkXMLFormatterの2つのフォーマッタを用意しています。この2つは、対応するjava.util.loggingフォーマッタをオーバーライドし、セッション情報や接続情報があれば必ずそれらを記録します。また、ロギング・レベルで指定されたレベルでスレッドと例外スタック・トレース情報を記録します。

ネームスペース

java.util.loggingでは、ネームスペースがサポートされています。表74-7に、TopLinkコンポーネント用にoracle.toplink.logging.SessionLogで定義されている静的定数と、logging.properties内の対応する文字列を示します。

表74-7 ロギング・プロパティのファイル名

SessionLog logging.properties

適用なし

oracle.toplink

適用なし

oracle.toplink.<sessionname>

SQL

oracle.toplink.<sessionname>.sql

TRANSACTION

oracle.toplink.<sessionname>.transaction

EVENT

oracle.toplink.<sessionname>.event

CONNECTION

oracle.toplink.<sessionname>.connection

QUERY

oracle.toplink.<sessionname>.query

CACHE

oracle.toplink.<sessionname>.cache

PROPAGATION

oracle.toplink.<sessionname>.propagation

SEQUENCING

oracle.toplink.<sessionname>.sequencing

EJB

oracle.toplink.<sessionname>.ejb


表74-7にリストしたlogging.properties名において、<sessionname>はアプリケーションが稼働するセッションの名前です。たとえば、セッションの名前がMyApplicationである場合は、SQLロギング・プロパティにはoracle.toplink.MyApplication.sqlを使用します。

また、アプリケーションは、独自のネームスペースを定義し、そのネームスペースへのロギングAPIをロギング構成に定義することで、そのネームスペースにロギングAPIで書き込むこともできます。ロギングAPIがロギング構成に定義されていない場合は、メッセージは親のロギングAPI oracle.toplink.<sessionname>に書き込まれます。

CMPアプリケーションでのロギングの構成

CMPプロジェクトの場合は、セッションを直接構成する必要はありません。この場合は、次のいずれかの値にシステム・プロパティtoplink.log.destinationを構成することでロギング・タイプを指定します。

  • 完全修飾されたファイルの指定(C:\logs\toplink.logなど): TopLinkネイティブ・ロギングを使用して、指定されたファイルにログ・メッセージが書き込まれます。

  • JAVA: java.util.loggingパッケージを使用して、ログ・メッセージが<JRE_HOME>/lib/logging.propertiesファイルに構成した任意の宛先に書き込まれます。

  • SERVER: サーバー・ロギングを使用して、ログ・メッセージがアプリケーション・サーバーのログ・ファイルに書き込まれます(この場合、これとは別にTopLinkログ・ファイルが存在することはありません)。

  • SYSOUT: ログ・メッセージがSystem.outに書き込まれます。

TopLinkの標準(デフォルト)ロギングのログ・レベルは、toplink.log.levelシステム・プロパティを通じて設定できます。

その他のロギング・オプションを構成するには、customization-classを使用します(「pm-propertiesの構成」を参照)。

複数マッピング・プロジェクトの構成

各セッションは少なくとも1つのマッピング・プロジェクトに関連付けられています(「プライマリ・マッピング・プロジェクトの構成」を参照)。セッションに追加のTopLinkマッピング・プロジェクトを関連付けることができます。

表74-8では、どのセッションが追加のマッピング・プロジェクトの構成をサポートしているかを示します。

TopLink Workbenchの使用

セッション用に追加のTopLinkプロジェクトを指定するには、次の手順を実行します。

  1. ナビゲータでサーバーまたはデータベース・セッションを選択します。そのプロパティがエディタに表示されます。

  2. 「一般」タブをクリックします。「一般」タブが表示されます。

  3. 「プロジェクト」サブタブをクリックします。「プロジェクト」サブタブが表示されます。

    図74-4 「一般」タブ、「プロジェクト」サブタブ、「複数のプロジェクト」のオプション

    図74-4の説明が続きます
    「図74-4 「一般」タブ、「プロジェクト」サブタブ、「複数のプロジェクト」のオプション」の説明

  4. 「複数のプロジェクト」オプションを選択します。「複数のプロジェクト」サブタブが表示されます。

  5. 「複数のプロジェクト」サブタブをクリックします。

  6. 図74-5 「一般」タブ、「複数のプロジェクト」サブタブ

    図74-5の説明が続きます
    「図74-5 「一般」タブ、「複数のプロジェクト」サブタブ」の説明

このセッションに追加のマッピング・プロジェクトを追加するには、「追加」をクリックします。詳細は、「プライマリ・マッピング・プロジェクトの構成」を参照してください。

TopLinkのマッピング・プロジェクトを削除するには、プロジェクト・ファイルを選択して「削除」をクリックします。

Javaの使用

Javaを使用する場合は、表74-9に示すDatabaseSession APIを使用して、セッションに複数のプロジェクトのディスクリプタを登録できます。ディスクリプタはログイン前に登録できますが、プライマリでないプロジェクトのディスクリプタのセットはログイン後に追加できます。

表74-9 ディスクリプタ登録用のDatabaseSession API

セッション・メソッド 説明

addDescriptors(Project)

プロジェクトの形式でディスクリプタをセッションに追加します。

addDescriptors(Vector)

プロジェクトの形式で個別のディスクリプタ・ファイルのVectorをセッションに追加します。

addDescriptor(Descriptor)

セッションに個々のディスクリプタを追加します。


パフォーマンス・プロファイラの構成

TopLinkアプリケーションのパフォーマンス向上を期すには、最適化の前と後にパフォーマンスを測定する必要があります。TopLinkでは、様々な組込みのパフォーマンス測定機能(プロファイラとも呼ぶ)を備えており、これらはセッション・レベルで構成できます。

表74-10に、どのセッションがパフォーマンス・プロファイラの構成をサポートしているかを示します。

TopLinkには、次のプロファイラが用意されています。

TopLink Workbenchの使用

セッションにプロファイラのタイプを指定するには、次の手順を実行します。

  1. ナビゲータでセッションを選択します。そのプロパティがエディタに表示されます。

  2. 「オプション」タブをクリックします。「オプション」タブが表示されます。

    図74-6 「オプション」タブ、「プロファイラ」のオプション

    図74-6の説明が続きます
    「図74-6 「オプション」タブ、「プロファイラ」のオプション」の説明

次の情報を参照し、このセッションで使用するプロファイラのオプションを選択します。

オプション 説明
プロファイラなし すべてのプロファイリングを無効にします。
DMS Oracle Dynamic Monitoring System(DMS)によるプロファイリングを有効にします。詳細は、次を参照してください。
標準(TopLink) TopLinkによるプロファイリングを有効にします。詳細は、次を参照してください。

Javaの使用

Javaを使用して、セッション・メソッドsetProfilerを使用したプロファイラにより、セッションを構成できます(例74-5を参照)。

例74-5 TopLinkプロファイラを使用したセッションの構成

session.setProfiler(new PerformanceProfiler());

プロファイリング・セッションを終了するには、セッション・メソッドclearProfilerを使用します。

例外ハンドラの構成

各セッションに1つの例外処理クラスを関連付けできます。このクラスは、oracle.toplink.exceptions.ExceptionHandlerインタフェースを実装する必要があります。

表74-11に、どのセッションが例外ハンドラの構成をサポートしているかを示します。

例外ハンドラ実装の例については、「Javaの使用」を参照してください。

詳細は、「例外ハンドラ」を参照してください。

TopLink Workbenchの使用

セッションに例外ハンドラ・クラスを指定するには、次の手順を実行します。

  1. ナビゲータでセッションを選択します。そのプロパティがエディタに表示されます。

  2. 「オプション」タブをクリックします。「オプション」タブが表示されます。

    図74-7 「オプション」タブ、「例外ハンドラ」フィールド

    図74-7の説明が続きます
    「図74-7 「オプション」タブ、「例外ハンドラ」フィールド」の説明

「参照」をクリックし、このセッションに対して例外ハンドラ・クラスを選択します。

Javaの使用

例74-6に、例外ハンドラの実装例を示します。この実装では、例外ハンドラは、接続がピアによってリセットされた場合は必ず接続を再確立しようとしますが、問合せがReadQueryのインスタンスである場合はその問合せを再試行するのみです。この例外ハンドラは、再実行されたReadQueryの結果を返すか、例外をスローします。

例74-6 例外ハンドラの実装

session.setExceptionHandler(
  new ExceptionHandler()
  {
    public Object handleException(RuntimeException exception)
    {
      if (exception instanceof DatabaseException)
      {
        DatabaseException dbex = (DatabaseException) exception;
        if ((dbex.getInternalException() instanceof SQLException) &&
           (((SQLException) dbex.getInternalException()).getErrorCode() == MyDriver.CONNECTION_RESET_BY_PEER))
        {
           dbex.getAccessor().reestablishConnection(dbex.getSession());
           if (dbex.getQuery() instanceof ReadQuery)
           {
             return dbex.getSession().executeQuery(dbex.getQuery());
           }
           throw exception;
        }
      }
      throw exception;
    }
  }
);


注意:

未処理例外は、例外ハンドラ・コードにより新たにスローする必要があります。

カスタマイザ・クラスの構成

セッション・カスタマイザ・クラスはJavaクラスで、oracle.toplink.tools.sessionconfiguration.SessionCustomizerインタフェースを実装し、デフォルト(ゼロ引数)コンストラクタを備えています。セッション・カスタマイザを使用すると、ログインが行われる前にロード済だったセッションに基づいて、別のセッションを実行時にカスタマイズできます。その方法は修正メソッドを使用してディスクリプタをカスタマイズする方法と似ています(「修正メソッドの構成」を参照)。たとえば、セッション・カスタマイザ・クラスを使用すると、セッション・イベント・リスナーを定義してセッション・イベント・マネージャに登録できます(「セッション・イベント・リスナーの構成」を参照)。

表74-12では、どのセッションがカスタマイザ・クラスの構成をサポートしているかを示します。

詳細は、「セッションのカスタマイズ」を参照してください。

TopLink Workbenchの使用

セッションにセッション・カスタマイザ・クラスを指定するには、次の手順を実行します。

  1. ナビゲータでセッションを選択します。そのプロパティがエディタに表示されます。

  2. 「オプション」タブをクリックします。「オプション」タブが表示されます。

    図74-8 「オプション」タブ、「セッション・カスタマイザ・クラス」フィールド

    図74-8の説明が続きます
    「図74-8 「オプション」タブ、「セッション・カスタマイザ・クラス」フィールド」の説明

「参照」をクリックし、このセッションに対してカスタマイザ・クラスを選択します。

サーバー・プラットフォームの構成

TopLinkサーバー・プラットフォームでは、セッションとJ2EEサーバーをどのように統合するか、その方法を定義します。方法には次のものがあります。

表74-13では、どのセッションがサーバー・プラットフォームをサポートしているかを示します。

セッションと関連付けたプライマリ・マッピング・プロジェクトに、永続性タイプとしてBean管理の永続性(BMP)またはJavaオブジェクトのいずれかのデータがある場合は、TopLink Workbenchを使用してサーバー・プラットフォームを構成できます。プライマリ・マッピング・プロジェクトの詳細は、「プライマリ・マッピング・プロジェクトの構成」を参照してください。

セッションと関連付けたプライマリ・マッピング・プロジェクトに、コンテナ管理の永続性(CMP)の永続性タイプを持つデータがある場合、TopLinkランタイムでは、デフォルトで、デプロイ先のアプリケーション・サーバーに対応するように自動的にサーバー・プラットフォームが構成されます。

TopLink Workbenchの使用

セッションにサーバー・プラットフォームのオプションを指定するには、次の手順を実行します。

  1. ナビゲータでセッションを選択します。そのプロパティがエディタに表示されます。

  2. 「一般」タブをクリックします。「一般」タブが表示されます。

  3. 「サーバー・プラットフォーム」サブタブをクリックします。「サーバー・プラットフォーム」サブタブが表示されます。

    図74-9 「一般」タブ、「サーバー・プラットフォーム」サブタブ

    図74-9の説明が続きます
    「図74-9 「一般」タブ、「サーバー・プラットフォーム」サブタブ」の説明

次の情報を参照し、「サーバー・プラットフォーム」サブタブの各フィールドにデータを入力します。

フィールド 説明
サーバー・プラットフォーム アプリケーションをJ2EEアプリケーション・サーバーにデプロイする予定の場合、このフィールドを選択します。

このフィールドを選択した場合、「プラットフォーム」を選択してターゲット・アプリケーション・サーバーを構成する必要があります。

プラットフォーム アプリケーションをデプロイするJ2EEアプリケーション・サーバーを選択します。

TopLinkでは、次のJ2EEアプリケーション・サーバーがサポートされます。

  • OC4J 10.1.3

  • OC4J 10.1.2

  • OC4J 9.0.4

  • OC4J 9.0.3

  • WebLogic 8.1

  • WebLogic 7.0

  • WebLogic 6.1

  • WebSphere 6.0

  • WebSphere 5.1

  • WebSphere 5.0

  • WebSphere 4.0

  • カスタム

サポートされるアプリケーション・サーバーのバージョン、構成要件の詳細は、「TopLinkとアプリケーション・サーバーの統合」を参照してください。

独自のoracle.toplink.platform.server.ServerPlatformクラスを作成して、現在TopLinkでサポートされていないアプリケーション・サーバーを使用したり既存のServerPlatformをオーバーライドする場合は、「カスタム」を選択します。「カスタム」を選択した場合は、「サーバー・プラットフォーム・クラス」を選択してカスタムServerPlatformクラスを指定する必要があります。

選択されたサーバー・プラットフォームは、セッション構成レベルで設定されたデフォルトのサーバー・プラットフォームをオーバーライドします(「セッション構成の作成」を参照)。

ランタイム・サービスを有効にする このフィールドを選択すると、TopLinkセッションの監視を可能にするJMX-MBeanのデプロイを有効にするようにTopLinkランタイムが構成されます。これは、現在OC4Jに対してのみサポートされています。

この機能を使用するには、DMSデータ収集を有効にする必要があります。詳細は、「Oracle DMSプロファイラの構成」を参照してください。

外部トランザクション・コントローラを有効にする(JTA) アプリケーションと外部トランザクション・コントローラを統合するには、このフィールドを選択します。詳細は、「作業ユニット・トランザクション境界」を参照してください。

TopLinkでサポートされているJ2EEアプリケーション・サーバーを 「プラットフォーム」に構成した場合は、必要な外部トランザクション・コントローラ・クラスが自動的に選択されます。

「プラットフォーム」「カスタム」に構成した場合は、「外部トランザクション・コントローラを有効にする(JTA)」を選択してトランザクション・コントローラ・クラスを指定する必要があります。

サーバー・プラットフォーム・クラス このオプションは、「プラットフォーム」「カスタム」に構成した場合にのみ使用可能になります。

カスタムServerPlatformクラスを選択する場合は、「参照」をクリックします。

トランザクション・コントローラ・クラス(JTA) このオプションは、「プラットフォーム」「カスタム」に構成した場合にのみ使用可能になります。

「外部トランザクション・コントローラを有効にする(JTA)」を選択した場合は、「参照」をクリックして、カスタムServerPlatformクラスに対応するトランザクション・コントローラ・クラスを選択してください。


Javaの使用

Javaを使用する場合は、セッションをサーバー・プラットフォーム・コンストラクタに渡す必要があります。例74-7に、セッション・イベント・リスナーを使用して、oracle.toplink.platform.serverパッケージに含まれるサーバー・プラットフォームでセッションを構成する例を示します(「セッション・イベント・リスナーの構成」を参照)。

例74-7 サーバー・プラットフォームでのセッションの構成

public void preLogin(SessionEvent event) {
  Server server = (Server) event.getSession();
  server.setServerPlatform(new Oc4j_10_1_3_Platform((DatabaseSession) server));
  }

セッション・イベント・リスナーの構成

セッションで永続性操作を実行すると、セッションでは様々なイベントが生成されます(「セッション・イベント・マネージャのイベント」を参照)。TopLinkランタイムではその各種コンポーネント間の調整を行うため、これらのイベントを使用します。1つ以上のセッション・イベント・リスナー(「セッション・イベント・リスナー」を参照)でセッションを構成することで、セッションの動作をカスタマイズしたりセッションの操作をデバッグできます。たとえば、セッション・イベント・リスナーは、独立セッションの構成で重要な役割を果します(「Virtual Private Database用の排他独立クライアント・セッションの構成」を参照)。

表74-14では、どのセッションがイベント・リスナーをサポートしているかを示します。

TopLink Workbenchの使用

セッション・イベント・リスナー

セッションにイベント・リスナーを指定するには、次の手順を実行します。

  1. ナビゲータでセッションを選択します。そのプロパティがエディタに表示されます。

  2. 「オプション」タブをクリックします。「オプション」タブが表示されます。

    図74-10 「オプション」タブ、「イベント・リスナー」フィールド

    図74-10の説明が続きます
    「図74-10 「オプション」タブ、「イベント・リスナー」フィールド」の説明

新しいイベント・リスナーを追加するには、「追加」をクリックして、このセッション用のイベント・リスナー・クラスを選択します。

既存のイベント・リスナーを削除するには、「イベント・リスナー」から選択して「削除」をクリックします。

Javaの使用

例74-8に、Javaを使用してセッション・イベント・リスナーをセッションに登録する方法を示します。TopLinkには、SessionEventListenerを簡単に作成できるSessionEventAdapterが用意されています。SessionEventAdapterには、SessionEventListenerインタフェースのすべてのメソッドのデフォルトの実装が搭載されています。使用する特定のメソッドをオーバーライドするだけで済みます。通常は、セッション・イベント・リスナーは、セッション・カスタマイザ・クラスに定義します(「カスタマイザ・クラスの構成」を参照)。

例74-8 セッション・イベント・アダプタを使用したセッション・イベント・リスナーの作成

...
SessionEventAdapter myEventListener = new SessionEventAdapter() {
    // Listen for PostCommitUnitOfWork events
    public void postCommitUnitOfWork(SessionEvent event) {
        // Call the handler routine
        unitOfWorkCommitted();
    }
};
mySession.getEventManager().addListener(myEventListener);
...

リスナーにロギングを追加する方法の詳細は、「ロギング」を参照してください。

整合性チェッカの構成

セッションにログインすると、TopLinkでは登録されたディスクリプタを初期化して検証します。整合性チェッカを構成することにより、この検証プロセスをカスタマイズして次の処理が実行されるようにすることができます。

表74-15では、どのセッションがディスクリプタの整合性チェック構成をサポートしているかを示します。

表74-15 セッションでのディスクリプタの整合性チェックのサポート

セッション TopLink Workbenchの使用 Javaの使用

サーバーおよびクライアントのセッション


サポートされていない

サポートされている


セッション・ブローカおよびクライアント・セッション


サポートされていない

サポートされている


データベース・セッション


サポートされていない

サポートされている



データベースのチェック

IntegrityCheckerメソッドsetShouldCheckDatabaseは、整合性チェッカがディスクリプタのメタデータをデータベースのメタデータと照合するかどうかを指定します。これにより、ディスクリプタに指定されている表やフィールドの欠落または不正によるエラーがあれば報告されます。このチェックがセッションの接続時に大きなオーバーヘッドとなる場合には、このチェックはデフォルトでオフになります。

すべての例外を捕捉

デフォルトでは、整合性チェッカは初期化中に発生した例外をすべて捕捉し、初期化の終了時には、検出されたエラーのすべてを報告する単一の例外をスローします。最初の例外の検出のみが必要な場合は、IntegrityCheckerメソッドsetShouldCatchExceptions(false)を使用してこの機能を無効にできます。

インスタンス化ポリシー例外を捕捉

デフォルトでは、整合性チェッカは、セッションで初期化された各ディスクリプタに対して、デフォルトまたは構成済のコンストラクタをテストします。この機能を無効にするには、IntegrityCheckerメソッドsetShouldCheckInstantiationPolicy(false)を使用します。

Javaの使用

例74-9に示すように、整合性チェッカの検証プロセスを構成することができます。

例74-9 整合性チェッカの構成

session.getIntegrityChecker().setShouldCheckDatabase(true);
session.getIntegrityChecker().setShouldCatchExceptions(false);
session.getIntegrityChecker().setShouldCheckInstantiationPolicy(false);
session.login();

接続ポリシーの構成

接続ポリシーを使用すると、TopLinkセッションでどのように読取りおよび書込み接続を取得して使用するかを制御できます。内容は次のとおりです。

表74-16では、どのセッションが接続ポリシーの構成をサポートしているかを示します。

排他書込み接続

排他接続は、クライアント・セッションのライフ・サイクル中に(分離データの)読取りと書込みを実行するためにTopLinkがクライアント・セッションに割り当てる接続です。

デフォルトでは、排他接続は使用されず、クライアント・セッションではすべての非ペシミスティック読取り問合せに対してサーバー・セッションの読取り接続プールが使用されます。接続は、読取り問合せの実行ごとに読取り接続プールから取得され、問合せの実行後にプールに戻されます。接続が書込み接続プールから取得されるのは、作業ユニットのコミット操作時のみです(または、データ変更問合せやペシミスティック・ロックを使用した読取り問合せが使用される場合には、より早く取得される可能性もあります)。作業ユニットがコミットまたは解放されると、接続は書込み接続プールに戻されます。排他接続は、データベース読取りセキュリティまたはVirtual Private Database(VPD)サポートと組み合せて使用する目的で提供されています。排他接続を使用する場合は、サーバー・セッションの書込み接続プールから排他接続を取得します。クライアント・セッションを取得する場合、排他接続は、独立クラスに対する読取り問合せ(「独立クライアント・セッション」を参照)、排他読取り問合せ、ペシミスティック読取り問合せ、および作業ユニットのコミット操作に使用されます。排他接続は、クライアント・セッションが解放された場合にのみ解放されます。TopLinkでは、非分離データの読取りについては引き続き読取り接続プールから共有接続を取得します。JTA管理の外部接続プールと排他接続を組み合せて使用する場合は、JTAトランザクション境界にまたがってクライアント・セッションを再利用しないでください。物理JTAデータベース接続は、JTAトランザクション・ライフ・サイクルを基準として接続プールから取得および解放されるためです。JTAトランザクションごとに、新規クライアント・セッション(アクティブな作業ユニット)を使用する必要があります。詳細は、「排他読取り接続の構成」を参照してください。

また、排他接続の構成は、クライアント・セッションごと(「排他接続を使用するクライアント・セッションの取得」を参照)や名前付き問合せに対して(「名前付き問合せの詳細オプションの構成」を参照)行うこともできます。


注意:

クライアント・セッションに排他接続が含まれる場合は、その使用を完了した後、セッションを解放する必要があります(「セッションからのログアウト」を参照)。セッションのガベージ・コレクション時、ファイナライザに依存して接続を解放すると、JTAトランザクションの処理時に、エラーが発生することがあります。

遅延接続の取得

クライアント・セッションで最初の作業ユニット・コミット操作、排他読取り問合せまたはペシミスティック読取り問合せを実行する際に、TopLinkではデフォルトで、書込み接続が遅延して取得されます。各作業ユニットがコミットまたは解放されると、書込み接続も解放されます。

別の方法として、クライアント・セッションの取得時に書込み接続を取得し、クライアント・セッションの解放時にその接続を解放するようTopLinkを構成できます。

あるいは、クライアント・セッションごとに遅延接続の取得を構成することもできます(「遅延接続割当てを使用しないクライアント・セッションの取得」を参照)。

TopLink Workbenchの使用

セッションに接続ポリシーを指定するには、次の手順を実行します。

  1. ナビゲータでセッションを選択します。そのプロパティがエディタに表示されます。

  2. 「接続ポリシー」タブをクリックします。「接続ポリシー」タブが表示されます。

    図74-11 「接続ポリシー」タブ

    図74-11の説明が続きます
    「図74-11 「接続ポリシー」タブ」の説明

Javaの使用

排他接続を特定の独立セッションに割り当てるかどうかを構成するには、ConnectionPolicyメソッドsetShouldUseExclusiveConnectionを使用します。

独立セッションのサポートに使用するプロパティのマップを定義するには、ConnectionPolicyの次のメソッドを使用します。

  • setProperty(Object key, Object value): プロパティvaluekeyの名前でマップに追加します。マップにkeyがすでに存在する場合は、既存の値を上書きします。

  • Object getProperty(Object key): keyの値をObjectとして返します。

  • boolean hasProperties: マップに1つ以上のプロパティが存在する場合は、trueを返します。そうでない場合はfalseを返します。

TopLinkランタイムではこのマップをSessionEventイベントのPostAcquireExclusiveConnectionおよびPreReleaseExclusiveConnectionに渡すため、実装では、基盤となるデータベース・プラットフォームへの適切なPL/SQLコールを行うことができます(「PostAcquireExclusiveConnectionイベント・ハンドラ」および「PreReleaseExclusiveConnectionイベント・ハンドラ」を参照)。

名前付き接続プールを使用するようにセッションを構成するには、引数としてString接続プール名をとるConnectionPoolコンストラクタを使用します。

Session clientSession = server.acquireClientSession(
    new ConnectionPolicy("myConnectionPool")
);

セッション・レベルでの名前付き問合せの構成

名前付き問合せとは、後から取得および実行できるように名前を付けて作成し、セッション内に格納する、TopLinkの問合せの一種です。名前付き問合せは、一度作成すると、基礎となる関連オブジェクトすべてとともに後で効率的に再利用できるため、頻繁に実行される操作に適しており、アプリケーションのパフォーマンスを向上させることができます。

プロジェクトにおいてグローバルな名前付き問合せは、セッション・レベルで構成します。または、名前付き問合せはディスクリプタ・レベルで構成することもできます(「ディスクリプタ・レベルでの名前付き問合せの構成」を参照)。

名前付き問合せでSQL、EJB QLまたはTopLinkの式問合せを指定して、データ・ソースにアクセスします。

表74-17に、どのセッションが名前付き問合せ構成をサポートしているかを示します。

作成した名前付き問合せは、後からTopLinkセッションで名前を指定して実行できます(「名前付き問合せの使用」を参照)。

名前付き問合せの詳細は、「名前付き問合せ」を参照してください。

Javaの使用

名前付き問合せをセッションに格納するには、セッション・メソッドaddQuery(String name, DatabaseQuery query)を使用します。