Axis2 Plug-in Guide for IntelliJ IDEA

This document explains the installation and usage of Axis2 plug-in for IntelliJ IDEA.

[Download Plug-in]

Content

Introduction

The Axis2 plug-in for IntelliJ IDEA helps users to create service archives which can be deployed in Axis2, and generate java classes files from WSDL files. The following section describes the installation procedure followed by the usage of the plug-in.

Note: This plug-in is made up with IDEA Open API which will be compatible with idea version since build 4121. The plugin also be compatible with all the builds after build number 4121 and also the java version should be 1.4 or higher. The provided screen shots may slightly differ with what the user would actually see but the functionality has not been changed.

Installation

First download the plug-in which is a zipped file, and extract it into plugins directory which is located in the directory where IDEA is installed. If a previous version of the plug-in resides in this directory you will have to delete it prior to extracting the new zip file. If you have extracted the file correctly you would see a directory called axis2-idea-plugin.

Next step is to restart IDEA so that the changes can take place. If the plug-in has been installed correctly, you will see following icons in IDEA when it is restarted.

Figure 1

Also if you right-click on the IDEA editor you would see a link to the same plug-in.

Figure2

When you click on either one of them, a window (Page 1) will appear asking you to select one of the following two options.

  1. Create a service archive
  2. WSDL2Java code generation

Page 1:

Figure3

If you want to create a service archive obviously you must select "Create a service archive" option. Like wise, if u want to generate java class file from a WSDL file you must select the radio button option "WSDL2Java code generation".

WSDL2Java Code Generation

Select "WSDL2Java code generation" and click on the button "OK" to generate code from a WSDL file. Then the following window will appear.

WSDL2Java Page 2:

Figure4

Once the WSDL file is selected you will be able to move onto the next page. The "Browse" button can be used to easily browse for a file rather than having to type the whole path.

Once the WSDL file is selected, click on the "Next" button which will take you to the page below.

WSDL2Java Page 3:

This page gives the user the option of selecting default or custom code generation options. There are three default code generation options in all. The first enables the user to generate both client and server code under default configurations while the second generates just the client side under default configurations. The third option generates server side code under default configurations.

Note:

  • When client side code is generated under default configurations it generates the stub, compiles it, packages it as a jar (the name of the jar will be <service name >-jar) places it in a lib folder (If there is no lib folder, it is created) under the IDEA project that is opened. This jar that's generated will also be added as a project library to the current active IDEA project.
  • When server code is generated under default configurations it generates the server side code and also generates a default service.xml. The user will then be taken to page 5.
  • When both server and client side is generated under default configurations the client stub is added are a jar to the current IDEA project and the user is taken to page 5.

Figure5

WSDL2Java Page 4:

Codegen options are to be selected here. By far this is the most important page in this wizard, which determines the characteristics of the code being generated.

Figure5

Here's some information on the options for selection:

  • Output language can be Java, C#. But we have not fully tested C# codegeneration, therefore, it is better to select Java as output language.
  • If the WSDL comprises of several services, the user can select the service for which the code should be generated for.
  • If the WSDL comprises of several ports for a particullar service, the user can select the port which the code should be generated for.
  • The default data binding type is adb (Axis2 Data Binding). Although the tool is capable of providing XML beans, due to class loading issues in XML beans, current implementation only generate code with OM and ADB.
  • As for the package name of the generated code, you can set the name as you wish.
  • Users can select the one out of the three options- "Generate Client Side", "Generate Server Side" and "Generate All". The user will be able to select further options based on his options selected here. These sub options are explained below.
    • If user selects "Generate Client Side", he can further select the service invocation style. Since Axis2 supports both synchronous and asynchronous client programming model, the tool has provided a way to selecting the invocation style.
    • If user selects "Generate Server Side", he can also generate a default service XML file. If the user selects "Generate an interface for skeleton" option then it only generates an interface for the server side. If so the user has to implement this interface. If this option is not selected, the skeleton class is generated, which the user can fill in later on.
    • If user selects "Generate All" option, then all the classes will be generated in the referenced schemas by the WSDL irrespective of elements referred by the WSDL, along with the client side code.
  • The dafault behaviour of the code generator is to map namespaces to package names logically, but if the user wishes to change the package names of the generated classes, he can do so by changing the values in the Namespace to Packagename mapping table.

With these enhanced options novices need not worry about the options that can be set as the default options cover the most common cases. Advanced users will find it very easy to turn the knobs using the custom generation option.

WSDL2Java Page 5:

Figure6

Here uses have the option of adding the generated code directly to their working IDEA project or choose a custom location. If the user decides to add it to the current IDEA project he/she will have to choose the module and the source directory that the code should be generated to.

Alternatively the user can browse and select the output location/path (the location at which the code is to be generated) using the "Browse" button. Because of the "Browse" button you do not need to type in the output file path.

Fig4

Once an output location is selected you can click on "Finish" button which will generate the java class file. If code generation is successful then a message box will appear acknowledging this fact a shown above.

Create a Service Archive

Select the "Create a service archive" radio button on Page 1 of Axis2 IDEA plug-in wizard.

Page 1:

Fig5

Service Archive Page 2:

The page below will appear asking the user to select the archive type

fig6

In Axis2, the user can deploy a single service or a service group. Therefore, you can select either "Single service archive" or "Service group archive" for the archive type you want to create.

If you already have a services.xml you can skip some of the steps in the wizard by selecting the radio button option "I already have services.xml" and clicking on "Next" button. If you do not have the services.xml, select the radio button option "Generate services.xml" and click on the "Next" button, in which case the tool will create the services.xml for you.

Depending on the options you selected on this page there can be three sub wizards:

  1. Sub wizard 1 (Generate single service and its services.xml)
  2. Sub wizard 2 (Generate service group and its services.xml)
  3. Sub wizard 3 (Generate service/service group using already existing services.xml)

1 & 2 follow the same set of steps except for some looping mechanism in the middle of the wizard.

Sub Wizard 1 and Sub Wizard 2

Service Archive (sub wizards 1 & 2) Page 3:

From this page you have to select the location of the service classes directory (the location of the compiled classes). You do not need to type path, simply browse and select.

fig7

When you click on "Next" button, wizard will move to the page below

Service Archive (sub wizards 1 & 2) Page 4:

Here you select service specific external libraries (third party libraries) and service WSDL files. If you want to add multiple WSDL files to a single service type you can do that as well.

fig8

To add libraries first click on the browse button to browse for library files and then click on the "Add" button. Once added the selected file will appear in the list box.

To add WSDLs, first click on the browse button to browse for WSDL file and then click the "Add" button to add the file to the list.

After adding external libraries and service WSDL files click on the "Next" button to move to next page.

Service Archive (sub wizards 1 & 2) Page 5:

This page allows you to select service implementation class. In the case of service group, same page will be looped to select multiple service implementation classes. This process is explained in detail below.

Select a service implementation class by browsing and clicking on the "Load" button to load all the public methods in that class, after which you can select the methods that you want to publish using the check boxes.

Note : If you do not select the correct class path from the "Class location selection" window, the public methods which are available in the selected class file will not be loaded.

fig10

In "Service Name" text box you can type the name of the service you want, but remember that the service name should be unique throughout the system.

When you have completed this particular service click on the button "Next". In the case of a service group when you click on the "Next" button for that particular service the following dialog box will appear with option to add more service(s) to a service group.

fig11

If you click on "Yes", you have to follow the same procedure to add some other service(s) to service group.

If you click on "No", the button "Next" will be enabled and you can go to next page.

Note: From this point onwards the steps are similar to all the sub wizards.

Service Archive (sub wizards 1 & 2) Page 6:

This page displays the services.xml file, either the one given by you (in the case of I already have services.xml) or the one generated by the system (in the case of "generate services.xml")

fig12

This page is editable and provide a way to add parameters and module references to any level.

Note : When you click on either the "+Parameter" or the "+ModuleRef" buttons remember that corresponding text will be added to the current mouse position. Therefore, click on the location you want to add the parameter or module references and then click relevant button (+Parameter or +ModuleRef).

+Parameter button:

If you click on the "+Parameter" button a window will appear asking to give parameter name and parameter value.

fig13

Note that you can also manually add parameters (without clicking on the "+Parameter" button ) to any where in the document as you wish.

+ModuleRef button:

Likewise, adding module references can be done by clicking on the "+ModuleRef" button in the page. You have to type the name of the module to be engaged as shown in the following figure.

fig14

When you complete this page press the "Next" button to go to final page.

Service Archive (sub wizards 1 & 2) Page 7:

fig15

Next step is to select output file location, the location in which archive file should be created.

In the "Archive Name" text box, type the name of the archive file you want to place. This name will finally become the service group name.

Note : Do not include file extension when you type archive name. System will generate that for you.

When you are done, click the "Finish" button. If everything has been done successfully you will see following message.

fig16

Note: Pages 6 & 7 of sub wizards 1 & 2 are common to sub wizard 3 from its page 3 onwards.

Sub Wizard 3

In the case where services.xml is already available, the steps are as follows:

Service Archive (sub wizard 3) Page 3:

fig17

This page allows you to select both location of services.xml and the location of service classes directory. Click on the "Select" buttons and browse the file system to find required document and location.

Click on the "Next" button which will take you to a page which allows you to add third party libraries and WSDL's in the same manner as "Sub Wizard 1 & Sub Wizard 2" section's Page 6 - Edit service descriptors. Note that Sub Wizard 3 from this point takes the same pages as 6 to 7 of Sub Wizards 1 & 2.