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 | <server_name> |
Application instance | <node_name>.<server_name> |
The following code sample displays how WebSphere Application Server creates an ARM application.
String serverType; // the server type like APPLICATION_SERVER
String version; // product version
String sCellName; // the cell name of dMgr
String sAppInstance. // <short_node_name>.<short_server_name>
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
You can 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 the previous code snippet under ARM application properties
String app; // defined and created in the previous 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 );
- Uniform resource identifier (URI)
- Enterprise JavaBeans (EJB)
- Servlet filter
- Java Database Connectivity (JDBC)
- Java EE Connector Architecture (JCA)
- Web Services Provider
- Web Services Requestor
- Java Message Service (JMS)
- JMS send and receive
- Service Integration Bus (SIB) send and receive
- SIB MDB
- SIB mediate
- Asynchronous beans
- Java Naming and Directory Interface (JNDI)
- Portlet
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 |
URI | The incoming request URI of the servlet and
JSP file used. Example: /hitcount |
Enterprise JavaBeans (EJB)
This EJB transaction type and context names are only available in application servers.
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 Java™ 2 Platform, Enterprise Edition
(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 application servers.
Transaction Type: Servlet filter | |
---|---|
Context name | Description |
FilterName | The servlet filter name for the servlet. Example: ALoginFilter |
Java Database Connectivity (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 application servers.
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 EE 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 application servers.
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 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 |
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 application servers.
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 application servers.
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 application servers.
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 application servers.
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 |
Java Naming and Directory Interface (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 application servers.
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 application servers.
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.) | The context path of the current portlet request. |
ARM correlators via HTTP and SOAP protocols
For HTTP inbound, WebSphere Application Server 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.
- element =
arm_correlator
; - namespace URI =
http://websphere.ibm.com
, - prefix =
reqmetrics
; - actor URI =
reqmetricsURI
;
- 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="https://www.w3.org/2001/XMLSchema"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<reqmetrics:arm_correlator soapenv:actor="reqmetricsURI" xmlns:reqmetrics="http://websphere.ibm.com">
37000000000000000000
</reqmetrics:arm_correlator>
</soapenv:Header>