File: //opt/perf/examples/arm/jcorrelator.java
/**************************************************************************/
/* /opt/perf/examples/arm/jcorrelator.java */
/* */
/* This java program provides examples of how to use User-Defined Metrics */
/* and Correlators (ARM 2.0 features) via the Java bindings for ARM. */
/* */
/* Hewlett-Packard Performance Technology Center 09FEB01 */
/**************************************************************************/
import armapi.*;
import java.io.*;
import java.lang.Thread;
class Server
{
ARMTransaction servertran;
/**
This constructor initializes the server
*/
public Server()
{
ARMApplication application=
new ARMApplication("Java_Server_App", "*");
servertran=
application.createTransaction("Java_Server_tran","Java Server");
int val = application.printArmGetid();
System.out.println("Server transaction ID = " + val);
}
/****************************************************************************/
/* server - transaction */
/* */
/* This routine is included here to simplify the this example. In a real */
/* life situation, this piece of code would actually be running on a */
/* separate system. */
/****************************************************************************/
public void transaction(ARMTranCorrelator parent)
throws Exception
{
int status;
// new instance of a server transaction starts
ARMTransactionInstance servertraninstance =
servertran.createTransactionInstance();
status = servertraninstance.startTranWithCorrelator(parent);
if ( status < 0 )
System.out.println("Return from startTran = " + status );
// sleep for 10 seconds to simulate activity of actual server program
// normally actual processing of the client transaction's request by
// the server process would occur here.
Thread.sleep(10000);
// the server transaction instance stops
servertraninstance.stopTranInstance(ARMConstants.ARM_GOOD);
} //end of method transaction
} // end of class Server
class Client
{
ARMTransaction clienttran;
/**
This constructor initializes the client
*/
public Client()
{
int val;
ARMApplication clientapp = new ARMApplication("Java_Client_App", "*");
clienttran = clientapp.createTransaction("Java_Client_tran");
val = clientapp.printArmGetid();
System.out.println("Client transaction ID = " + val);
}
public void transaction(Server serverapp)
throws Exception
{
int status;
//new instance of a client transaction begins
ARMTransactionInstance clienttraninstance =
clienttran.createTransactionInstance();
status = clienttraninstance.startTranWithCorrelator();
if ( status < 0 )
System.out.println("Return from startTranAndGetCorrelator = "
+ status );
// this is where actual client-side processing would take place
// to simulate activity, sleep for 2 seconds
Thread.sleep(2000);
// request action from server, passing correlator
serverapp.transaction(clienttraninstance.getCorrelator());
// server processing completes, client transaction is ended
clienttraninstance.stopTranInstance(ARMConstants.ARM_GOOD);
} // end of transaction()
} // end of class Client
public class jcorrelator
{
public static void main(String[] args) throws Exception
{
Server serverapp = new Server();
Client clientapp = new Client();
while (true)
clientapp.transaction(serverapp);
} // end main
} // End of class