XML Over HTTP Output Adapter Sample

This sample demonstrates the usage of the embedded XML Over HTTP adapter.

The XML Over HTTP embedded adapter posts tuples to an HTTP post handler. These can be created in a variety of languages and forms. A common form is a Java servlet, an example of which is provided in Example Servlet.

Importing This Sample into StreamBase Studio

In StreamBase Studio, import this sample with the following steps:

  • From the top menu, click FileLoad StreamBase Sample.

  • Select this sample from the Embedded Output Adapters list.

  • Click OK.

StreamBase Studio creates a single project containing the sample files.

Sample Location

By default, the sample files are installed in:

On Windows

C:\Program Files\StreamBase Systems\StreamBase.n.m\sample\adapter\embedded\xmloverhttp\

On UNIX

/opt/streambase/sample/adapter/embedded/xmloverhttp/

When you load the sample into StreamBase Studio, Studio copies the sample project's files to your Studio workspace. StreamBase Systems recommends that you use the workspace copy of the sample, especially on UNIX, where you may not have write access to /opt/streambase. In the default installation, the path to this sample in your Studio workspace is:

UNIX:       
  ~/streambase-studio-n.m-workspace/sample_adapter_embedded_xmloverhttp
Windows XP:
  C:\Documents and Settings\username\My Documents\StreamBase Studio n.m Workspace\
      sample_adapter_embedded_xmloverhttp
Windows 7 and Windows Vista:
  C:\Users\username\Documents\StreamBase Studio n.m Workspace\
      sample_adapter_embedded_xmloverhttp

Running This Sample in StreamBase Studio

  1. In the Package Explorer, double-click to open the XMLOverHTTPTest.sbapp application. Make sure the application is the currently active tab in the EventFlow Editor.

  2. In the EventFlow editor click the XMLOverHTTP adapter icon to open its Properties view.

  3. In the Adapter Settings tab, change URL to point to your HTTP POST handler. If a servlet is handling the HTTP POST request, then point to the fully qualified path of the deployed servlet (for example, http://host:port/path-to-servlet).

  4. Make sure the application is the currently active tab in the EventFlow Editor. Click the Run button. This opens the SB Test/Debug perspective and starts the application.

  5. Select the Manual Input tab.

  6. Enter valid integers for a, b, and c, and press Send Data.

  7. When done, press F9 or click the Stop Running Application button.

  8. The POST handler for the specified URL should now have received one request for each tuple entered.

Running This Sample in Terminal Windows

This section describes how to run the sample in UNIX terminal windows or Windows command prompt windows. On Windows, be sure to use the StreamBase Command Prompt from the Start menu as described in the Test/Debug Guide, not the default command prompt.

  1. Open two terminal windows on UNIX, or two StreamBase Command Prompts on Windows. In each window, navigate to the directory where the sample is installed, or to your workspace copy of the sample, as described above.

  2. In window 1, type sbd XMLOverHTTPTest.sbapp.

  3. In window2 , type sbc enqueue InputStream < inputstream.dat.

  4. In window 2, run sbadmin shutdown to exit the server.

  5. The POST handler for the specified URL should now have received one request for each tuple entered.

Example Servlet

The following is a simple example of a Java servlet you can use with this sample.

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URLDecoder;

public class TestServlet extends HttpServlet {
    public TestServlet () {
        
    }
    
     protected void doGet(HttpServletRequest req,
             HttpServletResponse resp) throws ServletException, IOException {
         DataOutputStream daos = new DataOutputStream(resp.getOutputStream());
         
         daos.writeBytes("Hello, World");
         daos.flush();
         daos.close();       
     }

     protected void doPost(HttpServletRequest req,
             HttpServletResponse resp) throws ServletException, IOException {

         BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream()));
         String line = null;
         while ((line = br.readLine()) != null) {
             line = URLDecoder.decode(line);
             System.out.println("readLine:" + line);
         }
     }
}