<html>
<head>
  <meta content="">
  <meta content="">
  <meta content="">
  <meta http-equiv="content-type" content="">
  <title>TCP transport</title>
</head>

<body lang="en">
<h1>TCP transport</h1>

<p>Axis2 supports TCP as a transport. Axis2 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 send should be self contained.
This makes the interaction fast and simple. Since there are no application
headers, it does not have the privilege of having request URI, and Service
dispatching should be done with a alternative method. Thus,
RequestURIBasedDispatcher can not be used. Following are the two main
alternatives available in dispatching in Axis2 Environment.</p>
<ol>
  <li>Use the name space URI of the first child element of SOAPBody.
    (SOAPMessageBodyBasedDispatcher)</li>
  <li>Enable the WS-Addressing. In the case of 0.95 release addressing is
    default (SOAPActionBasedDispatcher)</li>
</ol>

<p>When TCP request is sent it's user's responsibility to use either
addressing or SOAP body base mechanism.</p>

<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#b5">repository</a> and port number as argument. 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 repository (See <a
href="userguide.html">User 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>

<h2>How to send SOAP Messages using TCP transport</h2>

<p>The TCP transport can be enabled easily from the call API. Following code
segment demonstrate how it can be done.</p>
<source><pre>OMElement payload = ...

ServiceClient serviceClient = new ServiceClient();
Options options = new Options();
options.setTo(targetEPR);
options.useSeperateListener(false);
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. Only other option one
can think of 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>

<h2>Sample</h2>

<p>Sample for a TCP Client can be found from the
samples/userguide/src/userguide/clients/TCPClient.java in the binary
distribution. This access the same web service explained in the <a
href="userguide.html">Axis2 userguide</a>. The client first starts the
TCPServer with the same repository used for the <a
href="userguide.html#samples">Axis2 userguide samples</a>. Since sample is
already deployed in the repository while trying the userguide it will be
automatically available.</p>

<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 like
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>Following xml lines initializes the TCPTransport Receiver:</p>
<source><pre>&lt;transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer"&gt;
    &lt;parameter name="port" locked="false"&gt;6060&lt;/parameter&gt;
&lt;/transportReceiver&gt;</pre>
</source>
<p>Following xml lines adds the TCPTransport Sender:</p>
<source><pre>&lt;transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/&gt;</pre>
</source></body>
</html>
