Brutex XServices DocumentationFebruary, 16th 2010BrianRosenbergerbru@brutex.deBrutex Network2011
The copyright holders make no representation about the suitability
of this document for any purpose. It is provided
as is
without expressed or implied warranty.
Apache Tomcat and Apache Ant are trademarks of the Apache
Software Foundation.AbstractIn 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.These are the major goals of the loosely coupled
integration
strategy which is in turn one essential idea of a
service-oriented
architecture (SOA).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.is an add-on to XBridgeNG 2.0. It runs standalone or in
combination with XBridgeNG. Pure XBridgeNG has two
components:XML Schema for item based data types (e.g. tickets
from a bug
tracker system or a database record)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,
...)The add Web Services (SOAP) wrapper around Apache Ant
tasks
(since XBridgeNG 2.0)The current focus is on file-based operations. do not
contain an
integration server or a process execution
engine.Getting startedThis chapter describes the installation.Installationtbd.Sun Java SE 1.6.0Apache Tomcat 7tbd.In short: Deploy .WAR file to Apache TomcatSecuring with Basic AuthenticationThere is a quick guide explaining Basic Authentication for Tomcat here:
http://oreilly.com/pub/a/java/archive/tomcat-tips.html?page=1
Limit access toSometimes you'll only want to restrict access to to
only
specified host names or IP addresses. This way, only
clients at
those specified addresses can use the web services.
Tomcat provides
two configuration values for that:
RemoteHostValve and
RemoteAddrValve.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.<Context
path="/XService/ArchiveService"
...> <Valve
className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1" deny=""/> </Context>
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.
The <context> element must be placed into the
server.xml
file (into <engine><host>).Available ServicesList of available web services and their operations.ArchiveServicesThe ArchiveService bundles file packing operations. Its
WSDL is
located at
http://server:port/XServices/ArchiveService?wsdlDateServicesThe DateService bundles various date and time related operations. Its WSDL is located at
http://server:port/XServices/DateService?wsdlExecuteServicesThe ExecuteService bundles local and remote command
execution operations. Its WSDL is located at
http://server:port/XServices/ExecuteService?wsdlrExec
provides remote execution facilities with authentication based on
user names and passwords.Input parameters
rExec
input parameters
parametertyperequireddescriptionhostHostConnectionYes
Host where to execute the command. See
HostConnection
.
commandStringNoAny command including argumentstimeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached.
Output parameters
ReturnCode type
The ReturnCode type is used as the generic answer type for most of the
BruteXservices
operations.
The defining Java class is
net.brutex.xservices.types.ReturnCode
.
Schema definitiontns:antProperty
]]>
Example XML
<ReturnCode
xmlns:ns2="http://ws.xservices.brutex.net">
<returnCode>0</returnCode>
<stdOut/>
<stdErr/>
<propertyList>
See
tns:antProperty
for details about the <propertyList> elements.
<name>key1</name>
<value>value1</value>
</propertyList>
<propertyList>
<name>key2</name>
<value>value2</value>
</propertyList>
</ReturnCode>
runCommandRun 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.Input parameters
runCommand input parametersparametertyperequireddescriptionexecutableStringYesCommand to be run. The command may be specified with full
path using forward slash "/" as path separator.arglineStringNoAny command line argumentstimeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached.
Output parameters
ReturnCode type
The ReturnCode type is used as the generic answer type for most of the
BruteXservices
operations.
The defining Java class is
net.brutex.xservices.types.ReturnCode
.
Schema definitiontns:antProperty
]]>
Example XML
<ReturnCode
xmlns:ns2="http://ws.xservices.brutex.net">
<returnCode>0</returnCode>
<stdOut/>
<stdErr/>
<propertyList>
See
tns:antProperty
for details about the <propertyList> elements.
<name>key1</name>
<value>value1</value>
</propertyList>
<propertyList>
<name>key2</name>
<value>value2</value>
</propertyList>
</ReturnCode>
runCommandWithSSHExecutes a command through a SSH session.Input parameters
runCommandWithSSH input parametersparametertyperequireddescriptionhostHostConnectionYes
Host to connect to (see:
tns:HostConnection
)
commandStringNoThe command to execute.timeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached.
Output parameters
ReturnCode type
The ReturnCode type is used as the generic answer type for most of the
BruteXservices
operations.
The defining Java class is
net.brutex.xservices.types.ReturnCode
.
Schema definitiontns:antProperty
]]>
Example XML
<ReturnCode
xmlns:ns2="http://ws.xservices.brutex.net">
<returnCode>0</returnCode>
<stdOut/>
<stdErr/>
<propertyList>
See
tns:antProperty
for details about the <propertyList> elements.
<name>key1</name>
<value>value1</value>
</propertyList>
<propertyList>
<name>key2</name>
<value>value2</value>
</propertyList>
</ReturnCode>
Sample Request:ssh.brutex.net22rogerxxxls /etc/30000
]]>telnetRuns a telnet session with an "expect shell" like behaviour.Input parameters
telnet input parametersparametertyperequireddescriptionhostHostConnectionYesHost to connect to (see: tns:HostConnection)promptStringNoThe prompt string to expect after login. This is used to recognize when
the session is open.commandStringNoThe command to execute.expectStringNoThe prompt to expect after the command has been executed successfully.timeoutLongYesTimeout in milliseconds. The command is forcefully terminated when timeout is reached.
Output parametersReturnCode type
The ReturnCode type is used as the generic answer type for most of the
BruteXservices
operations.
The defining Java class is
net.brutex.xservices.types.ReturnCode
.
Schema definitiontns:antProperty
]]>
Example XML
<ReturnCode
xmlns:ns2="http://ws.xservices.brutex.net">
<returnCode>0</returnCode>
<stdOut/>
<stdErr/>
<propertyList>
See
tns:antProperty
for details about the <propertyList> elements.
<name>key1</name>
<value>value1</value>
</propertyList>
<propertyList>
<name>key2</name>
<value>value2</value>
</propertyList>
</ReturnCode>
Sample Request:localhost23brosenbergerC:\Users\brosenberger>dir c:\tempenberger>60000
]]>FileServicesThe FileServces bundles various file operations. Its WSDL is located at
http://server:port/XServices/FileService?wsdlMiscServicesThe MiscService bundles various operations. Its WSDL is located at
http://server:port/XServices/MiscService?wsdlgenerateUUIDGenerates a UUID that represents a 128-bit value. This operation does not require any
input parameters. The output has the format:
0xFFFFFFFF00000000 time_low
0x00000000FFFF0000 time_mid
0x000000000000F000 version
0x0000000000000FFF time_hi
The least significant long consists of the following unsigned fields:
0xC000000000000000 variant
0x3FFF000000000000 clock_seq
0x0000FFFFFFFFFFFF node
Sample response:
]]>33b9e5c8-9102-423b-88af-bbee479ebea8
]]>getHostinfoCollect information about a host address.
Sample request:
]]>google.com
]]>
Sample response:
]]>1e100.net]]>173.194.66.105]]>::]]>we-in-f105
]]>XML TypesThis chapter bundles the documentation for common XML types used
by XServices web service.AntProperty typeThe AntProperty type defines a list of key/value pairs.
The defining Java class is
net.brutex.xservices.types.AntProperty
.
]]>
key2value2
]]>
FileResource typeThe FileResource type defines an URI to a file with optional on-the-fly decompression.
The defining Java class is
net.brutex.xservices.types.FileResource
.
]]>
Available types:FILE: URI points to a local file resource. Examples: c:\temp\something.txt, c:/dir/another.file, /home/brian/fileURL: File from URL (http, https, ftp, ...). Example: http://brutex.net/file.pdfGZIP and BZIP2: File from a local file system with on-the-fly decompression.FILEc:\temp\xservices.war
]]>
HostConnection typeThe HostConnection type identifies a server resource and login
credentials.
The defining Java class is
net.brutex.xservices.types.HostConnection
.
Schema definition
]]>
Example XMLserver.brutex.net512briansomepass
]]>
PatternElement typeThe PatternElement type defines single string pattern for file/
directory matching.
The defining Java class is
net.brutex.xservices.types.PatternElement
.
These patterns look exactly like those used in Apache Ant
Patterns.
The '*' matches zero or more characters and the
'?' will match a single character.
Both symbols can be combined in one pattern. The '**'
symbol can be used to match any directory deepth.
Some example patterns:**/mydir/**Match all file that are located in any directory that has
"mydir" string in its pathname. Also applies to files with
"mydir" in their name./mydir/The
parser will automatically append an '**' symbol, thus the
resulting pattern is
/mydir/**.
All files below the "/mydir/" directory (including its
sub-directories will be chosen.
The pattern is OS independent. You should always use
"/" as path separator, even on windows based systems.
Schema definition
]]>Example XML**/*]]>PatternSetType typeThe PatternSetType exposes various filters/ selectors for the
selection of resources (files).
The defining Java class is
net.brutex.xservices.types.PatternSetType
.
Schema definitiontns:patternElement
tns:patternElement
tns:selectorType
]]>
Example XMLReturnCode type
The ReturnCode type is used as the generic answer type for most of the
BruteXservices
operations.
The defining Java class is
net.brutex.xservices.types.ReturnCode
.
Schema definitiontns:antProperty
]]>
Example XML
<ReturnCode
xmlns:ns2="http://ws.xservices.brutex.net">
<returnCode>0</returnCode>
<stdOut/>
<stdErr/>
<propertyList>
See
tns:antProperty
for details about the <propertyList> elements.
<name>key1</name>
<value>value1</value>
</propertyList>
<propertyList>
<name>key2</name>
<value>value2</value>
</propertyList>
</ReturnCode>
SelectorType typeThe SelectorType exposes various selectors for the selection of resources (files).The defining Java class is
net.brutex.xservices.types.SelectorType.Schema definition
]]>
Example XML