<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<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" xml: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>
</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>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>
</ul>
<h2>General</h2>
<ol>
<li><a name="a1" id="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>
</ol>
<h2>Class Loading Issues</h2>
<ol>
<li><a name="b1" id="b1"></a><strong>How do I access resources that
I put into my service /module archive file?</strong></li>
<li style="list-style: none; display: inline">
<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></li>
</ol>
<h2>Client API</h2>
<ol>
<li><a name="c1" id="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" id="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><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" id="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" id="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>Services</h2>
<ol>
<li><a name="e1" id="e1"></a><strong>How do I have multiple
services in one service archive?</strong></li>
<li style="list-style: none; display: inline">
<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></li>
</ol>
<h2>Web Archive / Server side</h2>
<ol>
<li><a name="f1" id="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>
</body>
</html>
