| <html> |
| <head> |
| <meta http-equiv="content-type" content=""> |
| <title>Axis2 FAQ</title> |
| </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>Any other doubts/issues e-mail your questions to:</p> |
| <ul> |
| <li>Developers send to:<a |
| href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></li> |
| <li>Users send to:<a |
| href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a></li> |
| </ul> |
| |
| <p>Prefix subject with [Axis2]. To subscribe to mailing list see <a |
| href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p> |
| |
| <h2>Content of Questions and Answers</h2> |
| <ul> |
| <li>General |
| <ul> |
| <li><a href="#a1">Where is data binding?</a></li> |
| <li><a href="#a2">What is OMElement, What does it represents?</a></li> |
| <li><a href="#a3">Integration security tests fail with JDK 1.5<br> |
| </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 trying to invoke |
| a service I am getting 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 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 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="1_0/userguide.html" |
| target="_blank">User Guide</a></p> |
| </li> |
| <li><a name="a2"></a><strong>What is OMElement, What does it |
| represents?</strong><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="1_0/OMTutorial.html" |
| target="_blank"> Axiom Tutorial</a></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> |
| </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"); |
| |
| or |
| |
| AxisService myService = msgCtx.getAxisService();</pre> |
| |
| <p>Then you can ask for service class loader using which you can access its |
| resources</p> |
| <pre> ClassLoader clsLoader = myService.getServiceClassLoader(); |
| clsLoader.getResourceAsStream("myResource");</pre> |
| |
| <p>2. To initialize 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_0/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 name="c3"></a><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="c4"></a><strong>I have engaged addressing and when I trying to |
| invoke a service I am getting an exception </strong><br> |
| |
| <p>If you have engaged addressing , then you have to have wsa:action , so |
| you have to called <br> |
| option.setAction("urn:myaction"); <br> |
| It should be not that the action should be a URI.</p> |
| </li> |
| <li><a name="c5"><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> |
| </li> |
| </ol> |
| |
| <h2>Maven</h2> |
| <ol> |
| <li><a name="d1"></a><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><a name="d2"></a><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><a name="d3"></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"> |
| 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> |
| <tr> |
| <td>maven dist-min-bin</td> |
| <td>Will generate the binary version of Axis2 minimal |
| distribution</td> |
| </tr> |
| <tr> |
| <td>maven dist-min-src</td> |
| <td>Will generate the source version of Axis2 minimal |
| distribution</td> |
| </tr> |
| <tr> |
| <td>maven dist-std-bin</td> |
| <td>Will generate the binary version of Axis2 standard |
| distribution</td> |
| </tr> |
| <tr> |
| <td>maven dist-std-bin</td> |
| <td>Will generate the source version of Axis2 standard |
| distribution</td> |
| </tr> |
| <tr> |
| <td>maven release</td> |
| <td>Generate all the distributales for Axis2</td> |
| </tr> |
| <tr> |
| <td>maven clean jar -Dmaven.test.skip=true -o</td> |
| <td>This will clean all the target folder and compile your source, |
| without running the tests or downloading snapshots of 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 |
| SHOULD look like below:</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 which will become |
| the name of the services. But if you want to have one service in the |
| archive file then there are two options, either have one service inside |
| serviceGroup tag or have only one service tag as shown below in your |
| services.xml, in which case, name of the service will be the name of the |
| archive file and you can not override that.</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 xalan-2.7.0.jar |
| (found <a href="http://www.apache.org/dist/java-repository/xalan/jars/" |
| target="_blank">here</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> |