2013. 7. 12. 15:03

출처 : http://scn.sap.com/community/pi-and-soa-middleware/blog/2011/05/10/pi-730-http-java-adapter-test-tools



PI 7.30 HTTP Java Adapter Test Tools


At PI 7.11 and before, the HTTP adapter is an ABAP adapter. PI 7.3 introduces a new HTTP adapter (HTTP_AAE) based on the java stack, using the java Adapter Framework.

 

In this blog, we will take a look at a couple of test tools that we can use to test the HTTP_AAE adapter.

 

Introduction

 

In PI 7.3, in addition to the exiting HTTP adapter in ABAP, a java adapter (HTTP_AAE) has also been added. This new java adapter uses a java service to send the payload to the AAE of PI 7.3. The java adapter also provides two different methods of sending the payload, GET and POST, therefore, the need for 2 different test tools.

 

One of the benefits of using the HTTP_AAE adapter is to bypass the ABAP stack during message processing, which can increase the performance by as much as 10X. In addition, this adapter is a must-use when we install a java-only PI system without ABAP.

 

HTTP_AAE Adapter Overview

 

The URL to send the payload will be generated by the test tool with the following information. This is also the URL used for POST.

 

http://server:port/HttpAdapter/HttpMessageServlet?interfaceNamespace=sender-interface-namespace&interface=sender-interface-name&senderService=sender-business-component-name&qos=quality-of-service

 

    sender-business-component-name               

          Business Component name or Business System name used in the Integrated Configuration

    quality-of-service

          must be either BE or EO

 

With GET, the following URL is generated by the test tool. It is identical to the *POST* URL, except for the last parameter:

 

http://server:port/HttpAdapter/HttpMessageServlet?interfaceNamespace=sender-interface-namespace&interface=sender-interface-name&senderService=sender-business-component-name&qos=quality-of-service&Main-Payload-Parameter-Name=the-pay-load

    Main-Payload-Parameter-Name

          the Main Payload Parameter Name used in the HTTP_AAE communication channel configuration

    the pay load

          must be URL encoded so that special characters, e.g. "<" and ">" can be sent without problem.

 

  • POST

Sample input screen:

image

Sample result screen, with response:

image

 

HTML code which can be copy-n-pasted to a file with a file extension of .html, e.g. http_aae_Test_730_post.html.

<html>

<script type="text/javascript">;
<!--
function button1_onclick() {
  var result = "";
  var payload = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
  var senderNamespace = escape(document.MessageParameters.SenderNamespace.value);

  var reqString = "http://"
  reqString = reqString + document.MessageParameters.Server.value+":";
  reqString = reqString + document.MessageParameters.Port.value + "/HttpAdapter/HttpMessageServlet?";
  reqString = reqString + "interfaceNamespace=" + senderNamespace;
  reqString = reqString + "&interface=" + document.MessageParameters.SenderInterface.value;
  reqString = reqString + "&senderService=" + document.MessageParameters.SenderService.value;
  reqString = reqString + "&qos=" + document.MessageParameters.Qos.value;

  var xhttp = new ActiveXObject("msxml2.xmlhttp");
  xhttp.open ("POST", reqString, false);
  document.MessageParameters.URL.value=reqString;

  if (document.MessageParameters.Source[0].checked == true) {
    payload = document.MessageParameters.xmlData.value;
   xhttp.send (payload);
  }
  else{
    var xmlDoc = new ActiveXObject("microsoft.xmldom");
   xmlDoc.async=false;
   xmlDoc.load (document.MessageParameters.xmlFile.value);
   xhttp.send (xmlDoc);
  }
  result = xhttp.responseText;
  xhttp.close;
  document.MessageParameters.response.value=result;
}

function getFile() {
  var mypath = document.MessageParameters.xmlFile.value;
var ForReading  = 1;
objFSO          = new ActiveXObject("Scripting.FileSystemObject");
objTextFile     = objFSO.OpenTextFile(mypath, ForReading);

var filearray   = "";

for(var n=0;!objTextFile.AtEndOfStream;n++) {
  sRead = objTextFile.ReadLine();
  filearray += sRead + "\n";
}
objTextFile.Close();

document.MessageParameters.xmlData.value = filearray;
}


//-->
</script>
<head></head>

<body>

<h3>Client HTTP_AAE Adapter Test - Post </h3>
<form name="MessageParameters">
<p>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
   <h4>Header</h4>
    <tbody>
    <tr>
      <td width="10%"><label>ServerHost</label> </td>
      <td width="22%"><input type="text" id="host" name="Server" value="" size="20" /> </td>
      <td width="10%"><label>ServerPort</label> </td>
      <td width="22%"><input type="text" id="port" name="Port" value="" size="10" /> </td>
    </tr>
    <tr>
      <td width="10%"><label>SenderService</label> </td>
      <td width="22%">
      <input type="text" id="senderService" name="SenderService" value="" size="40" /> </td>
      <td width="10%">QOS</td>
      <td width="22%">
  <select id="qos" name="Qos">
  <option value="BE" selected>Best Effort</option>
  <option value="EO" >Exactly Once</option>
  </select>
      </td>
    </tr>
    <tr>
      <td width="10%"><label>SenderInterface</label> </td>
      <td width="22%">
      <input type="text" id="senderInterface" name="SenderInterface" value="" size="40" /> </td>
      <td width="10%"><label>SenderNamespace</label> </td>
      <td width="22%">
      <input type="text" id="senderNamespace" name="SenderNamespace" value="" size="40" /></td>
    </tr>
  </tbody>
  </table>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
   <br>
   <h4>Payload</h4>
    <tbody>
    <tr>
      <fieldset style="padding: 2">
       <td width="50%"><input type="radio" name="Source" value="Textarea" checked="checked" />Type in XML</td>
       <td width="50%"><input type="radio" name="Source" value="File" />Upload File</td>
      </fieldset>
    </tr>
    <tr>
      <td width="50%"><textarea name="xmlData" rows="10" cols="60"><a>test</a></textarea></td>
      <td width="50%"><input type="file" name="xmlFile" size="40"  onChange="return getFile()" /> </td>
    </tr>
  </tbody>
  </table>
  <p>
  <input type="button" value="Send" id="button1" name="button1" LANGUAGE="javascript" onclick="button1_onclick()" />
  </p>
  <hr />
  <h4 align="left">Result</h4>
  <p align="left">URL: <textarea rows="2" name="URL" cols="104"></textarea></p>
  Response Text:
  <textarea name="response" rows="5" cols="100"></textarea>
</form>

</body>

</html>

  • GET

Sample input screen:

http_test_tool-03.png

Sample result screen, with response:

http_test_tool-04.png

HTML code which can be copy-n-pasted to a file with a file extension of .html, e.g. http_aae_Test_730_get.html.

 

 

<html>

<script type="text/javascript">;
<!--
function button1_onclick() {
  var result = "";
  var payload = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
  var senderNamespace = escape(document.MessageParameters.SenderNamespace.value);

  var reqString = "http://"
  reqString = reqString + document.MessageParameters.Server.value+":";
  reqString = reqString + document.MessageParameters.Port.value + "/HttpAdapter/HttpMessageServlet?";
  reqString = reqString + "interfaceNamespace=" + senderNamespace;
  reqString = reqString + "&interface=" + document.MessageParameters.SenderInterface.value;
  reqString = reqString + "&senderService=" + document.MessageParameters.SenderService.value;
  reqString = reqString + "&qos=" + document.MessageParameters.Qos.value;
  reqString = reqString + "&" + document.MessageParameters.MainPayload.value + "=";
  reqString = reqString + encodeURIComponent(document.MessageParameters.xmlData.value);

  var xhttp = new ActiveXObject("msxml2.xmlhttp");
  xhttp.open ("GET", reqString, false);
  document.MessageParameters.URL.value=reqString;

  if (document.MessageParameters.Source[0].checked == true) {
    payload = document.MessageParameters.xmlData.value;
   xhttp.send (payload);
  }
  else{
    var xmlDoc = new ActiveXObject("microsoft.xmldom");
   xmlDoc.async=false;
   xmlDoc.load (document.MessageParameters.xmlFile.value);
   xhttp.send (xmlDoc);
  }
  result = xhttp.responseText;
  xhttp.close;
  document.MessageParameters.response.value=result;
}

function getFile() {
  var mypath = document.MessageParameters.xmlFile.value;
var ForReading  = 1;
objFSO          = new ActiveXObject("Scripting.FileSystemObject");
objTextFile     = objFSO.OpenTextFile(mypath, ForReading);

var filearray   = "";

for(var n=0;!objTextFile.AtEndOfStream;n++) {
  sRead = objTextFile.ReadLine();
  filearray += sRead + "\n";
}
objTextFile.Close();

document.MessageParameters.xmlData.value = filearray;
}


//-->
</script>
<head></head>

<body>

<h3>Client HTTP_AAE Adapter Test - Get </h3>
<form name="MessageParameters">
<p>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
   <h4>Header</h4>
    <tbody>
    <tr>
      <td width="10%"><label>ServerHost</label> </td>
      <td width="22%"><input type="text" id="host" name="Server" value="" size="20" /> </td>
      <td width="10%"><label>ServerPort</label> </td>
      <td width="22%"><input type="text" id="port" name="Port" value="" size="10" /> </td>
    </tr>
    <tr>
      <td width="10%"><label>SenderService</label> </td>
      <td width="22%">
      <input type="text" id="senderService" name="SenderService" value="" size="40" /> </td>
      <td width="10%">QOS</td>
      <td width="22%">
  <select id="qos" name="Qos">
  <option value="BE" selected>Best Effort</option>
  <option value="EO" >Exactly Once</option>
  </select>
      </td>
    </tr>
    <tr>
      <td width="10%"><label>SenderInterface</label> </td>
      <td width="22%">
      <input type="text" id="senderInterface" name="SenderInterface" value="" size="40" /> </td>
      <td width="10%"><label>SenderNamespace</label> </td>
      <td width="22%">
      <input type="text" id="senderNamespace" name="SenderNamespace" value="" size="40" /></td>
    </tr>
  </tbody>
  </table>
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
   <br>
   <h4>Payload</h4>
   <label>Main Payload Parameter Name:</label>
   <input type="text" id="mainPayload" name="MainPayload" value="" size="40" />
   <P>
    <tbody>
    <tr>
      <fieldset style="padding: 2">
       <td width="50%"><input type="radio" name="Source" value="Textarea" checked="checked" />Type in XML</td>
       <td width="50%"><input type="radio" name="Source" value="File" />Upload File</td>
      </fieldset>
    </tr>
    <tr>
      <td width="50%"><textarea name="xmlData" rows="10" cols="60"><a>test</a></textarea></td>
      <td width="50%"><input type="file" name="xmlFile" size="40"  onChange="return getFile()" /> </td>
    </tr>
  </tbody>
  </table>
  <p>
  <input type="button" value="Send" id="button1" name="button1" LANGUAGE="javascript" onclick="button1_onclick()" />
  </p>
  <hr />
  <h4 align="left">Result</h4>
  <p align="left">URL: <textarea rows="6" name="URL" cols="104"></textarea></p>
  Response Text:
  <textarea name="response" rows="5" cols="100"></textarea>
</form>

</body>

</html>










Posted by sungwonpekr