<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Axis2 FAQ</title>
</head>

<body lang="en">
<h1>General</h1>
<ol>
  <li><strong>I see OMElements in all the signatures, in the stubs, Client
    API and in skeletons. Where is data binding?</strong><br>

    <p>Axis2 supports databinding using XML-Beans from 0.9 release. For more
    information please read the <a href="userguide.html">user guide</a></p>
  </li>
  <li><a name="a2"><strong>What is OMElement, What does it
    represents?</strong></a><br>

    <p>OMElement is Axis2 representation of XML, it provide a tree model like
    DOM. If you are familiar with DOM or JDOM you can soon get familiarize
    with OM quickly. For more information read<a href="OMTutorial.html">
    Axiom Tutorial</a></p>
  </li>
</ol>

<h1>Client API</h1>
<ol>
  <li><strong>I want to do request response Messaging, Where should I
    look?</strong><br>

    <p>Look at the <a
    href="../modules/core/src/org/apache/axis2/client/Call.java">Call</a>
    class, for more information please read the <a href="userguide.html">user
    guide</a></p>
  </li>
  <li><strong>I want to do One Way Messaging, Where should I
    look?</strong><br>

    <p>Look at the <a
    href="../modules/core/src/org/apache/axis2/client/MessageSender.java">MessageSender</a>
    class, for more information please read the <a href="userguide.html">user
    guide</a></p>
  </li>
  <li><strong>Why can not I set the some Addressing properties in the
    Call?</strong><br>

    <p>Only in the case of the Message Sender the user allowed to edit the
    Message Properties, In the case of Call the Message correlation is taken
    care by the Client API and the Addressing Headers are under the Control
    of Axis2.</p>
  </li>
  <li><strong>When I try to do a non blocking call with use Separate Listener
    true I get the error <i>to do two Transport Channels the Addressing
    Modules must be engaged</i>, Why is this?</strong><br>

    <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). But addressing is enabled by default. </p>
  </li>
  <li><a name="b5"><strong>What is Axis Repository?</strong></a><br>

    <p>Repository stores the configuration of Axis2, the users should specify
    the repository folder starting the Axis Server (HTTP or TCP). In the case
    of tomcat it is the webapps/axis2/WEB-INF folder. Following picture shows
    a sample repository.</p>
    <img src="images/faq/1.jpg">
    <p>Modules and services have a archive format defined and they are
    automatically picked up by Axis2 when they are copied to corresponding
    folders.</p>

    <h1>Maven</h1>
    <ol>
      <li><strong>I just installed maven and it gives an error when I was
        trying to run maven on Axis2 ......</strong>
        <p>Axis2 requires itest plugin to run some of the tests. Better get
        it using following command.</p>
        <ul>
          <li>maven plugin:download -DgroupId=maven-itest-plugin
            -DartifactId=maven-itest-plugin -Dversion=1.0
            -Dmaven.repo.remote=http://www.openejb.org/maven,http://www.ibiblio.org/maven</li>
        </ul>
      </li>
      <li><p><strong>I have problems building with maven 1.1</strong> ....<br>
        </p>
        <p>It seems that maven 1.1 doesn't come bundled with the required
        artifact plugin. Run following to get it updated<br>
        </p>
        <ul>
          <li>maven plugin:Download -DgroupId=maven
            -DartifactId=maven-artifact-plugin -Dversion=1.6.</li>
          <p>You may need to update the itest plugin too, using the above
          command in #1.</p>
        </ul>
      </li>
      <li><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">
              download relevant jars, if not available and compile and run
              tests of the system.</div>
            </td>
          </tr>
          <tr>
            <td>maven clean</td>
            <td>Clean all the stuff build so far, that are 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">
              run only the tests. Will do 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">
              Clean up and run all off line and on line 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 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">
              List down all the commands available with maven</div>
            </td>
          </tr>
          <tr>
            <td>
              <div align="left">
              maven multiproject</div>
            </td>
            <td>
              <div align="left">
              generate this site</div>
            </td>
          </tr>
          <tr>
            <td>
              <div align="left">
              maven idea:multiproject</div>
            </td>
            <td>
              <div align="left">
              generate 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>
        </tbody>
      </table>
      <br>
    </ol>
    <p></p>
  </li>
</ol>
</body>
</html>
