<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 at 2021-08-01 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20210801" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; The SOAP Monitor Module</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
      <script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script>
<meta http-equiv="content-type" content="" />      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2021-08-01<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.0<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
    <li class="active ">The SOAP Monitor Module</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Axis2/Java</li>
    <li><a href="../index.html" title="Home"><span class="none"></span>Home</a>  </li>
    <li><a href="../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="../release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="../release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="../release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="../release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="../release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="../release-notes/1.8.0.html" title="1.8.0"><span class="none"></span>1.8.0</a>  </li>
      </ul>
  </li>
    <li><a href="../modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="../tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="../docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li><a href="../docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a>  </li>
    <li><a href="../docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="../docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="../docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="../docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="../docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="../docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="../docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="../articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="../refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="../apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="../overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="../git.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="../release-process.html" title="Release Process"><span class="none"></span>Release Process</a>  </li>
    <li><a href="../guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="../siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="../thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<html>


<h1>Using the SOAP Monitor</h1>


<p><b>Warning: the SOAP Monitor uses a protocol based on Java serialization
and is therefore vulnerable to attacks. It should be used exclusively as a
development and debugging tool, but never be permanently enabled on production
systems.</b></p>


<p>Web service developers often want to see the SOAP messages that are being
used to invoke the Web services, along with the results of those messages.
The goal of the SOAP Monitor utility is to provide a way for the developers
to monitor these SOAP messages without requiring any special configuration or
restarting the server.</p>


<p>In this utility, a handler has been written and added to the global
handler chain. As SOAP requests and responses are received, the SOAP message
information is forwarded to a SOAP monitor service where it can be displayed
using a Web browser interface. The SOAP message information is accessed by a
Web browser by going to http://localhost:8080/axis2/SOAPMonitor (where 8080
is the port number where the application server is running). The SOAP message
information is displayed through a Web browser by using an applet that opens
a socket connection to the SOAP monitor service. This applet requires a Java
plug-in 1.3 or higher to be installed in your browser. If you do not have a
correct plug-in, the browser will prompt you to install one. The port used by
the SOAP monitor service to communicate with applets is configurable. Edit
the web.xml file to change the port used by the Axis2 Web application.</p>


<p>The SOAP Monitor module (soapmonitor.mar) is available in the axis2.war
but it is not engaged by default. The SOAP Monitor is NOT enabled by default
for security reasons.</p>


<p>The SOAP Monitor can be engaged by inserting the following in the
axis2.xml file.</p>

<div>
<pre>   &lt;module ref=&quot;soapmonitor&quot;/&gt;</pre></div>

<p>In the axis2.xml file, define your phase orders for the 'soapmonitorPhase'
referenced in the module.xml of soapmonitor.mars. Below is an example which
should NOT be copied exactly, since the default phases change occasionally.
The important point here is that 'soapmonitorPhase' should be placed under
the 'user can add his own phases to this area' comment in the 'inflow',
'outflow', 'INfaultflow', and 'Outfaultflow' sections.</p>

<div>
<pre>    &lt;phaseOrder type=&quot;inflow&quot;&gt;
        &lt;!--System pre defined phases--&gt;
        &lt;phase name=&quot;TransportIn&quot;/&gt;
        &lt;phase name=&quot;PreDispatch&quot;/&gt;
        &lt;phase name=&quot;Dispatch&quot; class=&quot;org.apache.axis2.engine.DispatchPhase&quot;&gt;
            &lt;handler name=&quot;AddressingBasedDispatcher&quot;
                     class=&quot;org.apache.axis2.dispatchers.AddressingBasedDispatcher&quot;&gt;
                &lt;order phase=&quot;Dispatch&quot;/&gt;
            &lt;/handler&gt;
            &lt;handler name=&quot;RequestURIBasedDispatcher&quot;
                     class=&quot;org.apache.axis2.dispatchers.RequestURIBasedDispatcher&quot;&gt;
                &lt;order phase=&quot;Dispatch&quot;/&gt;
            &lt;/handler&gt;
            &lt;handler name=&quot;SOAPActionBasedDispatcher&quot;
                     class=&quot;org.apache.axis2.dispatchers.SOAPActionBasedDispatcher&quot;&gt;
                &lt;order phase=&quot;Dispatch&quot;/&gt;
            &lt;/handler&gt;
            &lt;handler name=&quot;SOAPMessageBodyBasedDispatcher&quot;
                     class=&quot;org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher&quot;&gt;
                &lt;order phase=&quot;Dispatch&quot;/&gt;
            &lt;/handler&gt;
            &lt;handler name=&quot;InstanceDispatcher&quot;
                     class=&quot;org.apache.axis2.engine.InstanceDispatcher&quot;&gt;
                &lt;order phase=&quot;PostDispatch&quot;/&gt;
            &lt;/handler&gt;
        &lt;/phase&gt;
        &lt;!--System pre defined phases--&gt;
        &lt;!--After Postdispatch phase module author or or service author can add any phase he want--&gt;
        &lt;phase name=&quot;userphase1&quot;/&gt;
        &lt;phase name=&quot;soapmonitorPhase&quot;/&gt;
    &lt;/phaseOrder&gt;
    &lt;phaseOrder type=&quot;outflow&quot;&gt;
        &lt;!--user can add his own phases to this area--&gt;
        &lt;phase name=&quot;userphase1&quot;/&gt;
        &lt;phase name=&quot;soapmonitorPhase&quot;/&gt;
        &lt;!--system predefined phase--&gt;
        &lt;!--these phase will run irrespective of the service--&gt;
        &lt;phase name=&quot;PolicyDetermination&quot;/&gt;
        &lt;phase name=&quot;MessageOut&quot;/&gt;
    &lt;/phaseOrder&gt;
    &lt;phaseOrder type=&quot;INfaultflow&quot;&gt;
        &lt;!--user can add his own phases to this area--&gt;
        &lt;phase name=&quot;userphase1&quot;/&gt;
        &lt;phase name=&quot;soapmonitorPhase&quot;/&gt;
    &lt;/phaseOrder&gt;
    &lt;phaseOrder type=&quot;Outfaultflow&quot;&gt;
        &lt;!--user can add his own phases to this area--&gt;
        &lt;phase name=&quot;userphase1&quot;/&gt;
        &lt;phase name=&quot;soapmonitorPhase&quot;/&gt;
        &lt;phase name=&quot;PolicyDetermination&quot;/&gt;
        &lt;phase name=&quot;MessageOut&quot;/&gt;
    &lt;/phaseOrder&gt;</pre></div>


<p>To configure the servlet to communicate with the applet, add the following
code to the web.xml (The SOAPMonitorPort is configurable.):</p>

<div>
<pre>    &lt;servlet&gt;
       &lt;servlet-name&gt;SOAPMonitorService&lt;/servlet-name&gt;
       &lt;display-name&gt;SOAPMonitorService&lt;/display-name&gt;
       &lt;servlet-class&gt;
         org.apache.axis2.soapmonitor.servlet.SOAPMonitorService
       &lt;/servlet-class&gt;
       &lt;init-param&gt;
          &lt;param-name&gt;SOAPMonitorPort&lt;/param-name&gt;
          &lt;param-value&gt;5001&lt;/param-value&gt;
       &lt;/init-param&gt;
       &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;

    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;SOAPMonitorService&lt;/servlet-name&gt;
        &lt;url-pattern&gt;/SOAPMonitor&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;</pre></div>


<p>Finally, the applet classes must be placed into the Web application so that
they can be loaded by the Web browser. You can get the compiled applet
classes from the WEB-INF/lib/axis2-soapmonitor-servlet-1.8.0.jar which is inside
the extracted axis2.war. To extract the content of the file, simply
execute the command, <code>jar -xf axis2-soapmonitor-servlet-1.8.0.jar</code>.
The applet code is in the org.apache.axis2.soapmonitor.applet package and therefore 
the 'org' directory created by the unpacking of JAR file should be placed
in &lt;CATALINA_HOME&gt;/webapps/axis2/.</p>


<p>Using a Web browser, go to http[s]://host[:port][/webapp]/SOAPMonitor
(e.g.http://localhost:8080/axis2/SOAPMonitor) substituting the correct values
for your Web application. This will show the SOAP Monitor applet used to view
the service requests and responses. Any requests to services that have been
configured and deployed correctly should show up in the applet.</p>


<p>The SOAPMonitor with attachments currently serializes themselves as base64
characters. It is therefore recommended to use the TCPMon tool to correctly
capture MTOM and SWA messages as an multipart mime where the binary data is
an attachment.</p>

</html>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>