WebSphere Application Server - Express, Version 6.0.x     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	                                         }
27	                    
28	                                     }
29	                                     catch( Exception e )
30	                                     {
31	                                        report a problem;
32	                                     }
33			}
 



Related concepts
Extending request metrics

Reference topic    

Terms of Use | Feedback

Last updated: Jun 8, 2005 12:45:23 PM EDT
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/rprf_excorrserv.html

© Copyright IBM Corporation 2004, 2005. All Rights Reserved.
This information center is powered by Eclipse technology. (http://www.eclipse.org)