blob: 129d6df43a2e13e5ff598a61b58f09b4ae88ba49 [file] [log] [blame]
<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="@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> &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>