FusionReactor Observability & APM

Troubleshoot

Blog / Info

Customers

About Us

Installation

Configure

Troubleshoot

Blog / Info

Customers

About Us

[FRS-368] Transaction Naming

In FusionReactor 6.0.0 we have added the ability to name the transaction for each web request. This feature allows for a greater easy of identifying requests, and grouping similar requests together. There are many different ways to name the transaction and FusionReactor will automatically try all options, however there is a priority order.

Naming Priority

  1. FRAPI.setTransactionName
  2. Request attribute (fr.transaction.name)
  3. Supported Framework
  4. ColdFusion Page Name
  5. JSP Class Name
  6. Servlet init parameter (fr.transaction.name)
  7. Servlet Name
  8. Filter init parameter (fr.transaction.name)
  9. Filter Name
  10. The Default Transaction Name

Default Name

In the event that FusionReactor is unable to detect the name of the transaction via any of the options above (or if the automatic transaction naming is disabled), it will default to name set as the default. This is set in the FusionReactor -> Settings page (http://docs.intergral.com/display/FR60/Settings).

Manual Naming


If you want to override the automatic naming detected by FusionReactor you can set the name for the transaction using request attributes of parameters at different levels (filter and servlet). In all cases the key used is fr.transaction.name.

Filter Parameter

To set the transaction name used by FusionReactor as a filter init parameter, edit the filter configuration and add the property fr.transaction.name with the value being the name of the transaction. This can be done via the web.xml adding the parameter to the filter definition.

Filter Init Parameter
<filter>
    <filter-name>Filter3</filter-name>
    <filter-class>com.intergral.test.fusionreactor.filters.Filter3</filter-class>
    <init-param>
        <param-name>fr.transaction.name</param-name>
        <param-value>Transaction Name</param-value>
    </init-param>
</filter>

Servlet Parameter

Similar to the filter parameter settings you can set the transaction name for FusionReactor to use as a servlet init parameter. This is also done via the web.xml file.

Servlet Init Parameter
<servlet>
    <servlet-name>Servlet2</servlet-name>
    <servlet-class>com.intergral.fusionreactor.servlets.Servlet2</servlet-class>
    <init-param>
        <param-name>fr.transaction.name</param-name>
        <param-value>Transaction Name</param-value>
    </init-param>
</servlet>

Request Attribute

To set the transaction name with a request attribute simply add the attribute to the request object. FusionReactor will then use this attribute as the transaction name when the request is complete. This approach will only affect the requests where this attribute is set.

Request Attribute
    request.setAttribute("fr.transaction.name", "Transaction Name");

FRAPI Call

To set the transaction name with the FusionReactor API (FRAPI) you simply need to call the appropriate method within your code. This method of setting the transaction name takes precedence over all other methods, however it will only affect the single request where this method is called.

Java FRAPI Call
    FRAPI.getFRAPI().setTransactionName("Transaction Name");
ColdFusion FRAPI Call
<cftry>
   <cfset frapi = createObject("java", "com.intergral.fusionreactor.api.FRAPI").getInstance()> 
   <cfset FRAPI.setTransactionName("Transaction Name")>
   <cfcatch/>
</cftry>

Automatic Naming


FusionReactor will automatically name transactions using a few different ways, FusionReactor will try all of these methods without needing any additional settings.

Supported Framework

In FusionReactor 6.0.0 we have added instrumentation for several Java Frameworks (Spring, Structs2 etc..). If you are using one of these frameworks, then FusionReactor will take the framework level name for the action being taken. For example in Spring a request matching a @RequestMapping annotation will take the name of the method as the transaction name.

Request Mapping Example
    @RequestMapping("/home")
    public String showHome()
    {
        return "static/home";
    }

ColdFusion Page Name / JSP Class Name

If you are not using a framework that is not yet supported by FusionReactor, then FusionReactor will use the name of the page of JSP class as the transaction name.

Servlet Name

If you are using servlets to serve your requests and do not use JSP pages or a supported framework. FusionReactor will use the name of the servlet as the transaction name. Unless you have defined the transaction name via the servlet init parameter.

Filter Name

If you are using filters to serve your requests and do not use JSP pages or a supported framework. FusionReactor will use the name of the filter as the transaction name. Unless you have defined the transaction name via the filter init parameter.


Issue Details

Type Technote
Issue Number FRS-368
Components FRAPI
Resolution Fixed
Last Updated 2019-11-25T12:07:26.141+0000
Fix Version(s) 6.0.0