Subversion Repositories XServices

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>BruteXservices User Guide</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en">
<div class="titlepage">
<div>
<div><h1 class="title">
<a name="id2521065"></a><span class="application">BruteXservices</span> User Guide</h1></div>
<div><div class="author">
<h3 class="author">
<span class="firstname">Brian</span> <span class="surname">Rosenberger</span>
</h3>
<code class="email">&lt;<a href="mailto:bru@brutex.de">bru@brutex.de</a>&gt;</code>
</div></div>
<div><p class="copyright">Copyright © 2010 </p></div>
</div>
<hr>
</div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="chapter"><a href="#id2530556">1. Abstract</a></span></dt>
<dt><span class="chapter"><a href="#id2521271">2. Getting startet</a></span></dt>
<dd><dl>
<dt><span class="sect1"><a href="#id2521225">Prerequisites</a></span></dt>
<dt><span class="sect1"><a href="#id2521243">Installation</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="#id2521256">Securing <span class="application">BruteXservices</span> with Basic Authentication</a></span></dt>
<dt><span class="sect2"><a href="#id2520669">Limit access to <span class="application">BruteXservices</span></a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="#id2520743">3. <span class="application">BruteXservices</span></a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2535352">ArchiveServices</a></span></dt>
<dt><span class="section"><a href="#id2520621">ExecuteServices</a></span></dt>
<dd><dl><dt><span class="section"><a href="#id2521931">runCommand</a></span></dt></dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="#id2521830">4. XML Types</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2576253">ReturnCode type</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2576303">Schema description</a></span></dt>
<dt><span class="section"><a href="#id2576332">Example XML </a></span></dt>
</dl></dd>
<dt><span class="section"><a href="#antproperty">AntProperty type</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2535328">Schema description</a></span></dt>
<dt><span class="section"><a href="#id2535342">Example XML </a></span></dt>
</dl></dd>
<dt><span class="section"><a href="#patternelement">PatternElement type</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2534657">Schema description</a></span></dt>
<dt><span class="section"><a href="#id2534676">Example XML</a></span></dt>
</dl></dd>
</dl></dd>
</dl>
</div>
<div class="list-of-tables">
<p><b>List of Tables</b></p>
<dl><dt>3.1. <a href="#id2521913">runCommand input parameters</a>
</dt></dl>
</div>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="id2530556"></a>Chapter 1. Abstract</h2></div></div></div>
<p>In complex IT environments it is necessary to integrate different information systems with each other, exchange data between tools and automate actions and function calls depending on events arising from user interaction. To meet the requirements of integration building usually means to implement APIs and to create tool-to-tool bridges. Web Services can help to clean up bridges into interfaces as well as to abstract functions from their underlying platform and implementation.</p>
<p>These are the major goals of the loosely coupled integration strategy which is in turn one essential idea of a service-oriented architecture (SOA).</p>
<p><span class="application">BruteXservices</span> provide a low level set of functions and web services. These can be orchestrated into services and used in business processes which make up the execution part of a SOA environment.</p>
<p><span class="application">BruteXservices</span> is an add-on to XBridgeNG 2.0. It runs standalone or in combination with XBridgeNG. Pure XBridgeNG has two components:</p>
<div class="itemizedlist"><ul type="disc">
<li><p>XML Schema for item based data types (e.g. tickets from a bug tracker system or a database record)</p></li>
<li><p>Set of Apache Ant tasks to function as a bridge between the XBridgeNG XML format at legacy 3rd party software (e.g. HP Quality Center, Serena TeamTrack, &#8230;)
</p></li>
<li><p>The <span class="application">BruteXservices</span> add
 Web Services (SOAP) wrapper around Apache Ant tasks (since XBridgeNG 2.0)</p></li>
</ul></div>
<p>The current focus is on file-based operations. <span class="application">BruteXservices</span> do not contain an integration server or a process execution engine.</p>
</div>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="id2521271"></a>Chapter 2. Getting startet</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="#id2521225">Prerequisites</a></span></dt>
<dt><span class="sect1"><a href="#id2521243">Installation</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="#id2521256">Securing <span class="application">BruteXservices</span> with Basic Authentication</a></span></dt>
<dt><span class="sect2"><a href="#id2520669">Limit access to <span class="application">BruteXservices</span></a></span></dt>
</dl></dd>
</dl>
</div>
<p>This chapter describes the installation.</p>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2521225"></a>Prerequisites</h2></div></div></div>
<p>tbd.</p>
<p>Sun Java SE 1.6.0</p>
<p>Apache Tomcat 6</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2521243"></a>Installation</h2></div></div></div>
<p>tbd.</p>
<p>In short: Deploy .WAR file to Apache Tomcat</p>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2521256"></a>Securing <span class="application">BruteXservices</span> with Basic Authentication</h3></div></div></div>
<p>There is a quick guide explaining Basic Authentication for Tomcat here: </p>
<p><a href="http://oreilly.com/pub/a/java/archive/tomcat-tips.html?page=1" target="_top">http://oreilly.com/pub/a/java/archive/tomcat-tips.html?page=1</a></p>
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2520669"></a>Limit access to <span class="application">BruteXservices</span>
</h3></div></div></div>
<p>Sometimes you'll only want to restrict access to <span class="application">BruteXservices</span> to only specified host names or IP addresses. This way, only clients at those specified addresses can use the <span class="application">BruteXservices</span> web services. Tomcat provides two configuration values for that: RemoteHostValve and RemoteAddrValve.</p>
<p>These Valves allow you to filter requests by host name or by IP address, and to allow or deny hosts that match. The example below restricts access to the ArchiveService from any machine that is not the local host.</p>
<pre class="programlisting">&lt;Context path="/XService/ArchiveService" ...&gt;
                &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow="127.0.0.1" deny=""/&gt;
            &lt;/Context&gt;</pre>
<p>If no allow pattern is given, then patterns that match the deny attribute patterns will be rejected, and all others will be allowed. Similarly, if no deny pattern is given, patterns that match the allow attribute will be allowed, and all others will be denied.</p>
<p>The &lt;context&gt; element must be placed into the server.xml file (into &lt;engine&gt;&lt;host&gt;).</p>
</div>
</div>
</div>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="id2520743"></a>Chapter 3. <span class="application">BruteXservices</span>
</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="section"><a href="#id2535352">ArchiveServices</a></span></dt>
<dt><span class="section"><a href="#id2520621">ExecuteServices</a></span></dt>
<dd><dl><dt><span class="section"><a href="#id2521931">runCommand</a></span></dt></dl></dd>
</dl>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2535352"></a>ArchiveServices</h2></div></div></div>
<p>The ArchiveService bundles file packing operations. Its WSDL is located at
http://server:port/XServices/ArchiveService?wsdl</p>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2520621"></a>ExecuteServices</h2></div></div></div>
<p>The ExecuteService bundles local and remote command execution operations. Its WSDL is located at
http://server:port/XServices/ExecuteService?wsdl</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2521931"></a>runCommand</h3></div></div></div>
<p>Run an executable with arguments on the server providing the web service. The command is run within the environment and under the user privileges of the user who is running the Tomcat Server.</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="id2521943"></a>Input parameters</h4></div></div></div>
<p></p>
<div class="table">
<a name="id2521913"></a><p class="title"><b>Table 3.1. runCommand input parameters</b></p>
<table summary="runCommand input parameters" border="1">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>parameter</th>
<th>type</th>
<th>required</th>
<th>description</th>
</tr></thead>
<tbody>
<tr>
<td>executable</td>
<td>String</td>
<td>Yes</td>
<td>Command to be run. The command may be specified with full path using forward slash &#8220;/&#8221; as path separator.</td>
</tr>
<tr>
<td>argline</td>
<td>String</td>
<td>No</td>
<td>Any command line arguments</td>
</tr>
<tr>
<td>timeout</td>
<td>Long</td>
<td>Yes</td>
<td>Timeout in milliseconds. The command is forcefully terminated when timeout is reached.</td>
</tr>
</tbody>
</table>
</div>
<p></p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h5 class="title">
<a name="id2576228"></a>ReturnCode type</h5></div></div></div>
<p>The ReturnCode type is used as the generic answer type for most of the <span class="application">BruteXservices</span> operations.</p>
<p>The defining Java class is 
  <a href="javadoc/net/brutex/xservices/types/ReturnCode.html" target="_top">
      <code class="classname">net.brutex.xservices.types.ReturnCode</code></a>.</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h6 class="title">
<a name="id2576194"></a>Schema description</h6></div></div></div>
<pre class="programlisting">
&lt;xs:complexType name="ReturnCodeType"&gt;
    &lt;xs:sequence&gt;
       &lt;xs:element name="returnCode" type="xs:int"/&gt;
       &lt;xs:element minOccurs="0" name="stdOut" type="xs:string"/&gt;
       &lt;xs:element minOccurs="0" name="stdErr" type="xs:string"/&gt;
            &lt;xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="<a href="#antproperty" title="AntProperty type">tns:antProperty</a>"/&gt;
    &lt;/xs:sequence&gt;
            &lt;/xs:complexType&gt;
        </pre>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h6 class="title">
<a name="id2576265"></a>Example XML </h6></div></div></div>
<pre class="programlisting">&lt;ReturnCode xmlns:ns2="http://ws.xservices.brutex.net"&gt;
            &lt;returnCode&gt;0&lt;/returnCode&gt;
            &lt;stdOut/&gt;
            &lt;stdErr/&gt;
            &lt;propertyList&gt;            <em class="lineannotation"><span class="lineannotation">See <a href="#antproperty" title="AntProperty type">tns:antProperty</a> for details about the &lt;propertyList&gt; elements.</span></em>
            &lt;name&gt;key1&lt;/name&gt;
            &lt;value&gt;value1&lt;/value&gt;
            &lt;/propertyList&gt;
            &lt;propertyList&gt;
            &lt;name&gt;key2&lt;/name&gt;
            &lt;value&gt;value2&lt;/value&gt;
            &lt;/propertyList&gt;
        &lt;/ReturnCode&gt;</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="id2521830"></a>Chapter 4. XML Types</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="section"><a href="#id2576253">ReturnCode type</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2576303">Schema description</a></span></dt>
<dt><span class="section"><a href="#id2576332">Example XML </a></span></dt>
</dl></dd>
<dt><span class="section"><a href="#antproperty">AntProperty type</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2535328">Schema description</a></span></dt>
<dt><span class="section"><a href="#id2535342">Example XML </a></span></dt>
</dl></dd>
<dt><span class="section"><a href="#patternelement">PatternElement type</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="#id2534657">Schema description</a></span></dt>
<dt><span class="section"><a href="#id2534676">Example XML</a></span></dt>
</dl></dd>
</dl>
</div>
<p>This chapter bundles the documentation for common xml types used by XServices web service.</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="id2576253"></a>ReturnCode type</h2></div></div></div>
<p>The ReturnCode type is used as the generic answer type for most of the <span class="application">BruteXservices</span> operations.</p>
<p>The defining Java class is 
  <a href="javadoc/net/brutex/xservices/types/ReturnCode.html" target="_top">
      <code class="classname">net.brutex.xservices.types.ReturnCode</code></a>.</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2576303"></a>Schema description</h3></div></div></div>
<pre class="programlisting">
&lt;xs:complexType name="ReturnCodeType"&gt;
    &lt;xs:sequence&gt;
       &lt;xs:element name="returnCode" type="xs:int"/&gt;
       &lt;xs:element minOccurs="0" name="stdOut" type="xs:string"/&gt;
       &lt;xs:element minOccurs="0" name="stdErr" type="xs:string"/&gt;
            &lt;xs:element maxOccurs="unbounded" minOccurs="0" name="propertyList" nillable="true" type="<a href="#antproperty" title="AntProperty type">tns:antProperty</a>"/&gt;
    &lt;/xs:sequence&gt;
            &lt;/xs:complexType&gt;
        </pre>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2576332"></a>Example XML </h3></div></div></div>
<pre class="programlisting">&lt;ReturnCode xmlns:ns2="http://ws.xservices.brutex.net"&gt;
            &lt;returnCode&gt;0&lt;/returnCode&gt;
            &lt;stdOut/&gt;
            &lt;stdErr/&gt;
            &lt;propertyList&gt;            <em class="lineannotation"><span class="lineannotation">See <a href="#antproperty" title="AntProperty type">tns:antProperty</a> for details about the &lt;propertyList&gt; elements.</span></em>
            &lt;name&gt;key1&lt;/name&gt;
            &lt;value&gt;value1&lt;/value&gt;
            &lt;/propertyList&gt;
            &lt;propertyList&gt;
            &lt;name&gt;key2&lt;/name&gt;
            &lt;value&gt;value2&lt;/value&gt;
            &lt;/propertyList&gt;
        &lt;/ReturnCode&gt;</pre>
</div>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="antproperty"></a>AntProperty type</h2></div></div></div>
<p>The AntProperty type defines a list of key/value pairs.</p>
<p>The defining Java class is 
  <a href="javadoc/net/brutex/xservices/types/AntProperty.html" target="_top">
      <code class="classname">net.brutex.xservices.types.AntProperty</code></a>.</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2535328"></a>Schema description</h3></div></div></div>
<pre class="programlisting">
&lt;xs:complexType name="antProperty"&gt;
   &lt;xs:sequence&gt;
      &lt;xs:element name="name" type="xs:string"/&gt;
      &lt;xs:element name="value" type="xs:string"/&gt;
   &lt;/xs:sequence&gt;
&lt;/xs:complexType&gt;
        </pre>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2535342"></a>Example XML </h3></div></div></div>
<pre class="programlisting">
&lt;AntProperty&gt;
    &lt;name&gt;key2&lt;/name&gt;
    &lt;value&gt;value2&lt;/value&gt;
&lt;/AntProperty&gt;
</pre>
</div>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="patternelement"></a>PatternElement type</h2></div></div></div>
<p>The PatternElement type defines single string pattern.</p>
<p>The defining Java class is 
  <a href="javadoc/net/brutex/xservices/types/PatternElement.html" target="_top">
      <code class="classname">net.brutex.xservices.types.PatternElement</code></a>.</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2534657"></a>Schema description</h3></div></div></div>
<pre class="programlisting">
&lt;xs:simpleType name="patternElement"&gt;
    &lt;xs:restriction base="xs:string"/&gt;
&lt;/xs:simpleType&gt;
        </pre>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="id2534676"></a>Example XML</h3></div></div></div>
<pre class="programlisting">
&lt;PatternElement&gt;**/*&lt;/PatternElement&gt;
</pre>
</div>
</div>
</div>
</div></body>
</html>