Saturday, June 20, 2015

How to Create an Axis2 Web Service with the Eclipse IDE

Apache defines Axis2 as a Web Service / SOAP / WSDL engine, the successor to the widely used Apache Axis SOAP stack. My aim is to describe how to create an Axis2 web service using eclipse IDE in windows.


Prerequisites 


  • You should have java installed and set path and Java_Home correctly (JAVA_HOME, JRE_HOME)
  • You should have Apache Tomcat and Axis2 downloaded and extracted 
  • You should have installed the Eclipse Java EE IDE 


Lets start the web service development 


First lets add Tomcat run time environment to Eclipse. Go to Window->Preferences then select Server on your left hand side. Under that you can see run time environments > click Add. You can see similar interface as Figure 1.


   Figure 1

Select Apache Tomcat v7.0 and click Next. Then you can see a similar interface as in Figure 2. Click on the Browse button and select the Apache Tomcat 7 Extracted folder. Then Click Finish


                                                                           Figure 2

Then you can see the added environment as in Figure 3.

                                                                            Figure 3

Then you need to add Axis2 path to the Eclipse preferences. Again go to Window->Preferences then click on Web Services and then select Axis2 Preferences. Then click on the Brows button and select the Extracted axis 2 folder path. (Figure 4)

                                                                         Figure 4

Step 1 : Create Dynamic web project

Click on file->New->Other and you can see an interface like Figure 5. Type Dynamic in the wizard input field and select the Dynamic Web Project. Then click Next

                                                                   Figure 5

Then add project name as you prefer. I'll put project name as SampleWebService (Figure 6) Then Change the Dynamic web module version to 2.5 and then Click on Modify button under configuration. Then select Axis2 Web Services and click OK button > Next > Finish.

                                                                            Figure 6

Step 2:  Create Web service class

Then we have to write the service class that have the method that we need to implement as a service. In my example I'll write a simple method to multiply two number which will be passed as parameters.

                                                                       Figure 7

Right click on the project you created and select New->Other. Then type service on wizards input box as figure 8 and select the web service to mark the class you created as a web service.

                                                                           Figure 8

Then You will see an interface similar to Figure 9. Give a service name as you prefer and then click on Web Service run-time: Apache Axis

                                                                       Figure 9

Then change the web server run-time to Apache axis2. Click Next and in next interface make sure to select Generate a default service.xml file option. 

Then click Next button and then in next interface you have to click Start Server button as show in Figure 10. Then Click Finish button.

                                                                              Figure 10

After you finish you can see a log similar to the following :

Figure 11

As shown in Figure 11 you can find the port your service runs. In my example it runs on 8080 port (Circled in Figure 11 ). Then you can access the web service you have just created by going to following link.
http://localhost:8080/SampleWebService/services/listServices

                                                                                  Figure 12

Click on the Service class name, you will be able to access the wsdl file.

Step 3 : Create Axis Archive file


Now we have a;ready run the web service but we haven't created the Axis Archive file from the web service that we created. To create the Axis archive go to the following path YourProjectNamePath\WebContent\WEB-INF\services\ServiceYouCreated using command line. Then enter following command.

 jar cvf FirstService.aar com META-INF

Then you can see FirstService.aar file has created on your folder location.

Now Let's deploy the Axis2.war file in to Tomcat. You should copy the Axis2.war file in to webapps folder on Apache tomcat. Then go to the bin folder on Apache tomcat installation directory from command prompt. Then run startup.bat. Please not that in this point you have to set JAVA_HOME and JRE_HOME correctly in Environment Variables.  

Then you'd be able to access the http://localhost:8080/axis2/ and you can see interface similar to Figure 13.

                                                                     Figure 13

Then Click on Administrator. Enter user name and password.(Default username is admin and password  is axis2). Click on Upload Service in Top left in your page and upload the .aar file that was created earlier.

Then go to Available service section you can see your service as Figure 14. You can click on the web service you created and access the wsdl link.,


                                                                     Figure 14

Step 4 : Create Web service Client


Then we have to create the client stub class which we can use to access the web service methods. You can right click on project then New->Other then select Web Service Client. (Figure 15)

                                                                           Figure 15

In the interface in service definition give the wsdl path (for my project it's http://localhost:8080/SampleWebService/services/FirstService?wsdl ) then click on Web Service Runtime and select Axis2. Then click next. (Figure 16)

                                                                          Figure 16

Next interface you can provide package name for the class which we are going to generate. Then click Finish 



                                                                                Figure 17

Then create a java project File->New->Other Java Project and copy the clientstub class in to that project. Then write sample test class to run the web service client.

package it.com.clientapp;
import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;

import it.com.clientstub.*;
import it.com.clientstub.FirstServiceStub.MultyTwoNumber;
import it.com.clientstub.FirstServiceStub.MultyTwoNumberResponse;

public class TestWebServie {
 public static void main(String[] args) {
  try {
   FirstServiceStub stub=new FirstServiceStub();
   
   MultyTwoNumber num=new MultyTwoNumber();
   num.setNum1(10);
   num.setNum2(16.2);
   MultyTwoNumberResponse response=stub.multyTwoNumber(num);
   double returnVal=response.get_return();
   System.out.println("Client values are :"+ 10 + " x "+16.2);
   System.out.println("Server returns "+returnVal);
  } catch (AxisFault e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (RemoteException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }

}

Then right click on the class Run As -> Java Application. Then you can see this client application call the service method and returns the output.



This is a simple two number multiplication service implementation and your can implement your own service logic with different kind of parameters to the service. 

No comments:

Post a Comment

Importance of Daily Scrum Meeting and Sprint Retrospective

Importance of Daily Scrum Meeting What is a Daily Scrum Meeting? A Scrum meeting is usually held for Projects that are focusing on Agi...