| <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&r=1&w=2">developer</a> | |
| or <a | |
| href="http://marc.theaimsgroup.com/?l=axis-user&r=1&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<version>\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="@axis2_version_dir@/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> <serviceGroup> | |
| <service <strong>name="myService1"</strong>> | |
| ........................... | |
| </service> | |
| <service <strong>name="myService2"</strong>> | |
| ........................... | |
| </service> | |
| <serviceGroup></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> <service> | |
| ............... | |
| <service></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> |