Operating Systems: AIX, HP-UX, Linux, Solaris, Windows

 

Example: Using the correlation service interface

 

Example

The following example illustrates one of the typical workflows of using the ARM API in conjunction with the correlation service as part of a servlet instrumentation:

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

PmiRmArmTx artrax =
// The factory detects the currently active ARM implementation (specified by user through 
// admin console) and instantiates an appropriate ARM wrapper object

    PmiRmArmTxFactory.createPmiRmArmTx();
ArmTransaction at = newArmTx();
if (null == at)
    out.println("Got a null ArmTransaction");
ArmCorrelator arc = newArmCorr();
at.start(arc);
try {
    artrax.setArmTransaction(at);
    PmiRmArmStack.pushTransaction(artrax);
} catch (Exception e) {
    System.out.println("Caught 1 exception" + e);
}

PmiRmArmTx atxwrp = PmiRmArmStack.peekTransaction();

if (atxwrp == null)
    out.println("Armtransaction is null");

//update
try {
    out.println(atxwrp.update());
} catch (Exception e) {
    out.println(e);
}
//getArmType
try {
    out.println("ARMTYPE is"+ PmiRmArmTx.getARMType());
} catch (Exception e) {
    out.println(e);
}
//getting correlator bytes
try {
    if (null == atxwrp.getCorrelatorBytes())
    out.println("Got a null Correlator");
} catch (Exception e) {
    out.println(e);
}

//blocked/unblocked
long blkid = 0;
try {
    out.println(blkid = atxwrp.blocked());
} catch (Exception e) {
    out.println(e);
}

try {
    out.println(atxwrp.unblocked(blkid));
} catch (Exception e) {
    out.println(e);
}
try {
    atxwrp = PmiRmArmStack.popTransaction();
    ArmTransaction art = (ArmTransaction) atxwrp.getArmTransaction();
    art.stop(ArmConstants.STATUS_GOOD);
} catch (Exception e) {
    out.println(e);
}

}



private ArmTransaction newArmTx() {

    ArmTransactionFactory txFactory = null;
try {
    String sWasName = "WebSphere";
    String appName = "t23xpimage/t23xpimage/server1";
    String sCellName = appName.substring(0, appName.indexOf("/"));
    String sNodeInstance =
    appName.substring(appName.indexOf("/") + 1, appName.length());
    sNodeInstance = sNodeInstance.replace('/', '.');
    txFactory =    (ArmTransactionFactory)       newObjectInstance("org.opengroup.arm40.sdk.ArmTransactionFactoryImpl");
    ArmApplication app = null; // 149297
    ArmApplicationDefinition appDef = null; //LIDB3207
    appDef =        txFactory.newArmApplicationDefinition(sWasName, null, null);
    app = txFactory.newArmApplication(appDef, sCellName, sNodeInstance, null);

    String[] idnames = { "request_type" };
    String[] idvalues = { "URI" };
    String[] ctxnames = { "URI" };
    ArmIdentityPropertiesTransaction props =
    txFactory.newArmIdentityPropertiesTransaction(
        idnames,
        idvalues,
        ctxnames,
        null);
    ArmTransactionDefinition atd =
        txFactory.newArmTransactionDefinition(
        appDef,
        "URI",
        props,
        (ArmID) null);
    ArmTransaction at = txFactory.newArmTransaction(app, atd);
    return at;
} catch (Exception e) {
    System.out.println(e);
    return null;
}

}

private ArmCorrelator newArmCorr() {

    ArmTransactionFactory txFactory = null;
try {
    String sWasName = "WebSphere";
    String appName = "t23xpimage/t23xpimage/server1";
    txFactory =
    (ArmTransactionFactory) newObjectInstance("org.opengroup.arm40.sdk.ArmTransactionFactoryImpl");

    ArmCorrelator arc =txFactory.newArmCorrelator(
        PmiRmArmStack.peekTransaction().getCorrelatorBytes());
    return arc;
} catch (Exception e) {
    System.out.println(e);
    return null;
}

}

 

Example

1    PmiRmArmTx artrax =
2        PmiRmArmStack.peekTransaction();
3    if( artrax != null )
4    {
5        try
6        {
7            byte[] cbytes = artrax.getCorrelatorBytes();
8            stuffBytesIntoOutboundMessage( msg, cbytes);
9            long blockedId = 0;
10           try
11           {
12              blockedId = artrax.blocked();
13           }
14           catch( NoSuchMethodException nsme )
15           {
16              // must not be running ARM4 or eWLM
17           }
18           sendMsg( msg );
19           try
20           {
21              artrax.blocked( blockedId );
22            }
23            catch( NoSuchMethodException nsme )
24            {
25            // must not be running ARM4 or eWLM
26            }
28        }
29        catch( Exception e )
30        {
31          report a problem;
32        }
33    }
 


 

See Also


Extending request metrics