blob: 7e50bc417d3bf1de4937970b331f5b8f56ca9777 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="">
<title>The SOAP Monitor Module</title>
<link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" />
</head>
<body>
<h1>Using the SOAP Monitor</h1>
<p>Web service developers often have the need to see the SOAP messages being
used to invoke Web services along with the results of those messages. The
goal of the SOAP Monitor utility is to provide a way for these developers to
monitor the SOAP messages being used without requiring any special
configuration or restarting of 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 should 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 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>
<source><pre> &lt;module ref="soapmonitor"/&gt;</pre>
</source>
<p>Then in the axis2.xml file define your phase orders for '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>
<pre> &lt;phaseOrder type="inflow"&gt;
&lt;!--System pre defined phases--&gt;
&lt;phase name="TransportIn"/&gt;
&lt;phase name="PreDispatch"/&gt;
&lt;phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase"&gt;
&lt;handler name="AddressingBasedDispatcher"
class="org.apache.axis2.engine.AddressingBasedDispatcher"&gt;
&lt;order phase="Dispatch"/&gt;
&lt;/handler&gt;
&lt;handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.engine.RequestURIBasedDispatcher"&gt;
&lt;order phase="Dispatch"/&gt;
&lt;/handler&gt;
&lt;handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.engine.SOAPActionBasedDispatcher"&gt;
&lt;order phase="Dispatch"/&gt;
&lt;/handler&gt;
&lt;handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"&gt;
&lt;order phase="Dispatch"/&gt;
&lt;/handler&gt;
&lt;handler name="InstanceDispatcher"
class="org.apache.axis2.engine.InstanceDispatcher"&gt;
&lt;order phase="PostDispatch"/&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="userphase1"/&gt;
&lt;phase name="soapmonitorPhase"/&gt;
&lt;/phaseOrder&gt;
&lt;phaseOrder type="outflow"&gt;
&lt;!--user can add his own phases to this area--&gt;
&lt;phase name="userphase1"/&gt;
&lt;phase name="soapmonitorPhase"/&gt;
&lt;!--system predefined phase--&gt;
&lt;!--these phase will run irrespective of the service--&gt;
&lt;phase name="PolicyDetermination"/&gt;
&lt;phase name="MessageOut"/&gt;
&lt;/phaseOrder&gt;
&lt;phaseOrder type="INfaultflow"&gt;
&lt;!--user can add his own phases to this area--&gt;
&lt;phase name="userphase1"/&gt;
&lt;phase name="soapmonitorPhase"/&gt;
&lt;/phaseOrder&gt;
&lt;phaseOrder type="Outfaultflow"&gt;
&lt;!--user can add his own phases to this area--&gt;
&lt;phase name="userphase1"/&gt;
&lt;phase name="soapmonitorPhase"/&gt;
&lt;phase name="PolicyDetermination"/&gt;
&lt;phase name="MessageOut"/&gt;
&lt;/phaseOrder&gt;</pre>
<p>To configure the servlet to communicate with the applet, add the following
to web.xml (the SOAPMonitorPort is configurable): </p>
<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>
<p>Finally, compile the applet classes and place them at the root of the war
- for example axis2/SOAPMonitorApplet*.class/WEB-INF :</p>
<pre>javac -classpath axis2-soapmonitor.jar SOAPMonitorApplet.java</pre>
<p>You can find the SOAPMonitorApplet.java in the source distribution. </p>
<p>Alternatively, you can get the compiled applet classes from the
axis2-soapmonitor-*.jar from inside the expanded axis2.war under WEB-INF/lib
. Simply execute 'jar -xf axis2-soapmonitor-*.jar' and place the applet
classes as axis2/SOAPMonitorApplet*.class/WEB-INF. </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 for
viewing service requests and responses. Any requests to services that have
been configured and deployed correctly should show up in the applet.</p>
</body>
</html>