<!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; How to configure Native approach and XML Stream API base approach</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>
      </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 ">How to configure Native approach and XML Stream API base approach</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" >


   
        <h1>How to configure Native approach and XML Stream API base approach</h1>

        <a name="native_approach"></a><section id="native_approach">
<h2><a name="How_to_use_Native_JSON_support"></a>How to use Native JSON support</h2>
            
<p>If you need to expose your POJO services to support pure JSON requests as well as SOAP requests, then you
                need to go through the following process to do that with this new feature introduced into Axis2 JSON
                support.</p>

            
<p>Step 1 : Set in-out message receiver and in-only message receiver</p>

            
<p>You need to set <code>org.apache.axis2.json.gson.rpc.JsonRpcMessageReceiver</code> with
                <code>http://www.w3.org/ns/wsdl/in-out</code> message exchange pattern. Also with <code>http://www.w3.org/ns/wsdl/in-only</code>
                message exchange pattern, set <code>org.apache.axis2.json.gson.rpc.JsonInOnlyRPCMessageReceiver</code>.  </p>

            
<p>eg.</p>
            
<div>
<pre>
            &lt;messageReceivers&gt;
                &lt;messageReceiver mep=&quot;http://www.w3.org/ns/wsdl/in-out&quot;
                                 class=&quot;org.apache.axis2.json.gson.rpc.JsonRpcMessageReceiver&quot;/&gt;
                &lt;messageReceiver mep=&quot;http://www.w3.org/ns/wsdl/in-only&quot;
                                 class=&quot;org.apache.axis2.json.gson.rpc.JsonInOnlyRPCMessageReceiver&quot;/&gt;
            &lt;/messageReceivers&gt;
            </pre></div>
            
<p>Step 2: Set message builder and message formatter</p>

            
<p>you need to edit axis2.xml in <code>[AXIS2_HOME]/conf/ </code>directory, to set <code>org.apache.axis2.json.gson.JsonBuilder</code>
                as message builder with application/json contentType to handle JSON requests and
                <code>org.apache.axis2.json.gson.JsonFormatter</code> as message formatter with application/json
                contentType to write response to wire as JSON format.</p>

            
<p>eg.</p>
            
<div>
<pre>
                  &lt;messageBuilder contentType=&quot;application/json&quot;
                                  class=&quot;org.apache.axis2.json.gson.JsonBuilder&quot; /&gt;

                  &lt;messageFormatter contentType=&quot;application/json&quot;
                                    class=&quot;org.apache.axis2.json.gson.JsonFormatter&quot; /&gt;
           </pre></div>
        </section>

        <a name="xml_stream_api_base_approach"></a><section id="xml_stream_api_base_approach">
<h2><a name="How_to_use_XML_stream_API_based_approach"></a>How to use XML stream API based approach</h2>

            
<p>You can use this XML Stream API based approach with databinding services like ADB and xmlbeans as well
                as with normal POJO services. Follow the steps mentioned below to use this new feature introduced into
                Axis2 JSON support.</p>

            
<p>Step 1 : Set message builder and message formatter</p>

            
<p>You need to edit axis2.xml in <code>[AXIS2_HOME]/conf/</code> directory, to set <code>org.apache.axis2.json.gson.JsonBuilder</code>
                as message builder with <code>application/json</code> contentType to handle JSON requests and,
                <code>org.apache.axis2.json.gson.JsonFormatter</code> as message formatter with <code>application/json</code> contentType to
                write response to wire as JSON format.</p>

            
<p>eg.</p>
            
<div>
<pre>
                &lt;messageBuilder contentType=&quot;application/json&quot;
                                class=&quot;org.apache.axis2.json.gson.JsonBuilder&quot; /&gt;

                &lt;messageFormatter contentType=&quot;application/json&quot;
                                  class=&quot;org.apache.axis2.json.gson.JsonFormatter&quot; /&gt;
                        
            </pre></div>

            
<p>Step 2: Set inflow handlers</p>

            
<p>Remove RequestURIOperationDispatcher handler from dispatch phase and place it as the last handler in
                transport phase. Now add new JSONMessageHandler after the RequestURIOperationDispatcher. Finally
                transport phase would be like following,</p>

            
<div>
<pre>
            &lt;phaseOrder type=&quot;InFlow&quot;&gt;
                &lt;!--  System predefined phases  --&gt;
                &lt;phase name=&quot;Transport&quot;&gt;
                    -------------
                    &lt;handler name=&quot;RequestURIOperationDispatcher&quot;
                             class=&quot;org.apache.axis2.dispatchers.RequestURIOperationDispatcher&quot;/&gt;
                    &lt;handler name=&quot;JSONMessageHandler&quot;
                             class=&quot;org.apache.axis2.json.gson.JSONMessageHandler&quot; /&gt;
                &lt;/phase&gt;
                ------------
            &lt;/phaseOrder&gt;
                    
            </pre></div>

        </section>

    

        </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>
