<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2022-07-14 
 | 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="20220714" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Application Server Specific Configuration Guide</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: 2022-07-14<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.2<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 ">Application Server Specific Configuration Guide</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>
    <li><a href="../release-notes/1.7.7.html" title="1.7.7"><span class="none"></span>1.7.7</a>  </li>
    <li><a href="../release-notes/1.7.8.html" title="1.7.8"><span class="none"></span>1.7.8</a>  </li>
    <li><a href="../release-notes/1.7.9.html" title="1.7.9"><span class="none"></span>1.7.9</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>Application Server Specific Configuration Guide</h1>
        
<p>This document provides configuration information required for
        your Application Server to run Apache Axis2 to its fullest
        potential.</p>
        <section>
<h2><a name="WebLogic"></a>WebLogic</h2>
            <section>
<h3><a name="Use_exploded_configuration_to_deploy_Axis2_WAR"></a>Use exploded configuration to deploy Axis2 WAR</h3>
                
<p>We recommend using the exploded configuration to deploy Axis2
                WAR in WebLogic application server to support the
                hotupdate/ hotdeployment features in Axis2. However, if you want to
                deploy custom WARs, say in a clustering environment, you need to
                add two additional files into the WEB-INF named &quot;services.list&quot; and
                &quot;modules.list&quot; under the modules and services directory
                respectively.</p>
                
<ul>
                
<li><b>WEB-INF/services/services.list</b> : should list all the
                services (aar files) that you want to expose.</li>
                
<li><b>WEB-INF/modules/modules.list</b> : should list all the
                modules (mar files) that you want to use.</li>
                </ul>
                NOTE: In both cases, please list one entry per line.
                
<p>WebLogic ships with JARs that conflict with JARs present in
                Axis2. Therefore use &lt;prefer-web-inf-classes&gt; to ensure that
                JARs packaged in Axis2 WAR are picked up from WEB-INF/lib. You can
                do this by setting the &lt;prefer-web-inf-classes&gt; element in
                WEB-INF/weblogic.xml to true. An example of weblogic.xml is shown
                below:</p>

<div>
<pre>
&lt;weblogic-web-app&gt;
 &lt;container-descriptor&gt;
    &lt;prefer-web-inf-classes&gt;true&lt;/prefer-web-inf-classes&gt;
  &lt;/container-descriptor&gt;
&lt;/weblogic-web-app&gt;
</pre></div>
                
<p>If set to true, the &lt;prefer-web-inf-classes&gt; element will
                force WebLogic's classloader to load classes located in the WEB-INF
                directory of a Web application in preference to application or
                system classes. This is a recommended approach since it only
                impacts a single Web module.</p>
                
<p>Please refer to the following documents in WebLogic
                for more information:</p>
                
<ul>
                
<li><a class="externalLink" href="http://e-docs.bea.com/wls/docs81/programming/classloading.html">WebLogic
                ServerApplication Classloading</a>- For more information on how
                WebLogic's class loader works</li>
                
<li><a class="externalLink" href="http://e-docs.bea.com/wls/docs81/webapp/deployment.html">Redeploying
                a Web Application in Exploded Directory Format</a></li>
                </ul>
            </section>
            <section>
<h3><a name="Lack_of_namespacing_on_serialised_items"></a>Lack of namespacing on serialised items</h3>
                
<p>BEA WebLogic Server 9.0 comes with its own StAX implementation.
                This results in lack of namespacing on serialised items. In turn,
                WebLogic server (WLS) breaks with AXIOM on the WLS classpath. Hence
                a filtering classloader is required:</p>
                
<p>Adding the following to weblogic-application.xml should resolve
                this issue:</p>

<div>
<pre>
&lt;prefer-application-packages&gt;
&lt;package-name&gt;com.ctc.wstx.*&lt;/package-name&gt;
&lt;package-name&gt;javax.xml.*&lt;/package-name&gt;
&lt;package-name&gt;org.apache.*&lt;/package-name&gt;
&lt;/prefer-application-packages&gt;
</pre></div>
                
<p>Note that the libraries listed--Xerces, StAX API, Woodstox--need
                to be on the application classpath.</p>
            </section>
        </section>
        <section>
<h2><a name="WebSphere"></a>WebSphere</h2>
            <section>
<h3><a name="Avoiding_conflicts_with_WebSphere.27s_JAX-WS_runtime"></a>Avoiding conflicts with WebSphere's JAX-WS runtime</h3>
                
<p>
                    The JAX-WS runtime in WebSphere Application Server is based on a modified version of Axis2 and these
                    classes are visible to application class loaders. This means that when deploying
                    a standard version of Axis2 on WAS 7.0 (and WAS 6.1 with the Web Services feature pack installed),
                    special configuration is required to avoid conflicts with the Axis2 classes used internally by WebSphere.
                    In particular it is necessary to change the class loader policy of the Web module to parent last. However,
                    this is not sufficient because Axis2 creates additional class loaders for modules and services, and
                    these use parent first class loading by default. Therefore, two things must be done to make a standard
                    Axis2 distribution work with WebSphere:
                </p>
                
<ol style="list-style-type: decimal">
                    
<li>
                        Before deploying the Axis2 WAR, edit the <code>axis2.xml</code> file and set the
                        <code>EnableChildFirstClassLoading</code> parameter to <code>true</code>.
                        Please note that this parameter is only supported in Axis2 1.5.5 or higher.
                        The parameter is already present in the default <code>axis2.xml</code> file included in the
                        WAR distribution, but its value is set to <code>false</code>. Therefore it is enough to change
                        the parameter value.
                    </li>
                    
<li>
                        After deployment, modify the application configuration to enable parent last class loading
                        for the Web module: in the WebSphere admin console, go the the configuration page for
                        the enterprise application, click on <i>Manage Modules</i> and locate the WAR containing
                        Axis2 (in the default WAR distribution, the module is called <i>Apache-Axis2</i>), then
                        change the <i>Class loader order</i> option to <i>Classes loaded with local class
                        loader first (parent last)</i>. Note that the class loader policy for the enterprise
                        application itself (which can be specified under <i>Class loading and update detection</i>)
                        is irrelevant, unless a custom EAR distribution is used that includes the Axis2 libraries
                        in the EAR instead of the WAR.
                    </li>
                </ol>
            </section>
            <section>
<h3><a name="Deploying_services_and_modules"></a>Deploying services and modules</h3>
                
<p>
                    By default (i.e. if the <i>Distribute application</i> option has not been disabled explicitly)
                    WebSphere will deploy the application in exploded form. The standard location for these files is
                    in the <code>installedApps</code> subdirectory in the WebSphere profile directory. This means that AAR
                    and MAR files can simply be deployed by dropping them into the corresponding folders. In this
                    scenario, hot deployment is supported and there is no need to update the <code>services.list</code>
                    and <code>modules.list</code> files. 
                </p>
                
<p>
                    However, the directory is still under control of WebSphere and manually deployed AAR and MAR files
                    will be removed e.g. when the application is upgraded. It may therefore be a good idea to configure
                    Axis2 to use a repository location outside of the <code>installedApps</code> directory.
                </p>
            </section>
            <section>
<h3><a name="Deploying_older_Axis2_versions"></a>Deploying older Axis2 versions</h3>
                
<p>
                    The instructions given above apply to Axis2 1.5.5 or higher. Older versions don't support
                    the <code>EnableChildFirstClassLoading</code> parameter, and we don't provide any support for
                    deploying these versions on WAS 6.1 (with the Web Services feature pack installed) or 7.0.
                    However, IBM has published a <a class="externalLink" href="https://www-304.ibm.com/support/docview.wss?uid=swg21315686">technote</a>
                    with an alternative approach that may work for older Axis2 versions.
                </p>
            </section>
            <section>
<h3><a name="Known_issues"></a>Known issues</h3>
                
<p>
                    On some WAS versions the following error may occur, e.g. when accessing a WSDL exposed by Axis2:
                </p>

<div>
<pre>java.lang.VerifyError: JVMVRFY013 class loading constraint violated;
class=org/apache/xerces/dom/CoreDocumentImpl, method=getDomConfig()Lorg/w3c/dom/DOMConfiguration</pre></div>
                
<p>
                    This is caused by the XmlBeans library
                    packaged with Axis2. This library contains a set of interfaces in the <code>org.w3c.dom</code> package
                    and this may cause issues with class loaders that don't use a simple parent-first policy.
                    To avoid this issue, upgrade your WAS to a more recent fix pack level, remove the XmlBeans library
                    from the Axis2 WAR or remove the content of the <code>org.w3c.dom</code> package from the XmlBeans library.
                </p>
            </section>
        </section>
    

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