packagePrefixExclusions プロパティー

スタック・トレースに含めない Java™ パッケージのドメインとサブドメインの、縦線で区切られたリストを指定します。

stackTraceDepth プロパティーを packagePrefixExclusions プロパティーとともに使用した場合、pureQuery は stackTraceDepth を無視します。

デフォルト値はありません。 このプロパティーは、ステートメントのキャプチャー時にのみ使用できます。

例えば、IBM® 製品やその他のアプリケーションに含まれる Java パッケージに関する項目を除外するとよいでしょう。IBM の Java パッケージには、先頭に com.ibm が付いています。他のアプリケーション用の Java パッケージはすべて、com.other で始まる名前にしておくと良いでしょう。次のようにフィルター処理を行うことができます。
com.ibm|com.other
packagePrefixExclusions では、暗黙的にも明示的にもワイルドカードは使用できません。例えば、com.ibm で始まるパッケージを除外するフィルター処理として、次のどちらの項目も無効です。
  • Implicit wildcard
    com.i
  • Explicit wildcard
    com.i*

クライアント最適化に関するプロパティーの設定方法で説明されているように、このプロパティーはローカルでもリモートでも設定できます。このプロパティーを pdq.properties ファイルで設定する場合、このプロパティーの値は、pdq.properties ファイルを参照するアプリケーション内のすべての pureQueryXML ファイルに適用されます。このプロパティーを JVM システム・プロパティーとして設定した場合、値は、java コマンドで開始するアプリケーション内のすべての pureQueryXML ファイルに適用されます。

インクリメンタル・キャプチャーを実行している場合: ステートメントのキャプチャー後に packagePrefixExclusions の値を変更すると、以降のキャプチャー処理で、pureQuery は既存のスタック・トレースと新しいスタック・トレースを比較します。packagePrefixExclusions を変更したことに起因する新しいスタック・トレースが既存のスタック・トレースの一部である場合、pureQuery は新しいスタック・トレースをキャプチャーしません。

例:

例えば、packagePrefixExclusions が Test2 に設定された状態で pureQuery がキャプチャーしたスタック・トレースが次のようになっているとします。

<trace>
	<traceEntry classFile="myClass" containingPkg="com.myPackage" fileName="Unknown Source" isNative="false" lineNo="" method="addBatch"/>
	<traceEntry classFile="jas114962" containingPkg="Test4" fileName="jas114962.java" isNative="false" lineNo="127" method="funaddbatch1"/>
	<traceEntry classFile="jas114962" containingPkg="Test4" fileName="jas114962.java" isNative="false" lineNo="117" method="funaddbatch_new"/>
	<traceEntry classFile="jas114962" containingPkg="Test3" fileName="jas114962.java" isNative="false" lineNo="118" method="funaddbatch_new"/>       
</trace>

ここで、次のように packagePrefixExclusions を Test4 が含まれる値に変更したとします。Test2|Test4

この場合、インクリメンタル・キャプチャーを実行し、同じ SQL ステートメントを実行すると、次のようなスタック・トレースが得られます。

<trace>
	<traceEntry classFile="myClass" containingPkg="com.myPackage" fileName="Unknown Source" isNative="false" lineNo="" method="addBatch"/>
	<traceEntry classFile="jas114962" containingPkg="Test3" fileName="jas114962.java" isNative="false" lineNo="118" method="funaddbatch_new"/>
</trace>

ただし、pureQuery ではこの新しいスタック・トレースはキャプチャーされません。代わりに、pureQuery は前のスタック・トレースを保持します。これは、新しいスタック・トレース全体が元のスタック・トレースの一部であるためです。

また、packagePrefixExclusion の値を Test4 に変更した場合は、次のようなスタック・トレースが得られます。

<trace>
	<traceEntry classFile="myClass" containingPkg="com.myPackage" fileName="Unknown Source" isNative="false" lineNo="" method="addBatch"/
	<traceEntry classFile="jas114962" containingPkg="Test3" fileName="jas114962.java" isNative="false" lineNo="118" method="funaddbatch_new"/>
	<traceEntry classFile="jas892832" containingPkg="Test2" fileName="jasmanoj.java" isNative="false" lineNo="114" method="funaddbatch"/>
	<traceEntry classFile="jas892832" containingPkg="Test2" fileName="jasmanoj.java" isNative="false" lineNo="91" method="main"/>
</trace>

この場合は、新しいスタック・トレースが元のスタック・トレースの一部ではないため、pureQuery は新しいスタック・トレースを記録します。


フィードバック