| <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> |