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
- FRAPI.setTransactionName
- Request attribute (fr.transaction.name)
- Supported Framework
- ColdFusion Page Name
- JSP Class Name
- Servlet init parameter (fr.transaction.name)
- Servlet Name
- Filter init parameter (fr.transaction.name)
- Filter Name
- 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> <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> <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.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.
FRAPI.getFRAPI().setTransactionName("Transaction Name");
<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.
@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 |