New Relic for Java には、特定のトランザクションを無視するための複数の方法が用意されています。このドキュメントでは、Java エージェント API アノテーションとServletRequest
を使用してトランザクションを無視する方法について説明します。
ignoreTransaction()
API 呼び出しとXML インストルメンテーション ファイルを使用してトランザクションを無視することもできます。
重要
トランザクションを無視すると、アプリケーションのソースコードが変更され、 XML インストゥルメント ファイルを使用する場合は常にアプリケーションが再コンパイルされます。 unless コードを操作できない場合は、XML を使用してトランザクションを無視します。
ServletRequestによるWebトランザクションの無視
Web トランザクションを無視するには、リクエスト中にcom.newrelic.agent.IGNORE
という名前のServletRequest
属性をtrue
に設定します。
request.setAttribute("com.newrelic.agent.IGNORE", true);
無視するURLを指定するには、その属性を設定するサーブレット フィルター を作成し、無視したいサーブレットにフィルターを適用します。特定のURLを無視する必要がある場合は、フィルタはリクエストURIにアクセスすることができます。
アノテーション付きのトランザクションを無視する
アノテーションを使ったトランザクションを無視するようにJavaエージェントに指示する。
アプリケーションのコードまたはアプリケーションと統合できるライブラリで、
NewRelicIgnoreTransaction
というアノテーションを定義します。@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface NewRelicIgnoreTransaction {}無視したいメソッドやクラスにアノテーションを適用します。例えば、以下のようになります。
@NewRelicIgnoreTransactionpublic void methodToBeIgnored() {}
トランザクションが@NewRelicIgnoreTransaction
アノテーションの付いたメソッドまたはクラスを呼び出した場合、そのトランザクションは無視されます。これは、全体的な Apdex スコアには寄与しないことを意味します。また、トランザクション追跡およびパフォーマンス データは報告されません。
apdexは無視するが、tracesは無視しない
また、トランザクションがApdexスコアに寄与しないようにしても、トランザクションに使用することができます。これにより、特に長いトランザクションがApdexスコアを歪めてしまうことを防ぐことができます。トランザクションがApdexのスコアに寄与しないようにするには。
アプリケーションのコードまたはアプリケーションと統合できるライブラリで、
NewRelicIgnoreApdex
というアノテーションを定義します。@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface NewRelicIgnoreApdex {}無視したいメソッドやクラスにアノテーションを適用します。例えば、以下のようになります。
@NewRelicIgnoreApdexpublic void ignoreApdexOfThisMethod() {}
トランザクションが@NewRelicIgnoreApdex
アノテーションの付いたメソッドまたはクラスを呼び出した場合、そのトランザクションは報告されますが、全体的な Apdex スコアには寄与しません。