ARM application properties and transaction context data
ARM application properties
Request metrics provides build-in instrumentation to monitor transaction flows. The data that is collected by request metrics can be sent to a supported Application Response Measurement (ARM) agent.
Identity property names and value
Identity property names Value Cell name The cell name that the server belongs to. WAS Version The version of WAS.
Application properties and value
Application properties Value Registered application name WebSphere:server_type Where server_type can be...
- APPLICATION_SERVER
- ONDEMAND_ROUTER
- PROXY_SERVER
Application group servername Application instance nodename.servername
The following code sample displays how WAS creates an ARM application.
String serverType; // Server type. i.e. APPLICATION_SERVER String version; // WebSphere version String sCellName; // cell name of dmgr String sAppInstance. // short_nodename.short_servername String sServerInstance; // short server nameString sWasName = "WebSphere:" + serverType;
String[] IDNAMES = new String[]{"Cell Name", "Version"};
ArmIdentityProperties appIdentity = txFactory.newArmIdentityProperties(IDNAMES, new String[]{sCellName, version}, null);
ArmApplicationDefinition appDef = txFactory.newArmApplicationDefinition( sWasName, appIdentity, null );
ArmApplication app = txFactory.newArmApplication(appDef, sServerInstance, sAppInstance, null );
ARM transaction types
To create an instance of ARM transaction.
String[] contextNames; // Names for the context data like Port, QueryString, URI, EJBName String tranIdentityName; // Transaction types shown in the following table like URI, EJB. String appDef; // Created in above code snippet under ARM application properties String app; // Created in above code snippet under ARM application propertiesArmIdentityPropertiesTransaction props = armFactory.newArmIdentityPropertiesTransaction( null, null, contextNames, null ); ArmTransactionDefinition atd = armFactory.newArmTransactionDefinition(appDef, identityName, props, (ArmID)null); ArmTransaction at = txFactory.newArmTransaction(app, atd );
The sections below show all ARM transaction types and their corresponding context names. Some types of transactions are not instrumented unless the trace level is set to DEBUG. In addition, not every transaction is available in all types of servers. All transaction types and context names are case sensitive.
- URI
- EJBs
- Servlet filter
- JDBC
- Java Connector Architecture (JCA)
- Web Services Provider
- Web Services Requestor
- JMS
- JMS send and receive
- Service Integration Bus (SIB) send and receive
- SIB MDB
- SIB mediate
- Asynchronous beans
- JNDI
- Portlet
URI
This transaction type is the uniform resource identifier (URI) for servlet and JSP requests. All of the following transaction types and context names are available in all types of servers.
Transaction type: URI
Context name Description Port The TCP/IP port where the request arrived, specified as a string representation of the decimal value. Example: 9082
QueryString The portion of the dynamic URI that contains the search parameters of the request in the query segment of the URI string, excluding the question mark (?) character. Example: selection=EJB&lookup=GBL&trans=CMT
URI The incoming request URI of the servlet and JSP file used. Example: /hitcount
EJBs
This EJB transaction type and context names are only available in appservers.
Transaction Type: EJB Context name Description EJBName The fully qualified EJB class name, followed by method name with a period (.) to connect them. For example, com.mypackge.MyEJBClass.mymethod. Example: com.ibm.defaultapplication.IncrementBean.create
ApplicationName The J2EE application name that contains the enterprise bean. Example: DefaultApplication
ModuleName The J2EE module name that contains the enterprise bean. Example: Increment.jar
Servlet filter
The servlet filter transaction type is only available at the DEBUG trace level. For other levels, servlet filters are not instrumented. This transaction type and context names are only available in appservers.
Transaction Type: Servlet filter Context name Description FilterName The servlet filter name for the servlet. Example: ALoginFilter
JDBC
The JDBC transaction type is only available at the DEBUG trace level. For other levels, JDBC is a block call. This transaction type and context names are only available in appservers.
Transaction type: JDBC Context name Description ClassName The interface name for the JDBC call. This name is not the actual class name. Example: java.sql.PreparedStatement
MethodName The method name for the JDBC call. Example: executeUpdate()
Java Connector Architecture (JCA)
The JCA transaction type is available only at the DEBUG trace level. For other levels, JCA is a block call. This transaction type and context names are only available in appservers.
Transaction type: JCA Context name Description ClassName The class name for the JCA call. Example: javax.resource.spi.ManagedConnection
MethodName The method name for the JCA call. Example: getConnection(Subject, ConnectionRequestInfo)
Web Services Provider
The Web services provider transaction type is for server-side Web services requests. This transaction type and the Wsdlport and Operation context names are available in all types of servers. The Transport, NameSpace, and InputMessage context names are only available in appservers.
Transaction type: Web Services Provider Context name Description WsdlPort The WSDL port name that is associated with the Web service. Example: AccountManager
Operation The operation name that is associated with the Web service. Example: createNewAccount
Transport The transport name that is associated with the Web service. Example: http
NameSpace The name space that is associated with the Web service. Example: http://accountmanager.mycorp.com
InputMessage The input message name that is associated with the Web service. Example: createNewAccountRequest
Web Services Requestor
The Web services requestor transaction type is available only at DEBUG trace level. For other levels, Web services requestor is a block call. This transaction type and context names are only available in appservers.
Transaction type: Web Services Requestor Context name Description WsdlPort The WSDL port name that is associated with the Web service. Example: AccountManager
Operation The operation name that is associated with the Web service. Example: createNewAccount
Transport The transport name that is associated with the Web service. Example: http
Parameters The parameters for the Web service request. Example: customerName,addressStreet,addressCity,addressState,addressZip
JMS
The JMS transaction type is only for message-driven bean (MDB) scenarios in default messaging, including the System Integration Bus (SIB) layer and MQ. This transaction type and context names are only available in appservers.
Transaction type: JMS Context name Description DestinationName The destination queue name or topic name for the JMS. Example: MyBusiness.Topic.Space
MessageSelector The message selector for JMS. Provider Provider refers to either default messaging, SIB, or MQ. Example: Default Messaging
JMS send and receive
The JMS send and receive transaction type is only available at the DEBUG trace level. For other levels, JMS send and receive is a block call. This transaction type and context names are only available in appservers.
Transaction type: JMS send/receive Context name Description ClassName The class name in the JMS provider that makes the call. Example: com.ibm.ws.sib.api.jms.impl.JmsTopicPublisherImpl
MethodName The method name in the JMS provider that makes the call. Example: sendMessage
Service Integration Bus (SIB) send and receive
The SIB send and receive transaction type is only available at the DEBUG trace level. For other levels, SIB send and receive is a block call. This transaction type and context names are only available in appservers.
Transaction type: SIB send/receive. Context name Description ClassName The class name in the SIB layer that makes the call. Example: com.ibm.ws.sib.processor.impl.ProducerSessionImpl
MethodName The method name in the SIB layer that makes the call. Example: send
BusName The name of the Service Integration Bus that this call is made on. DestinationName The name of the Service Integration Destination that this call is made on.
SIB message-driven bean (MDB)
The SIB MDB transaction type is only available in appservers.
Transaction type: SIB MDB. Context name Description BusName The name of the SIB that the Destination the MDB is listening on is located. DestinationName The name of the SIB that this MDB is listening too. MessageSelector The message selector used by this MDB. MdbDiscriminator The Discriminator used by this MDB. Provider The type of provider that this MDB is for. Example: Default Messaging or SIB
SIB mediate
The SIB mediation transaction type and context names are only available in appservers.
Transaction type: SIB mediate Context name Description ClassName The class name in which the call is made. MethodName The method name in which the call is made. MediationName The mediation name for the JMS. Example: myMediation
BusName The service integration bus name for the JMS. Example: thisBusName
DestinationName The destination name for the JMS. Example: myMessageQueue
Asynchronous beans
The asynchronous beans transaction type is for asynchronous beans timers, alerts, and deferred starts. This transaction type and context names are only available in application servers.
Transaction type: Asynchronous beans Context name Description Type The type of asynchronous beans task. Example: COMMONJ_TIMER
ClassName The class name that executes the asynchronous beans task. Example: com.mycorp.MyTaskClass
JNDI
The JNDI transaction type is only available at DEBUG trace level. For other trace levels, JNDI calls will not be instrumented. This transaction type and context names are only available in appservers.
Transaction type: JNDI Context name Description JNDIName The JNDI lookup name. Example: ejbJndiName
Portlet
The portlet transaction type is and context names are only available in appservers.
Transaction type: Portlet
Transaction type: Portlet Context name Description Method The method of the portlet that is currently utilized, which can be either action or render. WindowID The window identifier of the portlet that is currently utilized. URI. This is an ARM transaction context property name, and not to be confused with the explicit ARM transaction URI property as specified on WebSphere servlet transactions, and in particular not to be confused with the Enterprise Workload Manager (EWLM) "EWLM: URI" policy filter.
The context path of the current portlet request.
ARM correlators via HTTP and SOAP protocols
For HTTP inbound, WAS checks the case sensitive HTTP header - ARM_CORRELATOR - for the incoming ARM correlator. The appserver does not allow the flow of ARM correlators via HTTP outbound.
For SOAP inbound, WAS checks the SOAP header for an element as follows:
- element ="arm_correlator";
- namespace URI = "http://websphere.ibm.com",
- prefix = "reqmetrics";
- actor URI = "reqmetricsURI";
For SOAP outbound, WAS creates a new SOAP header and passes the ARM correlator string as a text node in the header. For example:
- element ="arm_correlator";
- namespace URI = http://websphere.ibm.com,
- prefix = "reqmetrics";
- actor URI = "reqmetricsURI";
The following is an example SOAP header with an ARM correlator. Note that the ARM correlator must be passed in hex string format of the ARM correlator byte array despite whether HTTP or SOAP protocol is used.
<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <reqmetrics:arm_correlator soapenv:actor="reqmetricsURI" xmlns:reqmetrics="http://websphere.ibm.com"> 37000000000000000000 </reqmetrics:arm_correlator> </soapenv:Header>
Related concepts
Application Response Measurement
Request metric extension
Related tasks
Getting performance data from request metrics