| <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 and 1.1.1 releases 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="adv-userguide.html">Advance 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="adv-userguide.html">Axis2 Advacnce User's Guide</a>. The client first starts the |
| TCPServer with the same repository used for the <a |
| href="adv-userguide.html">Axis2 Advance 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.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> |