<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jun 28, 2015 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Axis2 - 


Writing your Own Axis2 Module</title>
    <style type="text/css" media="all">
      @import url("../css/maven-base.css");
      @import url("../css/maven-theme.css");
      @import url("../css/site.css");
    </style>
    <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20150628" />
    <meta http-equiv="Content-Language" content="en" />
        <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="composite">
    <div id="banner">
                        <a href="http://www.apache.org/" id="bannerLeft">
                                        <img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2" />
                </a>
                                            <a href=".././" id="bannerRight">
                                                <img src="../images/axis.jpg" alt="Apache Axis2" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
            
                <div class="xleft">
        <span id="publishDate">Last Published: 2015-06-28</span>
                  &nbsp;| <span id="projectVersion">Version: 1.6.3</span>
                      </div>
            <div class="xright">                    <a href="../index.html" title="Axis2/Java">Axis2/Java</a>
            |
                        <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
              
            
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
            
                                <h5>Axis2/Java</h5>
                  <ul>
                  <li class="none">
                          <a href="../index.html" title="Home">Home</a>
            </li>
          </ul>
                       <h5>Downloads</h5>
                  <ul>
                  <li class="none">
                          <a href="../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="../modules/index.html" title="Modules">Modules</a>
            </li>
                  <li class="none">
                          <a href="../tools/index.html" title="Tools">Tools</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="../docs/toc.html" title="Table of Contents">Table of Contents</a>
            </li>
                  <li class="none">
                          <a href="../docs/installationguide.html" title="Installation Guide">Installation Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/quickstartguide.html" title="QuickStart Guide">QuickStart Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/userguide.html" title="User Guide">User Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/jaxws-guide.html" title="JAXWS Guide">JAXWS Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/pojoguide.html" title="POJO Guide">POJO Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/spring.html" title="Spring Guide">Spring Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/webadminguide.html" title="Web Administrator's Guide">Web Administrator's Guide</a>
            </li>
                  <li class="none">
                          <a href="../docs/migration.html" title="Migration Guide (from Axis1)">Migration Guide (from Axis1)</a>
            </li>
          </ul>
                       <h5>Resources</h5>
                  <ul>
                  <li class="none">
                          <a href="../faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../articles.html" title="Articles">Articles</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../refLib.html" title="Reference Library">Reference Library</a>
            </li>
                  <li class="none">
                          <a href="../api/index.html" title="Online Java Docs">Online Java Docs</a>
            </li>
          </ul>
                       <h5>Get Involved</h5>
                  <ul>
                  <li class="none">
                          <a href="../overview.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../svn.html" title="Checkout the Source">Checkout the Source</a>
            </li>
                  <li class="none">
                          <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../release-process.html" title="Release Process">Release Process</a>
            </li>
                  <li class="none">
                          <a href="../guidelines.html" title="Developer Guidelines">Developer Guidelines</a>
            </li>
                  <li class="none">
                          <a href="../siteHowTo.html" title="Build the Site">Build the Site</a>
            </li>
          </ul>
                       <h5>Project Information</h5>
                  <ul>
                  <li class="none">
                          <a href="../team-list.html" title="Project Team">Project Team</a>
            </li>
                  <li class="none">
                          <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                  <li class="none">
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code">Source Code</a>
            </li>
                  <li class="none">
                          <a href="../thanks.html" title="Acknowledgements">Acknowledgements</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
      </a>
                   
            
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License. --><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>
<div class="section"><h2>Content List<a name="Content_List"></a></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>
<div class="section"><h3>MyService with a Logging Module<a name="MyService_with_a_Logging_Module"></a></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>
<div class="section"><h4>Step1 : LoggingModule Class<a name="Step1_:_LoggingModule_Class"></a></h4>
<p>LoggingModule is the implementation class of the Axis2 module.
Axis2 modules should implement the &quot;<a class="externalLink" href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/modules/Module.java?rev=396785&amp;view=log">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>
</div><div class="section"><h4>Step2 : LogHandler<a name="Step2_:_LogHandler"></a></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="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Handler.java?rev=357187&amp;view=log">
org.apache.axis2.engine.Handler</a>. But for convenience, <a class="externalLink" href="http://svn.apache.org/viewcvs.cgi/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/handlers/AbstractHandler.java?rev=396788&amp;view=log">
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>
</div><div class="section"><h4>Step3 : module.xml<a name="Step3_:_module.xml"></a></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>
</div><div class="section"><h4>Step 4: Modify the &quot;axis2.xml&quot;<a name="Step_4:_Modify_the_axis2.xml"></a></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>
</div><div class="section"><h4>Step5 : Modify the &quot;services.xml&quot;<a name="Step5_:_Modify_the_services.xml"></a></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>
</div><div class="section"><h4>Step6 : Packaging<a name="Step6_:_Packaging"></a></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>
</div><div class="section"><h4>Step7 : Deploy the Module in Axis2<a name="Step7_:_Deploy_the_Module_in_Axis2"></a></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>Note: To see the logs, the user needs to modify the
&quot;log4j.properties&quot; to log INFO. The property file is located in
&quot;<b>webapps/axis2/WEB-INF/classes</b>&quot; of your servlet
container. Change the line &quot;log4j.rootCategory= ERROR, LOGFILE&quot; to
&quot;log4j.rootCategory=INFO, ERROR, LOGFILE&quot;.</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>
</div></div>
</html>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
              Copyright &#169;                    2004-2015
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
            
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
