Friday, December 3, 2010

Web Services For Beginners

GOPI GOLLA



Introduction
Recently I was reading through SOA and I wanted to develop few services using Axis. Since I was already comfortable with eclipse as j2ee development IDE (I use eclipse 3.4 – Ganymede for development purposes). When I started with axis, I wanted to use eclipse for development of web-services too. I struggled couple of hours googling to find best way to write, debug, deploy and distribute web services.



I googled and finally I would an acceptable way to do development and debug. These are information I put together from my own experience and various sources from internet.

Before starting, I want to mention my development environment.


Development environment
Java – J2ee SDK 1.4.
Jre 1.5.
Eclipse 3.4 Ganymede.
Axis2 - 1.4


Create Web Service
For better clarity, I will take you through one service creation and one client creation using eclipse. For simplicity I will create a simple calculator service with 4 simple service functions.


· add
· divide
· substract
· multiply



Step 1: Create a dynamic web project.
File -> New -> Project ->








Press Finish and you have a new dynamic web project.


Step 2: Create a simple Calculator class.



package org.bpt.Services;

/**
*
* @author GOPI GOLLA
*
* Axis Service Sample.
*
*
*/

public class Calculator {

public double add(double arg1, double arg2){
return arg1 + arg2;
}

public double substract(double arg1, double arg2){
return arg1 - arg2;
}

public double multiply(double arg1, double arg2){
return arg1 * arg2;
}

public double divide(double arg1, double arg2){
if(arg2 != 0)
return arg1 / arg2;
else return -1;
}
}




Step 3: Create an axis service from this class.


Right click Calculator.java
New -> Other -> Web Service







Next



Click on the link and select Axis 2.







Click OK and click Next in Web service Dialog.












Now click on Start Server and wait for few seconds.
Press Next



Finish. You have created a new axis service, deployed it and started the server now.

Check Services



To check the deployed service, check the following URL in a browser.
http://localhost:8080/CalculatorService/services/listServices


You see the following screen with the newly created service listed.



To check whether service is working properly, check the following URLs


To see the service definition, click the following link.
http://localhost:8080/CalculatorService/services/Calculator?wsdl


Add Service:

http://localhost:8080/CalculatorService/services/Calculator/add?arg1=12&arg2=13



You see an xml file containing result as below. You can change the arguments to see the service working.




Substract Service

http://localhost:8080/CalculatorService/services/Calculator/substract?arg1=12&arg2=13


You see an xml file containing result as below. You can change the arguments to see the service working.



Multiply Service

http://localhost:8080/CalculatorService/services/Calculator/multiply?arg1=12&arg2=13

You see an xml file containing result as below. You can change the arguments to see the service working.



Divide Service

http://localhost:8080/CalculatorService/services/Calculator/divide?arg1=12&arg2=13


You see an xml file containing result as below. You can change the arguments to see the service working.




Cool and easy ..isn’t it?


Creating a Java Client for the web Service
Now we will create a Java client which used the services we created now. There are many ways to create clients and I will explain one of them.

File -> New -> Project -> Dynamic Web project










Click Finish and now you have a dynamic web project “CalculatorServiceClient”.
Now select on your Calculator.java file in CalculatorService project.

File -> New -> Other -> Web Service Client




Next



Set it to Axis 2.




Add service definition URL - http://localhost:8080/CalculatorService/services/Calculator?wsdl






Select Calculator client project




Next



Keep the default setting s and press finish. You see that new classes are created for the client.




Now we will write a simple console application which uses these generated classes to access the services – CalculatorServiceClient.java.


package org.bpt.services;

import org.apache.axis2.AxisFault;

public class CalculatorServiceClient {

public static void main(String[] args) {
try {
CalculatorStub stub = new CalculatorStub();
double val = add(stub, 12,13);
System.out.println("Got response from add service. result = " +val);
} catch (AxisFault e) {
e.printStackTrace();
}

}

/* fire and forget */
public static double add(CalculatorStub stub, double arg1, double arg2) {
try {
CalculatorStub.Add req = new CalculatorStub.Add();
req.setArg1(arg1);
req.setArg2(arg2);
CalculatorStub.AddResponse res = stub.add(req);

return res.get_return();
} catch (Exception e) {
e.printStackTrace();
System.err.println("\n\n\n");
}
return -1;
}


}


Run the application and you see the result in the console. Congratulations. You have created your first web service in eclipse. You are now ready to fly to the heights. All the best for a great fly.

Have TO UpDate

1 comment:

  1. hi,
    i am an engg. student and want to learn about web services and their implementation but i am not able to figure out which book to buy for this purpose. i am a beginner and want to start with level 0. plz help me and suggest some good books for web services my email id is avneeshkumaratri@gmail.com

    ReplyDelete

Search This Blog