<!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; Writing your Own Axis2 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 name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><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 ">Writing your Own Axis2 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="https://github.com/apache/axis-axis2-java-core/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 xmlns="http://www.w3.org/1999/xhtml">

<a name="Modules" id="Modules"></a>

<h1>Writing Your Own Axis2 Module</h1>

<p>Axis2 provides extended support for modules (See the <a href="Axis2ArchitectureGuide.html">Architecture
Guide</a> for more details about modules in Axis2). Let's create a
custom module and deploy it to MyService, which we created
earlier.</p>

<p>Send your feedback or questions to: <a class="externalLink" href="mailto:java-dev@axis.apache.org?subject=[Axis2]">java-dev@axis.apache.org</a>.
( Subscription details are available on the <a href="../mail-lists.html">Axis2 site</a>.)
Kindly prefix subject with [Axis2].</p>
<section>
<h2><a name="Content_List"></a>Content List</h2>

<ul>

<li><a href="#MyService_with_a_Logging_Module">MyService with a
Logging Module</a>

<ul>

<li><a href="#Step1_:_LoggingModule_Class">Step1 : LoggingModule
Class</a></li>

<li><a href="#Step2_:_LogHandler">Step2 : LogHandler</a></li>

<li><a href="#Step3_:_module_xml">Step3 : module.xml</a></li>

<li><a href="#Step_4:_Modify_the_axis2_xml">Step4:
Modify the &quot;axis2.xml&quot;</a></li>

<li><a href="#Step5_:_Modify_the_services_xml">Step5 :
Modify the &quot;services.xml</a></li>

<li><a href="#Step6_:_Packaging">Step6 : Packaging</a></li>

<li><a href="#Step7_:_Deploy_the_Module_in_Axis2">Step7 : Deploy
the Module in Axis2</a></li>
</ul>
</li>
</ul>

<p>The following steps show the actions that need to be performed
to deploy a custom module for a given Web service:</p>

<ol style="list-style-type: decimal">

<li>

<p style="margin-bottom: 0in">Create the Module Implementation</p>
</li>

<li>

<p style="margin-bottom: 0in">Create the Handlers</p>
</li>

<li>

<p style="margin-bottom: 0in">Create the module.xml</p>
</li>

<li>

<p style="margin-bottom: 0in">Modify the &quot;axis2.xml&quot; (if you need
custom phases)</p>
</li>

<li>

<p style="margin-bottom: 0in">Modify the &quot;services.xml&quot; to engage
modules at the deployment time.</p>
</li>

<li>

<p style="margin-bottom: 0in">Package in a &quot;.mar&quot; (Module
Archive)</p>
</li>

<li>

<p>Deploy the module in Axis2</p>
</li>
</ol>
<a name="MyService_with_a_Logging_Module" id="MyService_with_a_Logging_Module"></a>
<section>
<h3><a name="MyService_with_a_Logging_Module"></a>MyService with a Logging Module</h3>

<p>Let's write a simple logging module for our sample located at
the <b>&quot;samples\userguide\src&quot;</b> directory of the binary
distribution. This module contains one handler that just logs the
message that is passed through it. Axis2 uses &quot;.mar&quot; (Module
Archive) to deploy modules in Axis2. The following diagram shows
the file structure inside which needs to be there in the &quot;.mar&quot;
archive. Let's create all these and see how it works.</p>

<p><img src="images/userguide/ModuleView.jpg" align="bottom" border="0" id="Graphic5" alt="" /></p>
<a name="Step1_:_LoggingModule_Class" id="Step1_:_LoggingModule_Class"></a>
<section>
<h4><a name="Step1_:_LoggingModule_Class"></a>Step1 : LoggingModule Class</h4>

<p>LoggingModule is the implementation class of the Axis2 module.
Axis2 modules should implement the &quot;<a class="externalLink" href="https://github.com/apache/axis-axis2-java-core/blob/master/modules/kernel/src/org/apache/axis2/modules/Module.java">org.apache.axis2.modules.Module</a>&quot;
interface with the following methods.</p>

<div>
<pre>
public void init(ConfigurationContext configContext, AxisModule module) throws AxisFault;//Initialize the module
public void shutdown(ConfigurationContext configurationContext) throws AxisFault;//End of module processing
public void engageNotify(AxisDescription axisDescription) throws AxisFault;
public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault ;
public boolean canSupportAssertion(Assertion assertion) ;
</pre></div>

<p>The first three methods can be used to control the module
initialization and the termination, and the next three methods are
used to perform policy related operations. With the input parameter
AxisConfiguration, the user is provided with the complete
configuration hierarchy. This can be used to fine-tune the module
behavior by the module writers. For a simple logging service, we
can keep these methods blank in our implementation class.</p>
<a name="Step2_:_LogHandler" id="Step2_:_LogHandler"></a>
</section><section>
<h4><a name="Step2_:_LogHandler"></a>Step2 : LogHandler</h4>

<p>A module in Axis2 can contain, one or more handlers that perform
various SOAP header processing at different phases. (See the
<a href="Axis2ArchitectureGuide.html#incomingsoap">Architecture Guide</a> for more information on phases). To
write a handler one should implement <a class="externalLink" href="https://github.com/apache/axis-axis2-java-core/blob/master/modules/kernel/src/org/apache/axis2/engine/Handler.java">
org.apache.axis2.engine.Handler</a>. But for convenience, <a class="externalLink" href="https://github.com/apache/axis-axis2-java-core/blob/master/modules/kernel/src/org/apache/axis2/handlers/AbstractHandler.java">
org.apache.axis2.handlers.AbstractHandler</a> provides an abstract
implementation of the Handler interface.</p>

<p>For the logging module, we will write a handler with the
following methods. &quot;public void invoke(MessageContext ctx);&quot; is the
method that is called by the Axis2 engine when the control is
passed to the handler. &quot;public void revoke(MessageContext ctx);&quot; is
called when the handlers are revoked by the Axis2 engine.</p>

<div>
<pre>
public class LogHandler extends AbstractHandler implements Handler {
    private static final Log log = LogFactory.getLog(LogHandler.class);
    private String name;

    public String getName() {
        return name;
    }

    public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
        log.info(msgContext.getEnvelope().toString());
        return InvocationResponse.CONTINUE;        
    }

    public void revoke(MessageContext msgContext) {
        log.info(msgContext.getEnvelope().toString());
    }

    public void setName(String name) {
        this.name = name;
    }
}
</pre></div>
<a name="Step3_:_module_xml" id="Step3_:_module_xml"></a>
</section><section>
<h4><a name="Step3_:_module.xml"></a>Step3 : module.xml</h4>

<p>&quot;module.xml&quot; contains the deployment configurations for a
particular module. It contains details such as the Implementation
class of the module (in this example it is the &quot;LoggingModule&quot;
class and various handlers that will run in different phases). The
&quot;module.xml&quot; for the logging module will be as follows:</p>

<div>
<pre>
&lt;module name=&quot;logging&quot; class=&quot;userguide.loggingmodule.LoggingModule&quot;&gt;
   &lt;InFlow&gt;
        &lt;handler name=&quot;InFlowLogHandler&quot; class=&quot;userguide.loggingmodule.LogHandler&quot;&gt;
        &lt;order phase=&quot;loggingPhase&quot; /&gt;
        &lt;/handler&gt;
   &lt;/InFlow&gt;

   &lt;OutFlow&gt;
        &lt;handler name=&quot;OutFlowLogHandler&quot; class=&quot;userguide.loggingmodule.LogHandler&quot;&gt;
        &lt;order phase=&quot;loggingPhase&quot;/&gt;
        &lt;/handler&gt;
   &lt;/OutFlow&gt;

   &lt;OutFaultFlow&gt;
        &lt;handler name=&quot;FaultOutFlowLogHandler&quot; class=&quot;userguide.loggingmodule.LogHandler&quot;&gt;
        &lt;order phase=&quot;loggingPhase&quot;/&gt;
        &lt;/handler&gt;
   &lt;/OutFaultFlow&gt;

   &lt;InFaultFlow&gt;
        &lt;handler name=&quot;FaultInFlowLogHandler&quot; class=&quot;userguide.loggingmodule.LogHandler&quot;&gt;
        &lt;order phase=&quot;loggingPhase&quot;/&gt;
        &lt;/handler&gt;
   &lt;/InFaultFlow&gt;
&lt;/module&gt;
</pre></div>

<p>As you can see, there are four flows defined in the
&quot;module.xml&quot;</p>

<ol style="list-style-type: decimal">

<li>InFlow Represents the handler chain that will run when a
message is coming in.</li>

<li>

<p style="margin-bottom: 0in">OutFlow Represents the handler chain
that will run when the message is going out.</p>
</li>

<li>

<p style="margin-bottom: 0in">OutFaultFlow - Represents the handler
chain that will run when there is a fault, and the fault is going
out.</p>
</li>

<li>

<p>InFaultFlow - Represents the handler chain that will run when
there is a fault, and the fault is coming in.</p>
</li>
</ol>

<p>The following set of tags describe the name of the handler,
handler class, and the phase in which this handler is going to run.
&quot;InFlowLogHandler&quot; is the name given for the particular instance of
this handler class. The value of the class attribute is the actual
implementation class for this handler. Since we are writing a
logging handler, we can reuse the same handler in all these phases.
However, this may not be the same for all the modules. &quot;&lt;order
phase=&quot;loggingPhase&quot; /&gt;&quot; describes the phase in which this
handler runs.</p>

<div>
<pre>
&lt;handler name=&quot;InFlowLogHandler&quot; class=&quot;userguide.loggingmodule.LogHandler&quot;&gt;
&lt;order phase=&quot;loggingPhase&quot; /&gt;
&lt;/handler&gt;
</pre></div>

<p>To learn more about Phase rules, check out the article <a class="externalLink" href="http://www.developer.com/java/web/article.php/3529321">Axis2 Execution Framework</a></p>
<a name="Step_4:_Modify_the_axis2_xml"></a>
</section><section>
<h4><a name="Step_4:_Modify_the_.22axis2.xml.22"></a>Step 4: Modify the &quot;axis2.xml&quot;</h4>

<p>In this handler, the &quot;loggingPhase&quot;, is defined by the module
writer. It is not a pre-defined handler phase, hence the module
writer should introduce it to the &quot;axis2.xml&quot; (NOT the
services.xml) so that the Axis2 engine knows where to place the
handler in different &quot;flows&quot; (inFlow, outFlow, etc.). The following
XML lines show the respective changes made to the &quot;axis2.xml&quot; in
order to deploy the logging module in the Axis2 engine. This is an
extract of the phase section of &quot;axis2.xml&quot;.</p>

<div>
<pre>
&lt;!-- ================================================= --&gt;
&lt;!-- Phases --&gt;
&lt;!-- ================================================= --&gt;

&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 service author can add any phase he wants      --&gt;
        &lt;phase name=&quot;OperationInPhase&quot;/&gt;
                &lt;phase name=&quot;<span style="color: rgb(36, 193, 19);">loggingPhase</span>&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;OperationOutPhase&quot;/&gt;
        &lt;phase name=&quot;<span style="color: rgb(36, 193, 19);">loggingPhase</span>&quot;/&gt;
        &lt;!--system predefined phases--&gt;
        &lt;!--these phases 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;OperationInFaultPhase&quot;/&gt;
        &lt;phase name=&quot;<span style="color: rgb(36, 193, 19);">loggingPhase</span>&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;OperationOutFaultPhase&quot;/&gt;
        &lt;phase name=&quot;<span style="color: rgb(36, 193, 19);">loggingPhase</span>&quot;/&gt;
        &lt;phase name=&quot;PolicyDetermination&quot;/&gt;
        &lt;phase name=&quot;MessageOut&quot;/&gt;
    &lt;/phaseOrder&gt;
    
</pre></div>

<p>The text in green, the custom phase &quot;loggingPhase&quot; is placed in
all the flows, hence that phase will be called in all the message
flows in the engine. Since our module is associated with this
phase, the LogHandler inside the module will now be executed in
this phase.</p>
<a name="Step5_:_Modify_the_services_xml"></a>
</section><section>
<h4><a name="Step5_:_Modify_the_.22services.xml.22"></a>Step5 : Modify the &quot;services.xml&quot;</h4>

<p>Up to this point, we have created the required classes and
configuration descriptions for the logging module, and by changing
the &quot;axis2.xml&quot; we created the required phases for the logging
module.</p>

<p>Next step is to &quot;<b>engage</b>&quot; (use) this module in one of our
services. For this, let's use the same Web service that we have
used throughout the user's guide- MyService. However, since we need
to modify the &quot;services.xml&quot; of MyService in order to engage this
module, we use a separate Web service, but with similar
operations.</p>

<p>The code for this service can be found in the
&quot;<b>Axis2_HOME/samples/userguide/src/userguide/example2</b>&quot;
directory. The simple changes that we have done to &quot;services.xml'
are shown in green in the following lines of xml.</p>

<div>
<pre>
&lt;service name=&quot;<span style="color: rgb(36, 193, 19);">MyServiceWithModule</span>&quot;&gt;
    &lt;description&gt;
    This is a sample Web service with a logging module engaged.
    &lt;/description&gt;
    <span style="color: rgb(36, 193, 19);">&lt;module ref=&quot;logging&quot;/&gt;</span>
    &lt;parameter name=&quot;ServiceClass&quot; locked=&quot;xsd:false&quot;&gt;userguide.example2.MyService&lt;/parameter&gt;
    &lt;operation name=&quot;echo&quot;&gt;
    &lt;messageReceiver class=&quot;org.apache.axis2.receivers.RawXMLINOutMessageReceiver&quot;/&gt;
    &lt;/operation&gt;
    &lt;operation name=&quot;ping&quot;&gt;
    &lt;messageReceiver class=&quot;org.apache.axis2.receivers.RawXMLINOutMessageReceiver&quot;/&gt;
    &lt;/operation&gt;
&lt;/service&gt;
</pre></div>

<p>In this example, we have changed the service name (the
implementation class is very similar to what we have used earlier,
although it is in a different package). In addition we have added
the line <b>&quot;&lt;module ref=&quot;logging&quot;/&gt;&quot;</b> to &quot;services.xml&quot;.
This informs the Axis2 engine that the module &quot;logging&quot; should be
engaged for this service. The handler inside the module will be
executed in their respective phases as described by the
&quot;module.xml&quot;.</p>
<a name="Step6_:_Packaging" id="Step6_:_Packaging"></a>
</section><section>
<h4><a name="Step6_:_Packaging"></a>Step6 : Packaging</h4>

<p>Before deploying the module, we need to create the &quot;.mar&quot; file
for this module. This can be done, using the &quot;jar&quot; command and then
renaming the created .jar file. Else, you can find the
&quot;logging.mar&quot; that has already been created in the
&quot;<b>Axis2_HOME/samples/userguide</b>&quot; directory.</p>
<a name="Step7_:_Deploy_the_Module_in_Axis2" id="Step7_:_Deploy_the_Module_in_Axis2"></a>
</section><section>
<h4><a name="Step7_:_Deploy_the_Module_in_Axis2"></a>Step7 : Deploy the Module in Axis2</h4>

<p>Deploying a module in Axis2 requires the user to create a
directory with the name &quot;modules&quot; in the &quot;webapps/axis2/WEB-INF&quot;
directory of their servlet container, and then copying the &quot;.mar&quot;
file to that directory. So let's first create the &quot;modules&quot;
directory and drop the &quot;logging.mar&quot; into this directory.</p>

<p>Although the required changes to the &quot;services.xml&quot; is very
little, we have created a separate service archive
(MyServiceWithModule.aar) for users to deploy the service..</p>

<p>Deploy this service using the same steps used in the <a href="adv-userguide.html#Step5_Deploy_web_service">'Step 4: Deploy Web
Service'</a> sub section in '<a href="userguide.html#ws_codegen">Writing a New Service using
Codegeneration</a>', and copy the &quot;logging.mar&quot; file to the
&quot;modules&quot; directory.</p>

<p>Then run 'ant run.client.servicewithmodule' from
<b>axis2home/samples/userguide directory</b></p>

<p><font size="2"><b>Note (on samples):</b></font> All the samples
mentioned in the user's guide are located at the
<b>&quot;samples\userguide\src&quot;</b> directory of the binary
distribution.</p>
</section></section>
</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>
