Example Coding for a GRMG Application

To be able to process the GRMG request, the GRMG application must be able to perform the following steps in the specified order:

  • It processes the data stream of an HTTP POST request in accordance with the XML syntax
  • It performs the actual monitoring functions
  • It generates the GRMG response as an XML document

Use the Java classes listed in Creating a GRMG Application - Principle to simplify these tasks:

public void doPost(HttpServletRequest req , HttpServletResponse res)     Throws ServletException, IOException{    ServletOutputStream out = res.getOutputStream();     // Get output stream of the servlet    InputStream is=req.getInputStream();     // Get input stream of servlet    try    {        GrmgRequest ix=new GrmgRequest(is);            // Create new GrmgRequest object  from         //serlvlet's input stream and parse XML structure        GrmgScenario sc = ix.getScenario();        // Get GrmgScenario object from GrmgRequest        processing(sc); 

 /* You must include your own code here to        process the parameters passed by XML document        and to carry out any testing that is required */

 GrmgResponse ox=new GrmgResponse(sc);        // Create new  GrmgResponse object using         // GrmgScenario object as parameter        ByteArrayOutputStream bytearray=ox.getOutput();         // Get XML document as result of processing        bytearray.writeTo(out);         // give back result to servlet's output stream    }    catch (Exception e)    {        // Exception handling        }} 

The shaded part could be as follows (this coding is based on the Example GRMG Request):

void processing(GrmgScenario sc) throws Exception{    try    {        URL conn = new URL(sc.getComponentByName("WEBTEST").        getPropertyByName("url").getValue());         // getting URL        HttpURLConnection hcon = (HttpURLConnection)         conn.openConnection();         // trying to connect to URL        if(hcon.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND)             //checking response from connection 

 sc.getComponentByName("WEBTEST").addMessage().            setMessageParameters("ERROR","255","RT","001","","","","",            "page not found"); 

 // Page not found and we generate Message for GRMG        else 

 sc.getComponentByName("WEBTEST").addMessage().            setMessageParameters("OKAY","000","RT","003","","","","",            "relatively okay (for test)"); 

 // OKAY and we generate Message for GRMG    }    catch(Exception e)    { 

 sc.getComponentByName("WEBTEST").addMessage().        SetMessageParameters("ERROR","255","RT","002",e.getMessage(),        "","","",e.getMessage()); 

 }    try     {        JCO.createClient(sc.getComponentByName("R3TEST").        getPropertyByName("SAPClient").getValue();        sc.getComponentByName("R3TEST).        getPropertyByName("userid").getValue();        sc.getComponentByName("R3TEST).        getPropertyByName("password").getValue();        sc.getComponentByName("R3TEST).        getPropertyByName("language").getValue();        sc.getComponentByName("R3TEST).        getPropertyByName("sid").getValue();        sc.getComponentByName("R3TEST).        getPropertyByName("system_number").getValue());         // trying to connect to SAP system 

 sc.getComponentByName("R3TEST").        addMessage().setMessageParameters("OKAY","001","RT","004",        "","","","","Connected!"); 

 //Everything is fine and we generate Message for GRMG    }    catch(Exception e)    {        // Exception handling    }} 

You set the component and message parameters for the GRMG response in the shaded coding areas. You can transfer the following parameters here:

sc.getComponentByName("<compname>").addMessage().setMessageParameters("<messalert>","<messseverity>","<messarea>","<messnumber>","<messpara1>","<messpara2>","<messpara3>","<messpara4>","<messtext>"); 

For more information about the meaning of the individual parameters, see Structure of the GRMG Response.

 Monitoring with the Generic Request and Message Generator start page