<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Axis2 FAQ</title>
  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all">
</head>

<body lang="en">
<h1>Frequently Asked Questions on Apache Axis2</h1>

<p>Got a question to be answered on Axis2? Then this document is just what
the doctor ordered.</p>

<h2>Ask your Questions Here</h2>

<p>If you have any other doubts/issues, e-mail your questions to:</p>
<ul>
  <li>Developers - :<a
    href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></li>
  <li>Users - :<a
    href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a></li>
</ul>

<p>Prefix subject with [Axis2]. <a
href="http://ws.apache.org/axis2/mail-lists.html">Subscribe</a> to our
mailing lists.<a href="http://ws.apache.org/axis2/mail-lists.html"></a></p>

<h2>Content of Questions and Answers</h2>
<ul>
  <li>General
    <ul>
      <li><a href="#a1">I'm having a problem using Axis2. What should I
        do?</a></li>
      <!--li><a href="#a2">What is OMElement, What does it represent?</a></li-->
      <li><a href="#a3">Integration security tests fail with JDK 1.5</a></li>
      <li><a href="#a4">Axis2 is not working with Java 6</a></li>
    </ul>
  </li>
  <li>Class Loading Issues
    <ul>
      <li><a href="#b1">How do I access resources in my service /module
        archive file?</a></li>
    </ul>
  </li>
  <li>Client API
    <ul>
      <li><a href="#c1">I want to do Request Response Messaging, Where should
        I look?<br>
        </a></li>
      <li><a href="#c2">I want to do One Way Messaging, Where should I
        look?</a></li>
      <li><a href="#c3">Error: 'to do two Transport Channels the Addressing
        Modules must be engaged'</a></li>
      <li><a href="#c4">I have engaged addressing, and when I try to invoke a
        service I get an exception</a></li>
      <li><a href="#c5">What is Axis Repository?</a></li>
    </ul>
  </li>
  <li>Maven
    <ul>
      <li><a href="#d1">Error when trying to run maven on Axis2</a></li>
      <li><a href="#d2">I have problems building with maven 1.1</a></li>
      <li><a href="#d3">What versions of maven are supported?</a></li>
      <li><a href="#d4">What are the frequently used maven commands?</a></li>
    </ul>
  </li>
  <li>Services
    <ul>
      <li><a href="#e1">How do I have multiple services in one service
        archive?</a></li>
    </ul>
  </li>
  <li>Web Archive/ Server Side
    <ul>
      <li><a href="#f1">I see an internal server error page when I try to
        view the WSDL file.<br>
        </a></li>
    </ul>
  </li>
  <li>WSDL and Code Generation
    <ul>
      <li><a href="#g1">Given a WSDL 2.0 document with HTTP Binding to
        WSDL2Java, should it not be able to generate a client stub</a></li>
    </ul>
  </li>
</ul>

<h2>General</h2>
<ol>
  <li><a name="a1"></a><strong>I'm having a problem using Axis2. What should
    I do?</strong><br>

    <p>First make sure you go through the user guide and this FAQ. If you are
    using a released version of Axis2, then there is a possibility that your
    problem has already being fixed in the latest code. <a
    href="http://ws.zones.apache.org/dist/axis2/nightly/">Download Axis2
    nightly builds</a> and test again.</p>
    <p>If the problem still persists, then try to search for your question in
    our <a
    href="http://marc.theaimsgroup.com/?l=axis-dev&amp;r=1&amp;w=2">developer</a>
    or <a
    href="http://marc.theaimsgroup.com/?l=axis-user&amp;r=1&amp;w=2">user</a>
    mailing archives as it might have already being answered.</p>
    <p>If your problem is not answered in the mailing list, now is the best
    time to post your question to the axis-user mailing list. If you think it
    is a bug, please fill a bug report in <a
    href="http://issues.apache.org/jira/browse/AXIS2">JIRA</a>. Please attach
    all the supportive information, like your wsdl, schema, clients,
    services, stacktraces, etc., to the JIRA issue you created, as it will
    help one of our contributors to re-create the problem. <b>PLEASE DO NOT
    ASK QUESTIONS USING JIRA; USE IT ONLY AS AN ISSUE TRACKER.</b></p>
    <p>If you are asking for an explanation of a feature in Axis2, there is a
    possibility that there is an article or FAQ written on it. Please search
    the web as there are lots of articles written and hosted by various
    sources on the web.</p>
    <p><b>Note</b> : When you ask questions in the mailing list, please
    remember that everyone working in our project are volunteers. No-one can
    be forced to fix your bugs (See <a
    href="http://www.apache.org/foundation/faq.html#what-is-apache-NOT-about">What
    is Apache not about?</a> ).</p>
    <p>Make sure you add enough information about your problem with
    stacktraces and any other supportive information. It will improve the
    chances of your question being answered. Prefixing your mail subject with
    prefixes like "URGENT" will not help you in any means. Yes we also accept
    all the blames about Axis2 in these mailing lists, as those will
    definitely help us to improve Axis2 :) .</p>
  </li>
  <li><a name="a3"></a><strong>Integration security tests fail with JDK
    1.5</strong><br>

    <p>You have to add Bouncy Castle as a JCE provider. Add the following
    entry to java.security file of the appropriate JRE on your machine. This
    file is available in the lib\security\ directory within the JRE
    directory.</p>
    <p>security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider</p>
    <p>security.provider.# will have to be decided depending on the existing
    entries in the java.security file</p>
    <p>NOTE: For Windows XP, the correct version can be found using 'java
    -version'. The correct file is JRE (typically c:\Program
    Files\Java\jre&lt;version&gt;\lib\security\java.security.</p>
  </li>
  <li><a name="a4"></a><strong>Axis2 is not working with Java 6</strong><br>

    <p>You have to copy the stax-api jar in the Axis2 distribution into your
    JRE's endorsed directory (see info on endorsed directory here -<a
    href="http://java.sun.com/j2se/1.4.2/docs/guide/standards/">
    http://java.sun.com/j2se/1.4.2/docs/guide/standards/</a>).</p>
    <p>This issue can also be resolved by copying the stax-api jar to
    Tomcat's common/endorsed folder, when deploying Axis2 in Tomcat.</p>
  </li>
</ol>

<h2>Class Loading Issues</h2>
<ol>
  <li><a name="b1"></a><strong>How do I access resources that I put into my
    service /module archive file?</strong></li>

  <p>Axis2 has the notion of service isolation where each service or module
  gets its own class loader. Using this class loader you can access any
  resource that you put into your service archive file. You may want to
  access your resources from different locations. For example,</p>

  <p>1. A third party module wants to access your resources. Then the
  scenario is as follows:</p>
  <pre>   AxisService myService =
   messageContext.getAxisConfiguration().getAxisService("serviceName"); </pre>

  <p>or</p>
  <pre>   AxisService myService = msgCtx.getAxisService();</pre>

  <p>Then you can use the service class loader through which you can access
  its resources</p>
  <pre>   ClassLoader clsLoader = myService.getServiceClassLoader();
   clsLoader.getResourceAsStream("myResource");</pre>

  <p>2. To initialize the service implementation class at the MessageReceiver
  level, the following steps need to be taken</p>
  <pre>   AxisService service = msgCtx.getAxisService();
   ClassLoader clsLoader = service.getServiceClassLoader();
   Class.forName("serviceName",clsLoader,true);</pre>

  <p>NOTE : Axis2 default MessageReciver uses the same technique to
  initialize service implementations</p>

  <p>3. If you want to load your resources at the service implementation
  class, then the scenario is as follows</p>
  <pre>   getClass().getClassLoader().getResourceAsStream("myResource");</pre>
</ol>

<h2>Client API</h2>
<ol>
  <li><a name="c1"></a><strong>I want to do Request-Response Messaging, Where
    should I look?</strong><br>

    <p>Look at the <a
    href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/ServiceClient.java"
    target="_blank">ServiceClient</a> class, for more information please read
    the <a href="1_1/adv-userguide.html" target="_blank">User's Guide</a></p>
  </li>
  <li><a name="c2"></a><strong>I want to do One Way Messaging, Where should I
    look?</strong><br>

    <p>From Axis2 0.94 onwards, both request-response and one way messaging
    will be handled by <a
    href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/ServiceClient.java"
    target="_blank">ServiceClient</a>.</p>
  </li>
  <li><a></a><strong>When I try to do a non blocking call with
    </strong>useSeparateListener=true
    <p>I get the error <i>to do two Transport Channels the Addressing Modules
    must be engaged</i>, Why is this?<br>
    </p>
    <p>To do the two transport channel invocation, you need to engage the
    addressing module. You can enable it by un-commenting the entry in the
    axis2.xml file or Call.engageModule(QName). However, addressing is
    enabled by default.</p>
  </li>
  <li><a name="c4"></a><strong>I have engaged addressing, and when I try to
    invoke a service I get an exception </strong><br>

    <p>If you have engaged addressing, then you must have wsa:action, the
    required WS-Addressing header. You have to call <br>
    <code>option.setAction("urn:myaction");</code>. Note that the action
    should be a URI.</p>
  </li>
  <li><a name="c5"></a><strong>What is Axis2 Repository?</strong><br>

    <p>The Repository stores the configuration of Axis2. The users should
    specify the repository folder of the Axis Server (HTTP or TCP). In the
    case of Tomcat, it is the webapps/axis2/WEB-INF folder. The following
    picture shows a sample repository.</p>
    <img src="images/faq/1.jpg">
    <p>Modules and services have an archive format defined and they are
    automatically picked up by Axis2 when they are copied to corresponding
    folders.</p>
  </li>
</ol>

<h2>Maven</h2>
<ol>
  <li><a name="d1"></a><strong>I just installed Maven and it gives an error
    when I try to run Maven on Axis2.</strong>
    <p>Axis2 requires itest plugin to run some of the tests. Better get it
    using the following command.</p>
    <ul>
      <li>maven plugin:download -DgroupId=maven-itest-plugin
        -DartifactId=maven-itest-plugin -Dversion=1.0
        -Dmaven.repo.remote=http://ws.zones.apache.org/~dims/maven</li>
    </ul>
  </li>
  <li><p><a name="d2"></a><strong>I have problems building with Maven
    1.1</strong></p>
    <p>It seems that Maven 1.1 doesn't come bundled with the required
    artifact plugin. Run the following command to get it updated<br>
    </p>
    <ul>
      <li>maven plugin:download -DgroupId=maven
        -DartifactId=maven-artifact-plugin -Dversion=1.6</li>
      <p>You may also need to update the itest plugin, using the above
      command in 1.</p>
    </ul>
  </li>
  <li><p><a name="d3"></a><strong>What versions of Maven are
    supported?</strong></p>
    <p>Versions 1.0.2 and 1.1 are supported. Maven2 is not supported as
    yet.</p>
  </li>
  <li><a name="d4"></a><strong>What are the frequently used Maven
    commands?</strong></li>

  <p></p>

  <table border="1" align="center">
    <tbody>
      <tr>
        <th scope="col">
          <div align="left">
          Command</div>
        </th>
        <th scope="col">
          <div align="left">
          Description</div>
        </th>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven</div>
        </td>
        <td>
          <div align="left">
          Downloads relevant jars if not available, and compiles and runs the
          tests in the system.</div>
        </td>
      </tr>
      <tr>
        <td>maven clean</td>
        <td>Cleans all the content built so far in the target folder. This
          will not clean the jar repository.</td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven test</div>
        </td>
        <td>
          <div align="left">
          Runs only the tests. Performs automatic compilation of changed
          sources as well. This will not run SOAP interop tests</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven clean all-tests</div>
        </td>
        <td>
          <div align="left">
          Cleans up and runs all offline and online tests.</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven itest</div>
        </td>
        <td>
          <div align="left">
          To run the online-mode tests for say the modules/integration, run
          "maven itest" from modules/integration</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven test itest</div>
        </td>
        <td>
          <div align="left">
          To run all the tests for say the modules/integration, run "maven
          test itest" from modules/integration</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven -g</div>
        </td>
        <td>
          <div align="left">
          Lists all the commands available in Maven</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven multiproject</div>
        </td>
        <td>
          <div align="left">
          Generates the site.</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven idea:multiproject</div>
        </td>
        <td>
          <div align="left">
          Generates IDEA .ipr, .iml and .iws project files.</div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
          maven -Dmaven.test.skip=true</div>
        </td>
        <td>Builds Axis2 and skips all the tests.</td>
      </tr>
      <tr>
        <td>maven dist-min-bin</td>
        <td>Generates the binary version of Axis2 minimal distribution</td>
      </tr>
      <tr>
        <td>maven dist-min-src</td>
        <td>Generates the source version of Axis2 minimal distribution</td>
      </tr>
      <tr>
        <td>maven dist-std-bin</td>
        <td>Generates the binary version of Axis2 standard distribution</td>
      </tr>
      <tr>
        <td>maven dist-std-src</td>
        <td>Generates the source version of Axis2 standard distribution</td>
      </tr>
      <tr>
        <td>maven release</td>
        <td>Generates all the distributables for Axis2.</td>
      </tr>
      <tr>
        <td>maven clean jar -Dmaven.test.skip=true -o</td>
        <td>Cleans the content in the target folder and compiles your source,
          without running the tests or downloading snapshots of the
          dependancies. This is the quickest way of compiling Axis2 sources.
          However it is highly recommended to run the tests all the time.</td>
      </tr>
    </tbody>
  </table>
  <br>
</ol>

<h2>Services</h2>
<ol>
  <li><a name="e1"></a><strong>How do I have multiple services in one service
    archive?</strong></li>

  <p>It's just a matter of writing a services.xml file to configure the
  service or services in an archive file. The corresponding services.xml
  <strong>must</strong> look as follows,</p>
  <pre>   &lt;serviceGroup&gt;
   &lt;service <strong>name="myService1"</strong>&gt;
   ...........................
   &lt;/service&gt;

   &lt;service <strong>name="myService2"</strong>&gt;
   ...........................
   &lt;/service&gt;
   &lt;serviceGroup&gt;</pre>

  <p>NOTE : The name attribute is a compulsory attribute that will become the
  name of the services. If you want to have one service in the archive file,
  then there are two options. You can either have one service inside the
  serviceGroup tag or have only one service tag, as shown below, in your
  services.xml, in which case, the name of the service will be the name of
  the archive file, which you cannot override.</p>
  <pre>   &lt;service&gt;
   ...............
   &lt;service&gt;</pre>
</ol>

<h2>Web Archive / Server side</h2>
<ol>
  <li><a name="f1"></a><strong>I see an internal server error page when I try
    to view the WSDL file.</strong><br>

    <p>This happens specifically with Tomcat 4.x and 5.0 in a JDK 1.5
    environment. The reason is that the system picks up a wrong transformer
    factory class. This can be solved simply by putting the <a
    href="http://www.apache.org/dist/java-repository/xalan/jars/">xalan-2.7.0.jar</a>
    into the axis2/WEB-INF/lib directory</p>
  </li>
</ol>

<h2>WSDL and Code Generation</h2>
<ol>
  <li><a name="g1"></a><strong>Given a WSDL 2.0 document with HTTP Binding to
    WSDL2Java, should it not be able to generate a client stub similar to
    what happens given a WSDL 1.1 document with SOAP Binding?</strong></li>

  <p>WSDL 2.0 is not supported yet. We do not have a working WSDL 2.0
  reader.</p>

  <p>However the codegen engine works off WOM (not WSDL4J). Hence if the WSDL
  2.0 reader is done, we are all set to generate code for it.</p>

  <p>And yes, it is perfectly possible for the codegen to generate code for
  the HTTP binding. We already have the client API support for making the
  REST calls and it should be a matter of putting in a correct template.</p>
</ol>
</body>
</html>
