<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><transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer"> | |
<parameter name="port" locked="false">6060</parameter> | |
</transportReceiver></pre> | |
</source> | |
<p>Following xml lines adds the TCPTransport Sender:</p> | |
<source><pre><transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/></pre> | |
</source></body> | |
</html> |