Beispiel für das Coding einer
GRMG-Anwendung
Um die GRMG-Anfrage bearbeiten zu können, muss die GRMG-Anwendung in der angegebenen Reihenfolge die folgenden Schritte durchführen können:
· sie verarbeitet den Datenstrom eines HTTP-POST-Requests gemäß der XML-Syntax
· sie führt die eigentlichen Überwachungsfunktionen durch
· sie erzeugt die GRMG-Antwort als XML-Dokument.
Verwenden Sie zur Erleichterung dieser Aufgaben die in GRMG-Anwendung erstellen - Prinzip genannten Java-Klassen:
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
}
}
Der schattierte Teil könnte dabei wie folgt aussehen (dieses Coding basiert dabei auf dem Beispiel für eine GRMG-Anfrage):
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
}
}
In den schattierten Coding-Bereichen setzen Sie jeweils die Komponente und die Meldungsparameter für die GRMG-Antwort. Dabei können Sie im einzelnen die folgenden Parameter übergeben:
sc.getComponentByName("<compname>").addMessage().setMessageParameters
("<messalert>","<messseverity>","<messarea>","<messnumber>",
"<messpara1>","<messpara2>","<messpara3>","<messpara4>","<messtext>");
Die Bedeutung der einzelnen Parameter ist in Aufbau der GRMG-Antwort beschrieben.
Startseite Überwachung mit dem
Generic Request and Message Generator