<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2017-07-30 
 | 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="20170730" />
    <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: 2017-07-30<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.6<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.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a>  </li>
    <li><a href="../release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a>  </li>
    <li><a href="../release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a>  </li>
    <li><a href="../release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a>  </li>
    <li><a href="../release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a>  </li>
    <li><a href="../release-notes/1.7.6.html" title="1.7.6"><span class="none"></span>1.7.6</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="../svn.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>
<div class="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 <tt>org.apache.axis2.json.gson.rpc.JsonRpcMessageReceiver</tt> with
                <tt>http://www.w3.org/ns/wsdl/in-out</tt> message exchange pattern. Also with <tt>http://www.w3.org/ns/wsdl/in-only</tt>
                message exchange pattern, set <tt>org.apache.axis2.json.gson.rpc.JsonInOnlyRPCMessageReceiver</tt>.  </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 <tt>[AXIS2_HOME]/conf/ </tt>directory, to set <tt>org.apache.axis2.json.gson.JsonBuilder</tt>
                as message builder with application/json contentType to handle JSON requests and
                <tt>org.apache.axis2.json.gson.JsonFormatter</tt> 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>
        </div>

        <a name="xml_stream_api_base_approach"></a>
<div class="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 <tt>[AXIS2_HOME]/conf/</tt> directory, to set <tt>org.apache.axis2.json.gson.JsonBuilder</tt>
                as message builder with <tt>application/json</tt> contentType to handle JSON requests and,
                <tt>org.apache.axis2.json.gson.JsonFormatter</tt> as message formatter with <tt>application/json</tt> 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>

        </div>

    

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