<html> | |
<head> | |
<title>TCP transport</title> | |
<link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" /> | |
</head> | |
<body lang="en"> | |
<h1>TCP Transport</h1> | |
This document will explain how to send and receive SOAP Messages via TCP in | |
Axis2. | |
<p><i>Send your feedback or questions to: <a | |
href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix | |
subject with [Axis2]. To subscribe to mailing list see <a | |
href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p> | |
<h2>Content</h2> | |
<ul> | |
<li><a href="#intro">Introduction</a></li> | |
<li><a href="#start">How to Start the TCPServer</a></li> | |
<li><a href="#send">How to Send SOAP Messages Using TCP Transport</a></li> | |
<li><a href="#samples">Samples</a></li> | |
<li><a href="#components">Transport Components</a></li> | |
</ul> | |
<a name="intro"></a> | |
<h2>Introduction</h2> | |
<p>Axis2 supports TCP as a transport. It has support for both send and receive SOAP | |
Messages via TCP. TCP transport does not have any application | |
level headers and the SOAP Message that is sent should be self contained. | |
This makes the interaction fast and simple. However, since there are no | |
application headers, it does not have the privilege of having request URI, | |
and Service dispatching should be done by an alternative method. Thus, | |
RequestURIBasedDispatcher can not be used. The following are the two main | |
alternatives available for dispatching in the Axis2 environment:</p> | |
<ol> | |
<li>Use the name space URI of the first child element of SOAPBody. | |
(SOAPMessageBodyBasedDispatcher).</li> | |
<li>Enable WS-Addressing. In the case of version 1.1 release Addressing is | |
default (SOAPActionBasedDispatcher).</li> | |
</ol> | |
<p>When the TCP request is sent it is the user's responsibility to use either | |
Addressing or SOAP body base mechanism.</p> | |
<a name="start"></a> | |
<h2>How to Start the TCPServer</h2> | |
<p>The TCP server can be started by running the class | |
org.apache.axis2.transport.tcp.TCPServer with two parameters - <a | |
href="../faq.html#c5">repository</a> and port number, as arguments. This | |
class needs all the Axis dependency jars in the classpath. New services can | |
be added in the usual way by dropping the archives to the repository (See <a | |
href="userguide.html">User's Guide</a> for more information)</p> | |
<!--<p>Alternatively the TCP Server can run with tcp-server.bat/ tcp-server.sh | |
file in the bin directory of the Binary distribution of TCP Server.</p>--> | |
<a name="send"></a> | |
<h2>How to Send SOAP Messages Using TCP Transport</h2> | |
<p>TCP transport can be enabled easily from the call API. The following code | |
segment demonstrates how it can be done.</p> | |
<source><pre> | |
OMElement payload = ... | |
ServiceClient serviceClient = new ServiceClient(); | |
Options options = new Options(); | |
options.setTo(targetEPR); | |
<!--options.useSeperateListener(false);--> | |
<!--commented off as their is an error--- "The method useSeperateListener(boolean)is undefined for the type Options"> | |
serviceClient.setOptions(options); | |
OMElement response = | |
serviceClient.sendReceive(payload); | |
</pre> | |
</source> | |
<p>The transport that should be invoked is inferred from the targetEPR | |
(tcp://...). In this case it is TCP and the listener, also TCP . SOAP Message | |
has to be self contained in order to use Addressing. The other option is to | |
use the URI of the first child of the SOAP Body to dispatch the service. The | |
Parameter is of the type <a href="../faq.html#a2">OMElement</a>, the XML | |
representation of Axis2.</p> | |
<a name="samples"></a> | |
<h2>Samples</h2> | |
<p>Sample for a TCP Client can be found from the | |
samples/userguide/src/userguide/clients/TCPClient.java in the binary | |
distribution. This accesses the same Web service explained in the <a | |
href="userguide.html">Axis2 User's Guide</a>. The client first starts the | |
TCPServer with the same repository used for the <a | |
href="userguide.html">Axis2 User's Guide</a> samples. Since sample is already | |
deployed in the repository while trying the userguide it will be | |
automatically available.</p> | |
<p>In order to run the TCPClient.java, addressing should be engaged both in the | |
client and server sides. In client side, you can engage addressing by copying | |
the addressing-1.1.mar (AXIS2_HOME/repository/module) to AXIS2_HOME/lib directory.</p> | |
<a name="components"></a> | |
<h2>Transport Components</h2> | |
<p>Axis2 TCP transport has two components, a transport Listener for receiving | |
the Messages and transport Sender to send the SOAP Messages. Axis2 | |
installation has both the components built in to itself by default. In the | |
axis2.xml configuration file the two TCP transport components would look as | |
follows.</p> | |
<p>If the TCP server is started manually this configuration does not take | |
effect. In return this effects the transport Listener's start by Axis2. (e.g. | |
Listener started by the Complete Async interaction)</p> | |
<p>The following xml lines initializes the TCPTransport Receiver:</p> | |
<source><pre> | |
<transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer"> | |
<parameter name="port" locked="false">6060</parameter> | |
</transportReceiver></pre> | |
</source> | |
<p>The following xml lines adds the TCPTransport Sender:</p> | |
<source><pre><transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/></pre> | |
</source> | |
</body> | |
</html> |