This example shows how to use Axis2 in a servlet container. You must 
have Maven 2.x installed to build this example.  To build type:

$ mvn package

To run the sample using a Servlet Engine there are two options.

The first is to install a servlet engine say tomcat. Rename the resultant war as your_web_app.war and drop it into webapps directory under tomcat.
The WSDL file for the service should be viewable at:

http://yourhost:port/your_web_app/services/HelloWorld.HelloWorldImplPort?wsdl

Since the Maven project is configured for the Cargo plugin, it is also possible to launch an embedded servlet container (Jetty in this case) using the following command:

$ mvn cargo:start

In this case the WSDL file is viewable at:

http://localhost:8080/java_first_jaxws-1.1/services/HelloWorld.HelloWorldImplPort?wsdl

To run the sample under axis2server:

Please copy the java_first_jaxws jar into <AXIS2_HOME>/repository/servicejars (Please create the directory if it does not exist). Then start the axis2 server.
The WSDL file for the service should be viewable at:

http://localhost:8080/axis2/services/HelloWorld.HelloWorldImplPort?wsdl

NOTE: If you are using JDK1.5, please copy jaxws-rt.jar and jaxws-tools.jar from the JAXWS RI into <AXIS2_HOME>/lib before you run axis2 server. In JDK 1.6, you don't need these 2 jars.
