From Intro to Apache Axis
by Siva Jagadeesan

Step 1:Create these two files

HelloWorld.java

package helloworld;

public interface HelloWorld
{
    public String sayHello(String name);
}

HelloWorldImpl.java

package helloworld;

public class HelloWorldImpl implements HelloWorld
{
    public String sayHello(String name) {
        if (name == null) 
              return "Hello Everyone";
        else 
              return "Hello " + name;
    }
}

Put these in the directory
CATALINA_HOME\webapps\axis\WEB-INF\classes\helloworld

Step 2 Run this command

java org.apache.axis.wsdl.Java2WSDL 
    -o hello.wsdl
    -l http://localhost:8080/axis/services/helloworld
    -n urn:helloworld
    -p"helloworld" urn:helloworld
    helloworld.HelloWorld
This will generate the wsdl file
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:helloworld" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:helloworld" xmlns:intf="urn:helloworld" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->

   <wsdl:message name="sayHelloRequest">

      <wsdl:part name="in0" type="soapenc:string"/>

   </wsdl:message>

   <wsdl:message name="sayHelloResponse">

      <wsdl:part name="sayHelloReturn" type="soapenc:string"/>

   </wsdl:message>

   <wsdl:portType name="HelloWorld">

      <wsdl:operation name="sayHello" parameterOrder="in0">

         <wsdl:input message="impl:sayHelloRequest" name="sayHelloRequest"/>

         <wsdl:output message="impl:sayHelloResponse" name="sayHelloResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="helloworldSoapBinding" type="impl:HelloWorld">

      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="sayHello">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="sayHelloRequest">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:helloworld" use="encoded"/>

         </wsdl:input>

         <wsdl:output name="sayHelloResponse">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:helloworld" use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="HelloWorldService">

      <wsdl:port binding="impl:helloworldSoapBinding" name="helloworld">

         <wsdlsoap:address location="http://localhost:8080/axis/services/helloworld"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>

Step 3 Run this command

java org.apache.axis.wsdl.WSDL2Java
  -o .
  -d Session
  -s
  -p helloworld.gen
  hello.wsdl
This will take as input the wsdl file and generate various java stub files. The -s flag tells the program to generate server side code, and the -p flag tells the program where to put the code.

This will produce the following files

HelloWorld.java
HelloWorldService.java
HelloWorldServiceLocator.java
HelloWorldSoapBindingImpl.java
HelloWorldSoapBindingStub.java
deploy.wsdd
undeploy.wsdd

Step 4

Deploy the server

Compile the code, create a jar file and deploy the WSDD file

Step 5: Write the client

package helloworld;

import helloworld.gen.*;

public class HelloWorldTester {

    public static void main(String[] args) throws Exception
    {
        HelloWorldService service = new HelloWorldServiceLocator();
        helloworld.gen.HelloWorld hello = service.gethelloworld();
        System.out.println(hello.sayHello("Suzy Creamcheese"));
    }
}