<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Axis Reference Guide</title>
  <meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1">
  <link href="axis.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1 align="center"><img height="96" src="images/axis.jpg" width="176"></h1>
<h1>Axis Reference Guide</h1>
<i>1.2 Version</i>
<br>
<i>Feedback: <a href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>
<h3>Table of Contents</h3>
<ul>
  <li><a href="#Tools">Tools Reference</a></li>
  <ul>
    <li><a href="#WSDL2Java">WSDL2Java</a></li>
    <li><a href="#Java2WSDL">Java2WSDL</a></li>
    <li><a href="#Java2WSDL">Java2WSDL</a></li>
  </ul>
  <li><a href="#Deployment">Deployment (WSDD) Reference</a></li>
  <li><a href="#global_configuration">Global Axis Configuration</a></li>
  <li><a href="#individual_service">Individual Service Configuration</a></li>
  <li><a href="#axis_logging">Axis Logging Configuration</a></li>
  <li><a href="#axis_components">Pre-Configured Axis Components
Reference</a></li>
</ul>
<h2> <a name="Tools"></a>Tools Reference</h2>
<h3><a name="WSDL2Java"></a>WSDL2Java Reference</h3>
<p>Usage:&nbsp; java org.apache.axis.wsdl.WSDL2Java [options] WSDL-URI <br>
Options: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -h, --help <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print this message and exit <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v, --verbose <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print informational messages <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n, --noImports <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
only generate code for the immediate WSDL document <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -O, --timeout
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
timeout in seconds (default is 45, specify -1 to disable) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -D, --Debug <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print debug information <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -W, --noWrapped<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
turn off support for "wrapped" document/literal<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -s, --server-side <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
emit server-side bindings for web service <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -S, --skeletonDeploy
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
deploy skeleton (true) or implementation (false) in deploy.wsdd. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Default is false.&nbsp; Assumes --server-side. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -N, --NStoPkg
&lt;argument&gt;=&lt;value&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mapping of namespace to package <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -f, --fileNStoPkg
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
file of NStoPkg mappings (default NStoPkg.properties) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p, --package
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
override all namespace to package mappings, use this package <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name instead <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o, --output
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
output directory for emitted files <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d, --deployScope
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add scope to deploy.xml: "Application", "Request", "Session" <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -t, --testCase <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
emit junit testcase class for web service <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a, --all <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
generate code for all elements, even unreferenced ones <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -T, --typeMappingVersion <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
indicate 1.1 or 1.2. The default is 1.1 (SOAP 1.1 JAX-RPC compliant.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1.2 indicates SOAP 1.1 encoded.) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -F, --factory
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name of a custom class that implements GeneratorFactory interface
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(for extending Java generation functions)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i, --nsInclude
&lt;namespace&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
namescape to specifically include in the generated code (defaults to
all namespaces unless specifically excluded with the -x option)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -x, --nsExclude
&lt;namespace&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
namespace to specifically exclude from the generated code (defaults to
none excluded until first namespace included with -i option)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p, --property
&lt;name&gt;=&lt;value&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name and value of a property for use by the custom GeneratorFactory<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -H, --helperGen <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
emits separate Helper classes for meta data <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -U, --user &lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
username to access the WSDL-URI <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -P, --password
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
password to access the WSDL-URI <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c, --implementationClassName
&lt;argument&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
use this as the implementation class <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -w, --wrapArrays
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Prefer generating JavaBean classes like &quot;ArrayOfString&quot; for certain schema array patterns (default is to use String []) <br>
&nbsp; </p>
<h4> -h, --help</h4>
Print the usage statement and exit
<h4> -v, --verbose</h4>
See what the tool is generating as it is generating it.
<h4> -n, --noImports</h4>
Only generate code for the WSDL document that appears on the command
line.&nbsp; The default behaviour is to generate files for all WSDL
documents, the immediate one and all imported ones.
<h4> -O, --timeout</h4>
Timeout in seconds. The default is 45. Use -1 to disable the timeout.
<h4> -D, --Debug</h4>
Print debug information, which currently is WSDL2Java's symbol table.
Note that this is only printed after the symbol table is complete, ie.,
after the WSDL is parsed successfully.
<h4>-W, --noWrapped</h4>
This turns off the special treatment of what is called "wrapped"
document/literal
style operations. &nbsp;By default, WSDL2Java will recognize the
following
conditions:<br>
<ul>
  <li>If an input message has is a single part.</li>
  <li>The part is an element.</li>
  <li>The element has the same name as the operation</li>
  <li>The element's complex type has no attributes<br>
  </li>
</ul>
When it sees this, WSDL2Java will 'unwrap' the top level element, and
treat each of the components of the element as arguments to the
operation. This type of WSDL is the default for Microsoft .NET web
services, which wrap up RPC style arguments in this top level schema
element.
<h4> -s, --server-side</h4>
Emit the server-side bindings for the web service:
<ul>
  <li> a skeleton class named &lt;bindingName&gt;Skeleton.&nbsp; This
may or may not be emitted (see -S, --skeletonDeploy).</li>
  <li> an implementation template class named
&lt;bindingName&gt;Impl.&nbsp; Note that, if this class already exists,
then it is not emitted.</li>
  <li> deploy.wsdd</li>
  <li> undeploy.wsdd</li>
</ul>
<h4> -S, --skeletonDeploy &lt;argument&gt;</h4>
Deploy either the skeleton (true) or the implementation (false) in
deploy.wsdd.&nbsp; In other words, for "true" the service clause in the
deploy.wsdd file will look something like:
<pre class="example">&lt;service name="AddressBook" provider="java:RPC"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;parameter name="className" value="samples.addr.AddressBookSOAPBindingSkeleton"/&gt;<br>&nbsp;&nbsp;&nbsp; ...<br>&lt;/service&gt;</pre>
<p>and for "false" it would look like: </p>
<pre class="example">&lt;service name="AddressBook" provider="java:RPC"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;parameter name="className" value="samples.addr.AddressBookSOAPBindingImpl"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br>&lt;/service&gt;</pre>
<p>The default for this option is false.&nbsp; When you use this
option, the --server-side option is assumed, so you don't have to
explicitly specify --server-side as well. </p>
<h4> -N, --NStoPkg &lt;argument&gt;=&lt;value&gt;</h4>
By default, package names are generated from the namespace strings in
the WSDL document in a magical manner (typically, if the namespace is
of the form "http://x.y.com" or "urn:x.y.com" the corresponding package
will be "com.y.x").&nbsp; If this magic is not what you want, you can
provide your own mapping using the --NStoPkg argument, which can be
repeated as often as necessary, once for each unique namespace
mapping.&nbsp; For example, if there is a namespace in the WSDL
document called "urn:AddressFetcher2", and you want files generated
from the objects within this namespace to reside in the package
samples.addr, you would provide the following option to WSDL2Java:
<pre>--NStoPkg urn:AddressFetcher2=samples.addr</pre>
(Note that if you use the short option tag, "-N", then there must not
be a space between "-N" and the namespace.) <br>
&nbsp;
<h4> -f, --fileNStoPkg &lt;argument&gt;</h4>
If there are a number of namespaces in the WSDL document, listing a
mapping for them all could become tedious.&nbsp; To help keep the
command line terse, WSDL2Java will also look for mappings in a
properties file.&nbsp; By default, this file is named
"NStoPkg.properties" and it must reside in the default package (ie., no
package).&nbsp; But you can explicitly provide your own file using the
--fileNStoPkg option.
<p>The entries in this file are of the same form as the arguments to
the --NStoPkg command line option.&nbsp; For example, instead of
providing the command line option as above, we could provide the same
information in NStoPkg.properties: </p>
<pre>urn\:AddressFetcher2=samples.addr</pre>
(Note that the colon must be escaped in the properties file.)
<p>If an entry for a given mapping exists both on the command line and
in the properties file, the command line entry takes precedence. </p>
<h4> -p, --package &lt;argument&gt;</h4>
This is a shorthand option to map all namespaces in a WSDL document to
the same Java package name.&nbsp; This can be useful, but
dangerous.&nbsp; You must make sure that you understand the effects of
doing this.&nbsp; For instance there may be multiple types with the
same name in different namespaces.&nbsp; It is an error to use the
--NStoPkg switch and --package at the same time.
<h4> -o, --output &lt;argument&gt;</h4>
The root directory for all emitted files.
<h4> -d, --deployScope &lt;argument&gt;</h4>
Add scope to deploy.wsdd: "Application", "Request", or "Session".&nbsp;
If this option does not appear, no scope tag appears in deploy.wsdd,
which the Axis runtime defaults to "Request".
<h4> -t, --testCase</h4>
Generate a client-side JUnit test case.&nbsp; This test case can stand
on its own, but it doesn't really do anything except pass default
values (null for objects, 0 or false for primitive types).&nbsp; Like
the generated implementation file, the generated test case file could
be considered a template that you may fill in.
<h4> -a, --all</h4>
Generate code for all elements, even unreferenced ones.&nbsp; By
default, WSDL2Java only generates code for those elements in the WSDL
file that are referenced.
<p>A note about what it means to be referenced.&nbsp; We cannot simply
say:&nbsp; start with the services, generate all bindings referenced by
the service, generated all portTypes referenced by the referenced
bindings, etc.&nbsp; What if we're generating code from a WSDL file
that only contains portTypes, messages, and types?&nbsp; If WSDL2Java
used service as an anchor, and there's no service in the file, then
nothing will be generated.&nbsp; So the anchor is the lowest element
that exists in the WSDL file in the order: <br>
</p>
<ol>
  <li>types </li>
  <li>portTypes </li>
  <li>bindings </li>
  <li>services </li>
</ol>
<p>For example, if a WSDL file only contained types, then all the
listed types would be generated.&nbsp; But if a WSDL file contained
types and a portType, then that portType will be generated and only
those types that are referenced by that portType.
</p>
<p>Note that the anchor is searched for in the WSDL file appearing on
the command line, <b>not</b> in imported WSDL files. This allows one
WSDL file to import constructs defined in another WSDL file without the
nuisance of having all the imported WSDL file's constructs generated.
</p>
<h4> -T, --typeMappingVersion &lt;argument&gt;</h4>
Indicate 1.1 or 1.2.&nbsp; The default is 1.2 (SOAP 1.2 JAX-RPC
compliant).
<h4> -F, --factory &lt;argument&gt;</h4>
Used to extend the functionality of the WSDL2Java emitter. The argument
is the name of a class which extends JavaWriterFactory.
<h4> -H, --helperGen</h4>
Emits separate Helper classes for meta data.
<h4> -U, --user &lt;argument&gt;</h4>
This username is used in resolving the WSDL-URI provided as the input
to WSDL2Java. &nbsp;If the URI contains a username, this will override
the command line switch. &nbsp;An example of a URL with a username and
password is: <code>http://user:password@hostname:port/path/to/service?WSDL</code><br>
<h4> -P, --password &lt;argument&gt;</h4>
This password is used in resolving the WSDL-URI provided as the input
to WSDL2Java. &nbsp;If the URI contains a password, this will override
the command line switch.&nbsp; <br>
<h4> -c, --implementationClassName &lt;argument&gt;</h4>
<p>Set the name of the implementation class.Especially useful when
exporting an existing class as a web service using java2wsdl 
followed by wsdl2java.&nbsp;If you are using the skeleton deploy option you must make sure, after generation, 
that your implementation class implements the port type name interface generated
by wsdl2java.&nbsp;You should also make sure that all your exported methods throws
java.lang.RemoteException.
</p>
<h4> -w, --wrapArrays</h4>
<p>When processing a schema like this:</p>
<pre>
&lt;element name="array"&gt;
 &lt;complexType&gt;
  &lt;sequence&gt;
   &lt;element name="item" type="xs:string"/&gt;
  &lt;/sequence&gt;
 &lt;/complexType&gt;
&lt;/element&gt;
</pre>
The default behavior (as of Axis 1.2 final) is to map this XML construct to a Java String array (String[]).  If you would rather a specific JavaBean class (i.e. ArrayOfString) be generated for these types of schemas, you may specify the -w or --wrapArrays option.
</p>
<br>
<h3><a name="Java2WSDL"></a>Java2WSDL Reference</h3>
<p>Here is the help message generated from the current tool: </p>
<p><font color="#993366">
<pre>
Java2WSDL emitter
Usage: java org.apache.axis.wsdl.Java2WSDL [options] class-of-portType
Options:
        -h, --help
                print this message and exit
        -I, --input <argument>
                input WSDL filename
        -o, --output <argument>
                output WSDL filename
        -l, --location <argument>
                service location url
        -P, --portTypeName <argument>
                portType name (obtained from class-of-portType if not specified)
        -b, --bindingName <argument>
                binding name (--servicePortName value + "SOAPBinding" if not
                 specified)
        -S, --serviceElementName <argument>
                service element name (defaults to --servicePortName value +
                "Service")
        -s, --servicePortName <argument>
                service port name (obtained from --location if not specified)
        -n, --namespace <argument>
                target namespace
        -p, --PkgtoNS <argument>=<value>
                package=namespace, name value pairs
        -m, --methods <argument>
                space or comma separated list of methods to export
        -a, --all
                look for allowed methods in inherited class
        -w, --outputWsdlMode <argument>
                output WSDL mode: All, Interface, Implementation
        -L, --locationImport <argument>
                location of interface wsdl
        -N, --namespaceImpl <argument>
                target namespace for implementation wsdl
        -O, --outputImpl <argument>
                output Implementation WSDL filename, setting this causes 
                --outputWsdlMode to be ignored
        -i, --implClass <argument>
                optional class that contains implementation of methods in 
                class-of-portType.  The debug information in the class is used
                 to obtain the method parameter names, which are used to set
                 the WSDL part names.
        -x, --exclude <argument>
                space or comma separated list of methods not to export
        -c, --stopClasses <argument>
                space or comma separated list of class names which will stop
                 inheritance search if --all switch is given
        -T, --typeMappingVersion <argument>
                indicate 1.1 or 1.2.  The default is 1.1 (SOAP 1.1 JAX-RPC
                compliant  1.2 indicates SOAP 1.1 encoded.)
        -A, --soapAction <argument>
                value of the operation's soapAction field. Values are DEFAULT,
                OPERATION or NONE. OPERATION forces soapAction to the name
                of the operation.  DEFAULT causes the soapAction to be set
                according to the operation's meta data (usually "").  NONE
                forces the soapAction to "".  The default is DEFAULT.
        -y, --style <argument>
                The style of binding in the WSDL, either DOCUMENT, RPC, or WRAPPED.
        -u, --use <argument>
                The use of items in the binding, either LITERAL or ENCODED
        -e, --extraClasses <argument>
                A space or comma separated list of class names to be added to
                the type section.
        -C, --importSchema
                A file or URL to an XML Schema that should be physically
                imported into the generated WSDL
        -X, --classpath
                additional classpath elements
Details:
   portType element name= <--portTypeName value> OR <class-of-portType name>
   binding  element name= <--bindingName value> OR <--servicePortName value>Soap
Binding
   service  element name= <--serviceElementName value> OR <--portTypeName value>
Service
   port     element name= <--servicePortName value>
   address location     = <--location value>
</pre>
</font>
<br>
</p>
<p><b>-h , --help</b> <br>
Prints the help message. </p>
<p><b>-I, --input &lt;WSDL file&gt;</b> <br>
Optional parameter that indicates the name of the input wsdl file. The
output wsdl file will contain everything from the input wsdl file plus
the new constructs. If a new construct is already present in the input
wsdl file, it is not added. This option is useful for constructing a
wsdl file with multiple ports, bindings, or portTypes.
</p>
<p><b>-o, --output &lt;WSDL file&gt;</b> <br>
Indicates the name of the output WSDL file.&nbsp; If not specified, a
suitable default WSDL file is written into the current directory. </p>
<p><b>-l, --location &lt;location&gt;</b> <br>
Indicates the url of the location of the service.&nbsp; The name after
the last slash or backslash is the name of the service port (unless
overridden by the -s option).&nbsp; The service port address location
attribute is assigned the specified value. </p>
<p><b>-P, --portTypeName &lt;name&gt;</b> <br>
Indicates the name to use use for the portType element. If not
specified, the class-of-portType name is used. </p>
<p><b>-b, --bindingName &lt;name&gt;</b> <br>
Indicates the name to use use for the binding element. If not
specified, the value of the --servicePortName + "SoapBinding" is used. </p>
<p><b>-S, --serviceElementName &lt;name&gt;</b> <br>
Indicates the name of the service element.&nbsp; If not specified, the
service element is the &lt;portTypeName&gt;Service.&nbsp; </p>
<p><b>-s, --servicePortName &lt;name&gt;</b> <br>
Indicates the name of the service port.&nbsp; If not specified, the
service port name is derived from the --location value.&nbsp; </p>
<p><b>-n, --namespace &lt;target namespace&gt;</b> <br>
Indicates the name of the target namespace of the WSDL. </p>
<p><b>-p, --PkgToNS &lt;package&gt; &lt;namespace&gt;</b> <br>
Indicates the mapping of a package to a namespace.&nbsp; If a package
is encountered that does not have a namespace, the Java2WSDL emitter
will generate a suitable namespace name.&nbsp; This option may be
specified multiple times. </p>
<p><b>-m, --methods &lt;arguments&gt;</b> <br>
If this option is specified, only the indicated methods in your
interface class will be exported into the WSDL file.&nbsp; The methods
list must be comma separated.&nbsp; If not specified, all methods
declared in the interface class will be exported into the WSDL file. </p>
<p><b>-a, --all</b> <br>
If this option is specified, the Java2WSDL parser will look into
extended classes to determine the list of methods to export into the
WSDL file. </p>
<p><b>-w, --outputWSDLMode &lt;mode&gt;</b> <br>
Indicates the kind of WSDL to generate.&nbsp; Accepted values are: </p>
<ul>
  <li> All --- (default) Generates wsld containing both interface and
implementation WSDL constructs.</li>
  <li> Interface --- Generates a WSDL containing the interface
constructs (no service element).</li>
  <li> Implementation -- Generates a WSDL containing the
implementation.&nbsp; The interface WSDL is imported via the -L option.</li>
</ul>
<b>-L, --locationImport &lt;url&gt;</b> <br>
Used to indicate the location of the interface WSDL when generating an
implementation WSDL.
<p><b>-N, --namespaceImpl &lt;namespace&gt;</b> <br>
Namespace of the implementation WSDL. </p>
<p><b>-O, --outputImpl &lt;WSDL file&gt;</b> <br>
Use this option to indicate the name of the output implementation WSDL
file.&nbsp; If specified, Java2WSDL will produce interface and
implementation WSDL files.&nbsp; If this option is used, the -w option
is ignored. </p>
<p><b>-i, --implClass &lt;impl-class&gt;</b> <br>
Sometimes extra information is available in the implementation class
file. Use this option to specify the implementation class. </p>
<p><b>-x, --exclude &lt;list&gt;</b> <br>
List of methods to not exclude from the wsdl file. </p>
<p><b>-c, --stopClasses &lt;list&gt;</b> <br>
List of classes which stop the Java2WSDL inheritance search. </p>
<p><b>-T, --typeMappingVersion &lt;version&gt;</b> <br>
Choose the default type mapping registry to use. Either 1.1 or 1.2.</p>
<p><b>-A, --soapAction &lt;argument&gt;</b> <br>
The value of the operations soapAction field. Values are DEFAULT,
OPERATION or NONE. OPERATION forces soapAction to the name of the
operation. DEFAULT causes the soapAction to be set according to the
operation's meta data (usually ""). NONE forces the soapAction to "".
The default is DEFAULT.
</p>
<p><b>-y, --style &lt;argument&gt;</b> <br>
The style of the WSDL document: RPC, DOCUMENT or WRAPPED. The default
is RPC. If RPC is specified, an rpc wsdl is generated. If DOCUMENT is
specified, a document wsdl is generated. If WRAPPED is specified, a
document/literal wsdl is generated using the wrapped approach. Wrapped
style forces the use attribute to be literal.
</p>
<p><b>-u, --use &lt;argument&gt;</b><br>
The use of the WSDL document: LITERAL or ENCODED. If LITERAL is
specified, the XML Schema defines the representation of the XML for the
request. If ENCODED is specified, SOAP encoding is specified in the
generated WSDL. </p>
<p><b>-e, --extraClasses &lt;argument&gt;</b><br>
Specify a space or comma seperated list of class names which should be
included in the <b>types</b> section of the WSDL document. This is
useful in the case where your service interface references a base class
and you would like your WSDL to contain XML Schema type defintions for
these other classes. The -extraClasses option can be specified
duplicate times. Each specification results in the additional classes
being added to the list.
</p>
<p> <strong>-C, --importSchema</strong><br>
A file or URL to an XML Schema that should be physically imported into the generated WSDL</p>
<p><br>
  <strong>-X, --classpath</strong><br>
  Additional classpath elements</p>
<p>&nbsp;</p>
<h2><a name="Deployment"></a>Deployment (WSDD) Reference</h2>
Note : all the elements referred to in this section are in the WSDD namespace, 
namely "http://xml.apache.org/axis/wsdd/". 
<dl>
  <dt><b><font face="Courier New, Courier, mono">&lt;deployment&gt;</font></b></dt>
  <dd>The root element of the deployment document which tells the Axis engine 
    that this is a deployment. A deployment document may represent EITHER a complete 
    engine configuration OR a set of components to deploy into an active engine.</dd>
  <dt><br>
    <b><font face="Courier New, Courier, mono">&lt;GlobalConfiguration&gt;</font></b></dt>
  <dd>This element is used to control the engine-wide configuration of Axis. It 
    may contain several subelements: 
    <ul>
      <li><b>&lt;parameter&gt;</b> : This is used to set options on the Axis engine 
        - see the <a href="#global_configuration">Global Axis Configuration</a> 
        section below for more details. Any number of <strong>&lt;parameter&gt;</strong> 
        elements may appear.</li>
      <li><strong>&lt;role&gt;</strong> : This is used to set a SOAP actor/role 
        URI which the engine will recognize. This allows SOAP headers targeted 
        at that role to be successfully processed by the engine. Any number of 
        <strong>&lt;role&gt;</strong> elements may appear.</li>
      <li><strong>&lt;requestFlow&gt;</strong> : This is used to configure global 
        request Handlers, which will be invoked before the actual service on every 
        request. You may put any number of <strong>&lt;handler&gt;</strong> or 
        <strong>&lt;chain&gt;</strong> elements (see below) inside the <strong>&lt;requestFlow&gt;</strong>, 
        but there may only be one <strong>&lt;requestFlow&gt;</strong>.</li>
    </ul>
  </dd>
  <dd> 
    <ul>
      <li><strong>&lt;responseFlow&gt;</strong> : This is used to configure global 
        response Handlers, which will be invoked after the actual service on every 
        request. You may put any number of <strong>&lt;handler&gt;</strong> or 
        <strong>&lt;chain&gt;</strong> elements (see below) inside the <strong>&lt;responseFlow&gt;</strong>, 
        but there may only be one <strong>&lt;responseFlow&gt;</strong>.</li>
    </ul>
  </dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;undeployment&gt;</font></b></dt>
  <dd>The root element of the deployment document which tells Axis that this is 
    an undeployment. Undeployments are only useful as </dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;handler [name="</font></b><font
 face="Courier New, Courier, mono"><i>name</i></font><b><font
 face="Courier New, Courier, mono">"] type="</font></b><font
 face="Courier New, Courier, mono"><i>type</i></font><b><font
 face="Courier New, Courier, mono">"/&gt;</font></b></dt>
  <dd>Belongs at the top level inside a <b>&lt;deployment&gt;</b> or <b>&lt;undeployment&gt;</b>, 
    or inside a <b>&lt;chain&gt;</b>, <b>&lt;requestFlow&gt;</b>, or <b>&lt;responseFlow&gt;</b>. 
    Defines a Handler, and indicates the type of the handler. "Type" is either 
    the name of another previously defined Handler, or a QName of the form "<b>java:<i>class.name</i></b>". 
    The optional "name" attribute allows you to refer to this Handler definition 
    in other parts of the deployment. May contain an arbitrary number of <b><font
 face="Courier New, Courier, mono">&lt;parameter name="</font></b><font
 face="Courier New, Courier, mono"><i>name</i></font><b><font
 face="Courier New, Courier, mono">" value="</font></b><font
 face="Courier New, Courier, mono"><i>value</i></font><b><font
 face="Courier New, Courier, mono">"&gt;</font></b> elements, each of which will 
    supply a parameter to the deployed Handler.</dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;service name="</font></b><font
 face="Courier New, Courier, mono"><i>name</i></font><b><font
 face="Courier New, Courier, mono">" provider="</font></b><font
 face="Courier New, Courier, mono"><i>provider</i></font><b><font
 face="Courier New, Courier, mono">" &gt;</font></b></dt>
  <dd>Deploys/undeploys an Axis Service. This is the most complex WSDD tag, so 
    we're going to spend a little time on it.<br>
    <br>
    <b>Options</b> may be specified as follows : <code><b>&lt;parameter name="</b>name<b>" 
    value="</b>value<b>"/&gt;</b></code>, and common ones include:<br>
    <br>
    <ul>
      <li><b>className</b> : the backend implementation class<br>
      </li>
      <li><b>allowedMethods</b> : Each provider can determine which methods are 
        allowed to be exposed as web services. <br>
        To summaries for Axis supplied providers:<br>
        <p><u>Java RPC Provider</u> (provider="java:RPC") by default all public 
          methods specified by the class in the className option, including any 
          inherited methods are available as web services.<br>
          For more details regarding the Java Provider please see <b>WHERE???</b>. 
        </p>
        <p><u>Java MsgProvder</u> (provider="java:MSG") 
          <!-- Glen to provide details -->
        </p>
        <p>In order to further restrict the above methods, the <b>allowedMethods</b> 
          option may be used to specify in a space delimited list the names of 
          only those methods which are allowed as web services. It is also possible 
          to specify for this option the value <b>"*"</b> which is functionally 
          equivalent to not specify the option at all. Also, it is worth mentioning 
          that the <b>operation</b> element is used to further define the methods 
          being offered, but it does not affect which methods are made available. 
        </p>
        <p><i>Note, while this is true for Axis supplied providers, it is implementation 
          dependent on each individual provider. Please review your providers 
          documentation on how or if it supports this option.</i> </p>
        <p> <b><u>Note, Exposing any web service has security implications.</u><br>
          </b>As a best practices guide it is <u>highly</u> recommend when offering 
          a web service in un secure environment to restrict allowed methods to 
          only those required for the service being offered. And, for those that 
          are made available, to <b>fully</b> understand their function and how 
          they may access and expose your systems's resources. </p>
        <p> </p>
      </li>
      <li><b>allowedRoles</b> : comma-separated list of roles allowed to access 
        this service. (Note that these are security roles, as opposed to SOAP 
        roles. Security roles control access, SOAP roles control which SOAP headers 
        are processed.)</li>
      <li><b>extraClasses</b> : Specify a space or comma seperated list of class 
        names which should be included in the <b>types</b> section of the WSDL document. 
        This is useful in the case where your service interface references a base class
        and you would like your WSDL to contain XML Schema type defintions for these other classes.
      </li>
    </ul>
    <p> If you wish to define handlers which should be invoked either before or 
      after the service's provider, you may do so with the <b>&lt;requestFlow&gt;</b> 
      and the <b>&lt;responseFlow&gt;</b> subelements. Either of those elements 
      may be specified inside the <b>&lt;service&gt;</b> element, and their semantics 
      are identical to the <b>&lt;chain&gt;</b> element described below - in other 
      words, they may contain <b>&lt;handler&gt;</b> and <b>&lt;chain</b>&gt; 
      elements which will be invoked in the order they are specified.</p>
    <p>To control the <a href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/#soaproles">roles</a> 
      that should be recognized by your service Handlers, you can specify any 
      number of <b>&lt;role&gt;</b> elements inside the service declaration.</p>
    Example:<br>
    <pre>
&lt;service name="test"&gt;
  &lt;parameter name="className" value="test.Implementation"/&gt;
  &lt;parameter name="allowedMethods" value="*"/&gt;
  &lt;namespace&gt;http://testservice/&lt;/namespace&gt;
  &lt;role&gt;http://testservice/MyRole&lt;/role&gt;
  &lt;requestFlow&gt; &lt;!-- Run these before processing the request --&gt;
    &lt;handler type="java:MyHandlerClass"/&gt;\
    &lt;handler type="somethingIDefinedPreviously"/&gt;
  &lt;/requestFlow&gt;
&lt;/service&gt;
</pre>
    Metadata may be specified about particular operations in your service by using 
    the &lt;operation&gt; tag inside a service. This enables you to map the java 
    parameter names of a method to particular XML names, to specify the parameter 
    modes for your parameters, and to map particular XML names to particular operations.<br>
    <br>
    &lt;operation name="method"&gt;<br>
    &lt;/operation&gt; <br>
  </dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;chain name="</font></b><font
 face="Courier New, Courier, mono"><i>name</i></font><b><font
 face="Courier New, Courier, mono">"</font></b><b><font
 face="Courier New, Courier, mono">&gt;<br>
    &lt;<i>subelement</i>/&gt;...<br>
    &lt;/chain&gt; </font></b></dt>
  <dd>Defines a chain. Each <i>handler</i> (i.e. deployed handler name) in the 
    list will be invoked() in turn when the chain is invoked. This enables you 
    to build up "modules" of commonly used functionality. The subelements inside 
    chains may be &lt;<b>handler</b>&gt;s or &lt;<b>chain</b>&gt;s. &lt;handler&gt;s 
    inside a &lt;chain&gt; may either be defined in terms of their Java class:<br>
    <pre>&lt;chain name="myChain"&gt;<br>  &lt;handler type="java:org.apache.axis.handlers.LogHandler"/&gt;<br>&lt;/chain&gt;</pre>
    or may refer to previously defined &lt;handlers&gt;, with the "type" of the 
    handler referring to the name of the other handler definition:<br>
    <pre>&lt;handler name="logger" type="java:org.apache.axis.handlers.LogHandler"/&gt;<br>&lt;chain name="myChain"/&gt;<br>   &lt;handler type="logger"/&gt;<br>&lt;/chain&gt;</pre>
  </dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;transport name="</font></b><font
 face="Courier New, Courier, mono"><i>name</i></font><b><font
 face="Courier New, Courier, mono">"&gt;</font></b></dt>
  <dd>Defines a transport on the server side. Server transports are invoked when 
    an incoming request arrives. A server transport may define <b>&lt;requestFlow&gt;</b> 
    and/or <b>&lt;responseFlow&gt;</b> elements to specify handlers/chains which 
    should be invoked during the request (i.e. incoming message) or response (i.e. 
    outgoing message) portion of processing (this function works just like the 
    <b>&lt;service&gt;</b> element above). Typically handlers in the transport 
    request/response flows implement transport-specific functionality, such as 
    parsing protocol headers, etc.</dd>
  <br>
  <br>
  <dd>For any kind of transport (though usually this relates to HTTP transports), 
    users may allow Axis servlets to perform arbitrary actions (by means of a 
    "plug-in") when specific query strings are passed to the servlet (see the 
    section <a
 href="developers-guide.html#Axis%20Servlet%20Query%20String%20Plug-ins">Axis 
    Servlet Query String Plug-ins</a> in the <a
 href="developers-guide.html">Axis Developer's Guide</a> for more information 
    on what this means and how to create a plug-in). When the name of a query 
    string handler class is known, users can enable it by adding an appropriate 
    <b>&lt;parameter&gt;</b> element in the Axis server configuration's <b>&lt;transport&gt;</b> 
    element. An example configuration might look like the following:<br>
    <br>
    <code> &lt;transport name="http"&gt;<br>
    &nbsp;&nbsp;&lt;parameter name="useDefaultQueryStrings" value="false" /&gt;<br>
    &nbsp;&nbsp;&lt;parameter name="qs.name" value="class.name" /&gt;<br>
    &lt;/transport&gt;<br>
    </code><br>
    In this example, the query string that the Axis servlet should respond to 
    is <i>?name</i> and the class that it should invoke when this query string 
    is encountered is named <code>class.name</code>. The <code>name</code> attribute 
    of the <b>&lt;parameter&gt;</b> element must start with the string "qs." to 
    indicate that this <b>&lt;parameter&gt;</b> element defines a query string 
    handler. The <code>value</code> attribute must point to the name of a class 
    implementing the <code>org.apache.axis.transport.http.QSHandler</code> interface. 
    By default, Axis provides for three Axis servlet query string handlers (<i>?list</i>, 
    <i>?method</i>, and <i>?wsdl</i>). See the Axis server configuration file 
    for their definitions. If the user wishes not to use these default query string 
    handlers (as in the example), a <b>&lt;parameter&gt;</b> element with a <code>name</code> 
    attribute equal to "useDefaultQueryStrings" should have its <code>value</code> 
    attribute set to <code>false</code>. By default it is set to <code>true</code> 
    and the element is not necessary if the user wishes to have this default behavior. 
  </dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;transport name="</font></b><font
 face="Courier New, Courier, mono"><i>name</i></font><b><font
 face="Courier New, Courier, mono">" pivot="</font></b><font
 face="Courier New, Courier, mono"><i>handler type</i><b>"</b></font><b><font
 face="Courier New, Courier, mono"> &gt;</font></b></dt>
  <dd>Defines a transport on the client side, which is invoked when sending a 
    SOAP message. The "pivot" attribute specifies a Handler to be used as the 
    actual sender for this transport (for example, the HTTPSender). Request and 
    response flows may be specified as in server-side transports to do processing 
    on the request (i.e. outgoing message) or response (i.e. incoming message).</dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;typeMapping qname="</font></b><font
 face="Courier New, Courier, mono"><i>ns:localName</i></font><b><font
 face="Courier New, Courier, mono">" classname="</font></b><font
 face="Courier New, Courier, mono"><i>classname</i></font><b><font
 face="Courier New, Courier, mono">" serializer="</font></b><font
 face="Courier New, Courier, mono"><i>classname</i></font><b><font
 face="Courier New, Courier, mono">" deserializer="</font></b><font
 face="Courier New, Courier, mono"><i>classname</i></font><b><font
 face="Courier New, Courier, mono">"/&gt;</font></b></dt>
  <dd>Each typeMapping maps an XML qualified name to/from a Java class, using 
    a specified Serializer and Deserializer. </dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;beanMapping qname="</font></b><font
 face="Courier New, Courier, mono"><i>ns:localName</i></font><b><font
 face="Courier New, Courier, mono">" classname="</font></b><font
 face="Courier New, Courier, mono"><i>classname</i></font><b><font
 face="Courier New, Courier, mono">"</font></b><b><font
 face="Courier New, Courier, mono">&gt;</font></b></dt>
  <dd><b></b>A simplified type mapping, which uses pre-defined serializers/deserializers 
    to encode/decode JavaBeans. The class named by "classname" must follow the 
    JavaBean standard pattern of get/set accessors.</dd>
  <dt>&nbsp;</dt>
  <dt><b><font face="Courier New, Courier, mono">&lt;documentation&gt;</font></b></dt>
  <dd>Can be used inside a <b>&lt;service&gt;</b>, an <b>&lt;operation&gt;</b> 
    or an operation <b>&lt;parameter&gt;</b>. The content of the element is arbitrary 
    text which will be put in the generated wsdl inside a wsdl:document element.<br>
    <br>
    Example:<br>
    <code>&lt;operation name="echoString" &gt;<br>
    &nbsp;&nbsp;&lt;documentation&gt;This operation echoes a string&lt;/documentation&gt;<br>
    &nbsp;&nbsp;&lt;parameter name="param"&gt;<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;documentation&gt;a string&lt;/documentation&gt;<br>
    &nbsp;&nbsp;&lt;/parameter&gt;<br>
    &lt;/operation&gt; </code> </dd>
</dl>
<p> </p>
<h2><a name="global_configuration">Global Axis Configuration</a></h2>

The server is configured (by default) by
values in the
server-config.wsdd file, though a dedicated Axis user can write their
own configuration handler, and so store configuration data in an LDAP
server, database, remote web service, etc. Consult the source on
details
as to how to do that. You can also add options to the web.xml file and
have them picked up automatically. We don't encourage that as it is
nice
to keep configuration stuff in one place.

<p>In the server-config file, there is
a global configuration section,
which supports parameter name/value pairs as nested elements. Here are
the options that we currently document, though there may be more
(consult the source, as usual). </p>
<pre>
&lt;globalConfiguration&gt;
    &lt;parameter name="adminPassword" value="admin"/&gt;
    &lt;parameter name="axis.servicesPath" value="/services/"/&gt;
    &lt;parameter name="attachments.Directory" value="c:\temp\attachments"/&gt;
    &lt;parameter name="sendMultiRefs" value="true"/&gt;
    &lt;parameter name="sendXsiTypes" value="true"/&gt;
    &lt;parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/&gt; 
    &lt;parameter name="sendXMLDeclaration" value="true"/&gt;
    &lt;parameter name="enable2DArrayEncoding" value="true"/&gt;
    &lt;parameter name="dotNetSoapEncFix" value="false"/&gt;
&lt;/globalConfiguration&gt;
</pre>
<table>
  <tbody>
    <tr>
      <td><b>adminPassword</b></td>
      <td>Adminstrator password, as used by AdminService. </td>
    </tr>
    <tr>
      <td><b>attachments.Directory</b></td>
      <td>The directory where attachments end up. This should be in the
syntax appropriate for the target platform. </td>
    </tr>
    <tr>
      <td><b>attachments.implementation</b></td>
      <td> Name of class that implements attachments support. Default
is <tt>org.apache.axis.attachments.AttachmentsImpl</tt> </td>
    </tr>
    <tr>
      <td><b>axis.enableListQuery</b></td>
      <td>Flag to enable the "list the WSDD" feature. Set to false by
default, because listing the current system config can expose
information (such as the adminservice password) that one does not want
widely avaialable. </td>
    </tr>
    <tr>
      <td><b>axis.disableServiceList</b></td>
      <td>Flag to disable the list of services feature. Set to false by
default, which enables the list of services by the AxisServlet when a GET
request is performed on the servlet root.</td>
    </tr>
    <tr>
      <td><b>axis.servicesPath</b></td>
      <td>Path to the Axis servlet. This should be the same as the services 
      servlet-mapping defined in web.xml. Used for displaying
      the list of services. Default is "/services/".</td>
    </tr>>
    <tr>
      <td><b>axis.Compiler</b></td>
      <td>Compiler adapter classname for JWS compilation. Default is <tt>org.apache.axis.components.compiler.Javac</tt>;
change this to <tt>org.apache.axis.components.compiler.Jikes</tt> to
invoke jikes instead. </td>
    </tr>
    <tr>
      <td><b>axis.development.system</b></td>
      <td>Flag to switch the system from <i>production</i> (false) to <i>development</i>
(true). A development system gives out stack traces and other
information that production boxes should not. </td>
    </tr>
    <tr>
      <td><b>axis.xmlEncoding</b></td>
      <td>Encoding used for XML messages -either UTF-8 (default) or
UTF-16</td>
    </tr>
    <tr>
      <td><b>axis.engineConfigClass</b></td>
      <td>Name of a class that provides Axis configuration. Implement a
new class implementing <tt>EngineConfiguration</tt> and name it here
to use alternate configuration mechanisms. </td>
    </tr>
    <tr>
      <td><b>axis.jws.servletClassDir</b></td>
      <td>Path to where compiled JWS pages are placed. </td>
    </tr>
    <tr>
      <td><b>axis.sendMinimizedElements</b></td>
      <td>Flag to turn on support for a when .NET1.0 can't correctly
handle some bits of XML <a
 href="http://nagoya.apache.org/bugzilla/show_bug.cgi?id=17021"> that
it should. </a> The flag defaults to true; if some .NET clients are
failing to handle a Web Service returning an empty array inside another
object, set this flag to <i>false</i>. </td>
    </tr>
    <tr>
      <td><b>enable2DArrayEncoding</b></td>
      <td>Set this to "true" to turn 2D array encoding on; this
encoding is incompatible with .NET 1.0: default="false". </td>
    </tr>
    <tr>
      <td><b>sendMultiRefs</b></td>
      <td>true/false flag to control whether multirefs are sent or not.
      </td>
    </tr>
    <tr>
      <td><b>sendXMLDeclaration</b></td>
      <td>true/false flag to control whether the &lt;?xml?&gt;
declaration is sent in messages </td>
    </tr>
    <tr>
      <td><b>sendXsiTypes</b></td>
      <td>true/false flag to enable/disable sending the type of every
value sent over the wire. Defaults to true. </td>
    </tr>
    <tr>
      <td><strong>SingleSOAPVersion</strong></td>
      <td>When set to either "1.1" or "1.2", this configures the engine
to only accept the specified SOAP version. Attempts to connect to the
engine using another version will result in a fault.</td>
    </tr>
    <tr>
      <td><b>use-servlet-security</b></td>
      <td>Set this flag to hand authentication off to the servlet
container. </td>
    </tr>
    <tr>
      <td><b>dotNetSoapEncFix</b></td>
      <td>Set this flag to true to turn on a preference for the XML Schema (xsd) types in the
	  Axis engine.  This improved interop with .NET. In particular, .NET seems to have problems
	  accepting SOAP encoded types (soapenc) in arrays.  Due to bugs in the Axis 1.1 type mapping
	  system, Axis generally perferred the schema types.  Axis 1.2 now correctly uses the SOAP
	  encoded types when it is using SOAP encoding for a service.  See JAX-RPC 1.1, section 4.2.1.
	  Note: You can also set this flag by setting the static property on the TypeMappingImpl class:
	  <pre>TypeMappingImpl.dotnet_soapenc_bugfix = true;</pre>
	  </td>
    </tr>
<!-- end table -->
  </tbody>
</table>
<h2><a name="individual_service">Individual Service Configuration</a></h2>
<p>Here is a service element with examples of the current set of options you can set. More may exists (consult the source, as usual).</p>
<pre>  
&lt;service name=&quot;MyServiceName&quot; 
		provider=&quot;java:RPC&quot; 
		style=&quot;rpc|document|wrapped&quot; 
		use=&quot;encoded|literal&quot;
		streaming=&quot;off|on&quot;
		attachment=&quot;MIME|DIME|NONE&quot;&gt;

 &lt;parameter name=&quot;className&quot; value=&quot;org.apache.mystuff.MyService&quot;/&gt;
 &lt;parameter name=&quot;allowedMethods&quot; value=&quot;method1 method2 method3&quot;/&gt;
 &lt;parameter name=&quot;wsdlTargetNamespace&quot; value=&quot;http://mystuff.apache.org/MyService&quot;/&gt;
 &lt;parameter name=&quot;wsdlServiceElement&quot; value=&quot;MyService&quot;/&gt;
 &lt;parameter name=&quot;wsdlServicePort&quot; value=&quot;MyServicePort&quot;/&gt;
 &lt;parameter name=&quot;wsdlPortType&quot; value=&quot;MyPort&quot;/&gt;
 &lt;parameter name=&quot;wsdlSoapActionMode&quot; value=&quot;NONE|DEFAULT|OPERATION&quot;/&gt;

 &lt;parameter name=&quot;SingleSOAPVersion&quot; value=&quot;1.1|1.2/&gt;

 &lt;documentation&gt;Service level info&lt;/documentation&gt;
 &lt;endpointURL&gt;http://example.com:5050/my/custom/url/to/service&lt;/endpointURL&gt;
 &lt;wsdlFile&gt;/path/to/wsdl/file&lt;/wsdlFile&gt;
 &lt;namespace&gt;http://my.namespace.com/myservice&lt;/namespace&gt;
 &lt;handlerInfoChain&gt;handlerChainName&lt;/handlerInfoChain&gt;
 
 &lt;operation ... /&gt;

 &lt;typeMapping ... /&gt;
  
 &lt;beanMapping ... /&gt;
  
&lt;/service&gt;</pre>
<h3>Service Element Attributes</h3>

<h4>name</h4>
The name of the service.
<h4>provider</h4>
The provider for the service.  The recognized providers are: java:RPC, java:MSG,
java:EJB, java:COM, java:BSF, java:CORBA, java:RMI and "Handler"
where <tt>xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"</tt>.  The RPC provider supports
both rpc/encoded, document/literal and wrapped/literal services.  the MSG provider supports the
'fixed signature' service which takes XML in and returns XML our directly.  The other providers must be
built in to Axis. See the code in org.apache.axis.providers.

<h4>style</h4>
The style of the service.  
"rpc" uses the RPC style of wrapping the parts of the message an element that has the same name
as the operation.
"document" style means the messages in and out of the service are exactly as
they are describe by the XML Schema in the WSDL.
"wrapped" is a subset of the document style.  The arguments to the operation are wrapped up in and
element that has the same name as the operation.  This is the style of service .NET generates by
default.  The generated WSDL specifies document style (and literal use) but Axis will 'unwrapped'
the parts of the message for the Axis service at the back end.

<h4>use</h4>
This can be either "encoded" or "literal".  Encoded means the SOAP 1.1 "Section 5 Encoding" is used to
encode the data structures returned by the service and incoming XML is decoded using the same rules.
Literal use means no such encoding is performed.

<h4>streaming</h4>
Valid values are "on" or "off".  This turns on or off the streaming mode of the XML deserializer.
The default is currently off.  Certain Axis functionality may not function properly if this is turned
on.  Use with caution.

<h4>attachment</h4>
Valied values are "MIME" for SOAP with attachements (SwA), "DIME" for DIME support and "NONE" for no attachement
support at all.  The default mode of Axis is to use MIME attachements (SwA).

<h3>Elements allowed in the Service element</h3>

<h4>&lt;wsdlFile&gt;</h4>
<p>The path to a WSDL File; can be an absolute path or a
resource that axis.jar can load. Useful to export your custom WSDL
file. When specify a path to a resource, place a forward slash to start
at the beginning of the classpath (e.g "/org/someone/res/mywsdl.wsdl").
How does Axis know whether to return a file or resource? It looks for a
file first, if that is missing a resource is returned. </p>

<h4>&lt;documentation&gt;</h4>
<p>Documentation text that will get inserted in to the document element of the WSDL for the service</p>

<h4>&lt;endpointURL&gt;</h4>
<p>Specify the endpoint URL of the service, which will override the transport level URL
created by the Axis servlet.  This is usefull if you have a proxy handling requests
and you need the endpoint URL to reflect a different hostname than the one Axis is
executing on.</p>

<h4>&lt;namespace&gt;</h4>
<p>Specify the default namespace for the service.</p>

<h4>&lt;handlerInfoChain&gt;</h4>
<p>Specify the JAX RPC handler chain for this service.</p>

<p>In addition, as described above, the <B>&lt;requestFlow&gt;</B> and/or <B>&lt;responseFlow&gt;</B> elements are also allowed in the service element.</p>



<p>

<h3>Service Level Parameters</h3>
The following parameters can be set on a service wide basis using the &lt;parameter&gt; tag. There may be more than those documented here, but this list should be almost complete.
<p>
<table  cellpadding="2">
  <tbody>
	<tr>
	  <td><strong>className</strong></td>
	  <td>The fully qualified name of the implemenation class of the service.<br>
	  </td>
	</tr>
	<tr>
	  <td><strong>allowedMethods</strong></td>
	  <td>A space or comma seperated list of method names, or "*" for all methods in the service class.  
	  If this parameter isn't specified, all methods ("*") is the default.
	  </td>
	</tr>
	<tr>
	  <td><strong>wsdlPortType</strong></td>
	  <td>The name of the portType element in the generated WSDL for the service.</td>
	</tr>
	<tr>
	  <td><strong>wsdlServiceElement</strong></td>
	  <td>The name of the Service element in the generated WSDL for the service.</td>
	</tr>
	<tr>
	  <td><strong>wsdlServicePort</strong></td>
	  <td>The name of the port in the generated WSDL for the service.</td>
	</tr>
	<tr>
	  <td><strong>wsdlTargetNamespace</strong></td>
	  <td>The target namespace in the generated WSDL for the service.</td>
	</tr>
	<tr>
	  <td><strong>wsdlInputSchema</strong></td>
	  <td>A comma separated list of of input Schema for the generated WSDL for the service.</td>
	</tr>
	<tr>
	  <td><strong>wsdlSoapActionMode</strong></td>
	  <td>Values are DEFAULT, OPERATION or NONE. 
	  OPERATION forces soapAction to the name of the operation.  
	  DEFAULT causes the soapAction to be set according to the 
	  operations meta data, specifically the soapAction attribute of the operation
	  in the deployment information.  
	  NONE forces the soapAction to "".  The default is DEFAULT.</td>
	</tr>
    <tr>
      <td><strong>SingleSOAPVersion</strong></td>
      <td>When set to either "1.1" or "1.2", this configures a service
to only accept the specified SOAP version. Attempts to connect to the
service using another version will result in a fault.</td>
    </tr>
  </tbody>
</table>



<h2><a name="individual_operations">Individual Operation Configuration</a></h2>

<p>Here is an <tt>&lt;operation&gt;</tt> element with examples of the current set of options you can set. More may exists (consult the source, as usual).</p>
<pre>
&lt;operation name=&quot;GetQuote&quot; 
           qname=&quot;operNS:GetQuote&quot; 
           returnQName=&quot;GetQuoteResult&quot; 
           returnType=&quot;xsd:float&quot; 
           soapAction=&quot;&quot; 
           returnHeader="true|false"&gt;

    &lt;documentation&gt;Operation level documentation here&lt;/documentation&gt;

    &lt;parameter name=&quot;ticker&quot; type=&quot;tns:string&quot;/&gt;

    &lt;fault name=&quot;InvalidTickerFaultMessage&quot; 
           qname=&quot;tickerSymbol&quot; 
           class=&quot;test.wsdl.faults.InvalidTickerFaultMessage&quot; 
           type=&quot;xsd:string&quot;/&gt;
<br>&lt;/operation&gt;
</pre>

<p>The example above omits the XML Namespace declarations (xmlns:foo="http://my.namespace/") that could appear
in each of the elements for the namespaces used.</p>

<h3>Operation  Attributes</h3>

<h4>name</h4>
The name of the operation.  This would generally match the name of the function in your service implementation.

<h4>qname</h4>
The Qualified Name of the top level element for this operation.  This is how Axis maps operations for document/literal services,
which do not have the operation name in the QName of the XML element on the wire.

<h4>returnQName</h4>
The Qualified Name of the XML element that is returned from this operation.

<h4>returnType</h4>
The Qualified Name of the return type.

<h4>returnHeader</h4>
If true, the return value of the operation is contained in a header.

<h4>soapAction</h4>
The value of the SOAPAction attribute for this operation in the WSDL generated for this service.

<h3>Elements allowed in the Operation Element</h3>

<h4>&lt;documentation&gt;</h4>
Documentation text that will get inserted in to the document element of the WSDL for the operation.

<h4>&lt;parameter&gt;</h4>
<p>Defines a parameter for the operation. Valid attributes are:</p>
<table>
<tr><td><strong>name</strong></td> 
<td>The name of the parameter.</td></tr>
<tr><td><strong>qname</strong></td> 
<td>The QName of the parameter, used in preference to name.</td>
</tr>
<tr><td><strong>mode</strong></td> 
<td>The mode of the parameter.  One of "in", "out" or "inout".</td></tr>
<tr><td><strong>inHeader</strong></td> 
<td>If "true", this parameter is an input header.</td></tr>
<tr><td><strong>outHeader</strong></td> 
<td>If "true", this parameter is an output header.</td></tr>
<tr><td><strong>type</strong></td> 
<td>The QName of the type of the parameter.</td></tr>
</table>
<p>
<strong>NOTE:</strong> A <tt>&lt;documentation&gt;</tt> element may appear as a child of parameter.
</p>

<h4>&lt;fault&gt;</h4>
Defines the type information for each fault that the operation may throw.
Valid attributes are:</p>
<table>
<tr><td><strong>name</strong></td> 
<td>The name of the fault.</td></tr>
<tr><td><strong>qname</strong></td> 
<td>The QName of the fault.</td>
</tr>
<tr><td><strong>class</strong></td> 
<td>The Java class that represents this fault.</td></tr>
<tr><td><strong>type</strong></td> 
<td>The QName of the type that represents the data for this fault.</td></tr>
</table>





<h2><a name="axis_logging">Axis Logging Configuration</a></h2>
Axis uses the Jakarta Projects's
<a href="http://jakarta.apache.org/commons/logging.html">commons-logging API</a>,
as implemented in <tt>commons-logging.jar</tt> to implement logging
throughout the code. Normally
this library routes the logging to the Log4j library, provided that an
implementation of log4j is on the classpath of the server or client.
The
commons-logging API can also bind to Avalon, <tt>System.out</tt> or
the Java1.4
logger. The JavaDocs for the library explain the process for selecting
a logger,
which can be done via a system property or a properties file in the
classpath.
<p>Log4J can be configured using the file log4j.properties in the
classpath; later
versions also support an XML configuration. Axis includes a
preconfigured
log4j.properties file in <tt>axis.jar</tt>. While this is adequate for
basic use,
any complex project will want to modify their own version of the file.
Here is
what to do </p>
<ol>
  <li>Open up axis.jar in a zipfile viewer and remove log4j.properties
from the jar
  </li>
  <li>Or, when building your own copy of axis.jar, set the Ant property
    <tt>exclude.log4j.configuration</tt> to keep the properties file
out the JAR.
  </li>
  <li>Create your own log4J.properties file, and include it in <tt>WEB-INF/classes</tt>
(server-side), in your main application JAR file client side.
  </li>
  <li>Edit this log4J properties file to your hearts content. Server
side,
setting up rolling logs with fancy html output is convenient, though
once you
start clustering the back end servers that ceases to be as usuable.
Log4J power tools,
such as 'chainsaw', are the secret here.
  </li>
</ol>
<h3>Log Categories</h3>
Axis classes that log information create their own per-class log, each
of which
may output information at different levels. For example, the main entry
point
servlet has a log called <tt>org.apache.axis.transport.http.AxisServlet</tt>,
the AxisEngine is <tt>org.apache.axis.AxisEngine</tt>, and so on.
There are
also special logs for special categories.
<p>
<table border="0">
  <tbody>
    <tr>
      <td valign="top"><tt>org.apache.axis.TIME</tt></td>
      <td>A log that records the time to execute incoming messages,
splitting up into preamble, invoke, post and send times. These are only
logged at debug level.
      </td>
    </tr>
    <tr>
      <td valign="top"><tt>org.apache.axis.EXCEPTIONS</tt></td>
      <td>Exceptions that are sent back over the wire. AxisFaults,
which are normally created in 'healthy' operation, are logged at debug
level. Other Exceptions are logged at the Info level, as they are more
indicative of server side trouble.
      </td>
    </tr>
    <tr>
      <td valign="top"><tt>org.apache.axis.enterprise</tt></td>
      <td>''Enterprise'' level stuff, which generally means stuff that
an enterprise product might want to track, but in a simple environment
(like the Axis build) would be nothing more than a nuisance. </td>
    </tr>
  </tbody>
</table>
<a name="axis_components">
</a></p>
<h2><a name="axis_components">Pre-Configured Axis Components Reference</a></h2>
<h3><a name="axis_components">On the server:</a></h3>
<dl>
  <dt><a name="axis_components"><b>SimpleSessionHandler</b> </a></dt>
  <dd><a name="axis_components">uses SOAP headers to do simple session
management </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>LogHandler</b> </a></dt>
  <dd><a name="axis_components">The LogHandler will simply log a
message to a logger when it gets invoked. </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>SoapMonitorHandler</b> </a></dt>
  <dd><a name="axis_components">Provides the hook into the message
pipeline sending the SOAP request and response messages to the
SoapMonitor utility. </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>DebugHandler</b> </a></dt>
  <dd><a name="axis_components">Example handler that demonstrates
dynamically setting the debug level based on a the value of a soap
header element. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>ErrorHandler</b> </a></dt>
  <dd><a name="axis_components">Example handler that throws an
AxisFault to stop request/response flow processing. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>EchoHandler</b> </a></dt>
  <dd><a name="axis_components">The EchoHandler copies the request
message into the response message. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>HTTPAuth</b> </a></dt>
  <dd><a name="axis_components">The HTTPAuthHandler takes HTTP-specific
authentication information (right now, just Basic authentication) and
turns it into generic MessageContext properties for username and
password </a></dd>
  <dt><a name="axis_components"><b>SimpleAuthenticationHandler</b> </a></dt>
  <dd><a name="axis_components">The SimpleAuthentication handler passes
a MessageContext to a SecurityProvider (see org.apache.axis.security)
to authenticate the user using whatever information the
SecurityProvider wants (right now, just the username and password). </a></dd>
  <dt><a name="axis_components"><b>SimpleAuthorizationHandler</b> </a></dt>
  <dd><a name="axis_components">This handler, typically deployed
alongside the SimpleAuthenticationHandler (a chain called "authChecks"
is predefined for just this combination), checks to make sure that the
currently authenticated user satisfies one of the allowed roles for the
target service. Throws a Fault if access is denied. </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>MD5AttachHandler</b> </a></dt>
  <dd><a name="axis_components">Undocumented, uncalled, untested
handler that generates an MD5 hash of attachment information and adds
the value as an attribute in the soap body. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>URLMapper</b> </a></dt>
  <dd><a name="axis_components">The URLMapper, an HTTP-specific
handler, usually goes on HTTP transport chains (it is deployed by
default). It serves to do service dispatch based on URL - for instance,
this is the Handler which allows URLs like
http://localhost:8080/axis/services/MyService?wsdl to work. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>RPCProvider</b> </a></dt>
  <dd><a name="axis_components">The RPCProvider is the pivot point for
all RPC services. It accepts the following options: <br>
    <b><i>className</i></b> = the class of the backend object to invoke<br>
    <b><i>methodName</i></b> = a space-separated list of methods which
are exported as web services. The special value "*" matches all public
methods in the class. </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>MsgProvider</b> </a></dt>
  <dd><a name="axis_components">The MsgProvider is the pivot point for
all messaging services. It accepts the following options: <br>
    </a></dd>
  <dd><a name="axis_components"><b><i>className</i></b> = the class of
the backend object to invoke<br>
    <b><i>methodName</i></b> = a space-separated list of methods which
are exported as web services. The special value "*" matches all public
methods in the class. </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>JWSHandler</b> </a></dt>
  <dd><a name="axis_components">Performs drop-in deployment magic. </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>JAXRPCHandler</b> </a></dt>
  <dd><a name="axis_components">Wrapper around JAX-RPC compliant
handlers that exposes an Axis handler interface to the engine. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>LocalResponder</b> </a></dt>
  <dd><a name="axis_components">The LocalResponder is a Handler whose
job in life is to serialize the response message coming back from a
local invocation into a String. It is by default on the server's local
transport response chain, and it ensures that serializing the message
into String form happens in the context of the server's type mappings.
    </a></dd>
</dl>
<h3><a name="axis_components">On the client:</a></h3>
<dl>
  <dt><a name="axis_components"><b>SimpleSessionHandler</b> </a></dt>
  <dd><a name="axis_components">uses SOAP headers to do simple session
management </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>JAXRPCHandler</b> </a></dt>
  <dd><a name="axis_components">Wrapper around JAX-RPC compliant
handlers that exposes an Axis handler interface to the engine. </a></dd>
  <dt><a name="axis_components">&nbsp; </a></dt>
  <dt><a name="axis_components"><b>HTTPSender</b> </a></dt>
  <dd><a name="axis_components">A Handler which sends the request
message to a remote server via HTTP, and collects the response message.
    </a></dd>
  <dt><a name="axis_components"> </a></dt>
  <dt><a name="axis_components"><b>LocalSender</b> </a></dt>
  <dd><a name="axis_components">A Handler which sends the request
message to a "local" AxisServer, which will process it and return a
response message. This is extremely useful for testing, and is by
default mapped to the "local:" transport. So, for instance, you can
test the AdminClient by doing something like this:<br>
    </a>
    <pre><a name="axis_components">% java org.apache.axis.client.AdminClient -llocal:// list</a></pre>
    <a name="axis_components"> </a></dd>
  <dt><br>
  </dt>
</dl>
</body>
</html>
