Wednesday, June 24, 2009

Creating Apache Axis2 Web Services on NetBeans IDE

Creating Apache Axis2 Web Services on NetBeans IDE

This tutorial shows you how to create and deploy an Apache Axis2 web service from a Java class. You also learn how to set up the Tomcat and GlassFish servers bundled with NetBeans IDE to deploy Axis2 web services. The tutorial also shows how to configure the Axis2 options in the IDE so that the IDE deploys Axis2 web services correctly.

Apache Axis is an implementation of the SOAP (Simple Object-Access Protocol) submission to the W3C. Apache Axis2 is a more efficient, more modular and more XML-oriented version of Axis. Axis2 not only supports SOAP 1.1 and SOAP 1.2, but it also has integrated support for RESTful web services. The same business logic implementation can offer both a WS-* style interface as well as a REST/POX style interface simultaneously. For more information about Axis2, please see the Apache.org website.

Axis2 web services are interoperable with Metro. You can create a JAX-WS client for an Axis2 web service, although some more complicated Axis2 WSDL operations may not be supported.

Contents

Content on this page applies to NetBeans IDE 6.1

To follow this tutorial, you need the following software and resources.

Software or Resource Version Required
NetBeans IDE version 6.1 Web and Java EE download bundle or
version 6.5 Java Web download bundle
Java Development Kit (JDK) version 6 or
version 5
Apache Axis 2 version 1.3 or later, WAR distribution
Java EE-compliant web or application server Tomcat web server 6.0 and/or
GlassFish application server v2 or v3

Both Tomcat and GlassFish can be installed with the Java Web distribution of NetBeans IDE. Alternatively, you can visit the GlassFish downloads page or the Apache Tomcat downloads page.

Setting Up Axis2 and NetBeans IDE

In this section you learn how to download an Axis2 WAR file, embed it in either an Apache Tomcat or GlassFish server, and configure NetBeans IDE to upload AAR files to the server.

Downloading the Apache Axis2 WAR file

Apache Axis2 can be downloaded here. Download the WAR (Web Archive) distribution, so you do not have to build the WAR file yourself. The download is in the form of an archive file. Later you unpack the archive to your server.

Installing the Axis2 Support Plugin

This tutorial requires the Axis2 Support plugin for the NetBeans IDE. In the IDE, go to the Plugin Manager, under the Tools menu, and check whether Axis2 Support Plugin is installed, under the Installed tab. If it is installed, check whether an update is available in the Updates tab. If the Axis2 support is not installed, install it from the Available Plugins tab, as shown below.

Screenshot of Plugin Manager showing the Axis2 Support plugin

Setting Up Axis2 Options for Tomcat

Axis services run faster on Tomcat than on GlassFish v1 or v2, but the setup is slightly more complicated. You can easily deploy the same service to both Tomcat and GlassFish by first deploying to one server, then changing the Axis2 options and finally deploying to the other server.

If you want to deploy to GlassFish instead of Tomcat, go to Setting Up Axis2 Options for GlassFish.

To set up Axis2 options for Tomcat:

  1. Unpack the downloaded archive file containing axis2.war to your Tomcat CATALINA_BASE/webapps directory. If you do not know where your CATALINA_BASE is, start the IDE and open the Services tab. Expand the Servers node. Right-click the Tomcat 6.0.x node and select Properties from the context menu. The Catalina Base location is visible in the Connection tab.

    If there is no CATALINA_BASE, you have not run your Tomcat before. Start and stop Tomcat and CATALINA_BASE will be generated.

    Tomcat Properties screen showing Catalina Base location
  2. Start or restart the Tomcat server. Tomcat unpacks the axis2.war file into an axis2 folder in CATALINA_BASE/webapps.
  3. From the top menu bar in the IDE, choose Tools > Options. The Options dialog opens.
  4. Click the Axis2 icon. The Axis2 deployment options page opens.
    Axis2 Options page set up for Tomcat
  5. Set the target location for Axis2 AAR files to your CATALINA_BASE (not TOMCAT_HOME)/ webapps/axis2 directory.

  6. Make sure the Axis2 URL field contains the correct port number for your Tomcat server. To check the port number, start Tomcat (from the Services tab or from Tools -> Servers) and see what port Coyote HTTP/1.1 uses.
    Tomcat output showing Coyote HTTP port number
  7. For convenience, select Use Tomcat Manager for Deployment. This function means that the IDE will launch Tomcat Manager in the background and run the reload command on axis2.war every time you make a change to axis2.war. If you do not select Use Tomcat Manager for Deployment, you will have to manually run Tomcat Manager or use other Tomcat tools to reload axis2.war every time you make a change to it.

    The default Tomcat Manager username and password varies. You can find this information in the Properties page for the Tomcat server To double-check that Tomcat Manager is deployed and has the default manager role username and password, open CATALINA_BASE/conf/tomcat-users.xml. The manager role should be defined and it should have a username and password assigned to it, as in the following version of the file. (You can copy and paste this file if necessary.)






Setting Up Axis2 Options for GlassFish

You can deploy Axis2 web services to the GlassFish application server. You can easily deploy the same service to both Tomcat and GlassFish by first deploying to one server, then changing the Axis2 options and finally deploying to the other server.

If you want to deploy to Tomcat instead of GlassFish, go to Setting Up Axis2 Options for Tomcat.

To set up Axis2 options for Glassfish:

  1. Unpack the downloaded archive file containing axis2.war to GLASSFISH_HOME/domains/DOMAIN_NAME/autodeploy. To find GLASSFISH_HOME and the name of your domain, start the IDE and open the Services tab. Expand the Servers node. Right-click the GlassFish V2 or V3 node and select Properties from the context menu. The Domains folder location and the name of the domain are visible in the Connection tab. For example, from the following image, you know to copy axis2.war to G:\glassfish-v2ur2\domains\domain1\autodeploy.
    GlassFish properties page showing path to GlassFish domains directory and domain name
  2. Start the IDE. From the top menu bar, choose Tools -> Options. The Options dialog opens.
  3. Click the Axis2 icon. The Axis2 deployment options page opens.
    Axis2 options page set up for GlassFish
  4. Set the target location for Axis2 AAR files to the axis2.war file you unpacked into the GlassFish autodeploy directory.

    By placing axis2.war into autodeploy, you enable GlassFish to automatically redeploy axis2.war every time you alter the file. On GlassFish v3 Prelude, however, you cannot redeploy the WAR file while the server is running.

  5. Make sure the Axis2 URL field contains the correct port number for your GlassFish server. To check the port number, start GlassFish (from the Services tab or from Tools -> Servers) and see what 80xx port HTTP 1.1 uses. The default port number is 8080. In the following image, the correct port number is 8081 (because another server already uses 8080).
    GlassFish server output showing HTTP port number 8081

Note: If you are using Windows Vista, have GlassFish installed to Program Files, and have User Access Control enabled, you will not be able to make changes to the axis2.war file from the IDE. Either install GlassFish to a different location or disable UAC.

Developing an Axis2 Web Service

In this section, you use NetBeans IDE to create, deploy, test, and modify an Axis2 web service.

Creating an Axis2 Web Service

With NetBeans IDE, you can create an Axis2 web service from a Java class. You can only do this from a Java application or Java library project. In this tutorial, you create a Java library project (because you do not need a main method), create an Axis2 web service in that project (creating the Java class at the same time) and deploy the Axis2 web service to a server.

You can only create an Axis2 web service from a Java or Java Library project. This is because the axis.aar file (the deployable archive into which web services and Axis configuration files are packed) is neither a WAR nor an EAR and cannot be deployed normally as a web (EAR) application.

To create an Axis2 web service:

  1. Click the New Project icon or File -> New Project. The New Project wizard opens. From the Java category, select a Java class library project. Click Next.
  2. Name the project AxisHello. Check that you are using the project folder name and location that you want. It is up to you whether to share the project. Click Finish, and the IDE creates the project.
  3. Right-click the project node. The context menu opens. In the context menu, choose New -> Other. The New File wizard opens. From the Web Services category, choose Axis2 Service from Java and click Next.
    Choosing to create an Axis2 Service from Java in the New File wizard
  4. The Service Type Selection page of the New File wizard is now open. You do not have any Java classes in the project, so select "Create an Empty Web Service." If you had already coded a Java class, you would have selected Create a Web Service from an Existing Java Class. If you wanted to edit the WSDL of the web service, for example to add or change namespaces, you would select Generate a WSDL from Java Source Code. Editing WSDL is outside the scope of this tutorial, so leave this unselected. The wizard should look like the following image.
    Service Type Selection page set up to Create an Empty Web Service
  5. Click Next. The Name and Location page opens. Name the Java class HelloAxisWorld. Name the package axishello. Leave Generate Sample Method selected. This generates a method in the Java class that returns "Hello, World."
  6. Click Finish. The IDE generates a HelloAxisWorld.java class in the axishello source package and a HelloAxisWorld Axis2 web service that mirrors this Java class. You can see that both the Java class and the Axis2 web service have a hello:String operation, shown in the Navigator tab and as a node of the Axis2 web service, respectively.
    Navigator and Project tabs showing identical Axis2 web service and Java class operations

Deploying and Testing an Axis2 Web Service

Once you have created an Axis2 web service, you need to deploy it to a server. Actually, deployment to a server involves two steps:

  1. Copying the Axis2 web service to the axis2.war file used by the server. This step can be taken with the server offline.
  2. Redeploying the updated axis2.war file to the server.

If you are deploying to Tomcat with the Use Tomcat Manager for Deployment option enabled (see Setting Up Axis2 Options for Tomcat), or you are deploying to GlassFish and axis2.war is in the GLASSFISH_DOMAIN/autodeploy folder (see Setting Up Axis2 Options for GlassFish), the updated axis2.war is automatically redeployed to the server. Otherwise, you have to redeploy axis2.war manually, using application server tools. In this tutorial we assume you have set up the Axis2 options so redeployment is automatic.

To deploy an Axis2 web service to the server:

  1. Right-click the web service's node. The context menu opens. Select Deploy to Server. The IDE compiles an Axis2 AAR file and copies it to the axis2.war file used by the application server.
  2. If you have enabled automatic deployment, the web service is deployed to the server. If the server is not running, start it and the web service is automatically deployed.
  3. To test the service, expand the web service node to reveal the operations. Right-click the hello:String node and select Test Operation in Browser.
    Operation subnode context menu showing the option to Test Operation in Browser
  4. Your browser opens with a test value of your variables. The test value is appended to the URL.
    Browser window showing operation test results and test values appended to URL
  5. Change the variable value in the URL and press Enter. The test result changes as well.
    Browser window showing operation test results and altered values

Changing the Web Service's Operations

To change the web service operations, edit the Java file in the project. The operations in the web service change simultaneously. Add a simple add method to HelloAxisWorld.java, as below.

public class HelloAxisWorld {

/** Sample method
*/
public String hello(String name) {
return "Hello "+name;
}
public int add(int x, int y) {
return x+y;
}

}

Save the Java file, and the operation appears as a subnode of the web service.
Projects tab showing new operation subnode to web service

Redeploy the web service and test it as described in Deploying and Testing an Axis2 Web Service.

Troubleshooting

Here are some difficulties you may experience and their solutions:

More Exercises

Here are a few more ideas for you to explore:



See Also

For more information about using NetBeans IDE to create and consume web services, see the following resources:

To send comments and suggestions, get support, and keep informed on the latest developments on the NetBeans IDE Java EE development features, join the nbj2ee@netbeans.org mailing list.