ARM application properties and transaction context data

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.

 

ARM application properties

The following tables show the ARM application properties when request metrics initializes an ARM 4.0 agent.

Identity property names Value
Cell Name The cell name that the server belongs to.
Version The version of WebSphere Application Server.

Application Properties Value
Registered application name WebSphere:<server_type>

The <server_type> can be APPLICATION_SERVER, ONDEMAND_ROUTER, or PROXY_SERVER.

Application group <servername>
Application instance <node>.<servername>

The following code sample displays how WebSphere Application Server creates an ARM application

String serverType; // the server type like APPLICATION_SERVER
String version; // WebSphere version
String sCellName; // the cell name of dMgr
String sAppInstance. // <short_node>.<short_servername>
String sServerInstance; // short server name
String 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

Use the following code sample to create an instance of ARM transaction

String[] contextNames; // the names for the context data like Port, QueryString, URI, EJBName
String tranIdentityName; // the transaction types shown in the following table like URI, EJB.
String appDef; // defined and created in above code snippet under ARM application properties
String app; // defined and created in above code snippet under ARM application properties
ArmIdentityPropertiesTransaction 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.

Uniform resource identifier (URI)

This transaction type is the uniform resource identifier (URI) for servlet and JavaServer Page (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: 9080

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

Enterprise Java Bean (EJB)

This EJB transaction type and context names are only available in application servers.

Transaction Type: EJB
Context name Description
EJB name The fully qualified Enterprise Java™ Bean (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

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 application servers.

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 application servers.

Transaction type: Web Services Requestor
Context name Description
WsdlPort The Web Services Description Language (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

Java Message Service (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 application servers.

Transaction type: JMS
Context name Description
DestinationName The destination queue name or topic name for the Java Message Service (JMS).

Example: MyBusiness.Topic.Space

BusName The service integration bus name for the JMS.
MethodSelector The method selector for JMS.
MdbDiscriminator The MDB discriminator.
Topic The topic name.

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

 

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 application server 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