There are lots of developers who are using Axis2/C for creating and consuming web services in their software projects. There are various user requests for creating a quick start guide for Axis2/C. Here I will explain how to start things in the Windows operating systems.
Here I assume you are using Microsoft Visual Studio 2005 as it is the only supported development environment for Windows in Axis2/C.
The VC project for Axis2/C can be found in the ides/vc/axis2c/deploy directory. Solution name is axis2c.sln. Double click the axis2c.sln or open it from the Visual Studio file menu.
I will explain each of the projects in the build order. All these separate projects will be ultimately compiled into a dll or an exe.
axutil
This project contains the basic utility functions required by axis2/c. For example it contains functions like logging, error handling, string operations, lists, hash maps, qnames, date time formats etc. This library is linked to every other library and every web service and client written for axis2/C.
Guththila
Guththila is the XML parser for Axis2/C. Axis2/C can be built to use the third party XML parser libxml2 as well. Guththila is linked to the axutil and used by axis2_parser only. Users are not required and not encouraged to use this library directly. Instead they should use the Axiom/C library for processing XML.
axis2_parser
Axis2/C provides a parser abstraction layer. This is that parser abstraction layer. This library links to either guththila or libxml2 depending on what the user wants.
axiom
This is the XML model layer provided by Axis2/C for manipulating XML. Axiom/C is build according to the pull model of XML parsing.
Neethi
This is the Web Services policy implementation for Axis2/C. This has the Web Service Security policy implementation as well. Moving the security policy stuff in to the Rampart/C space is a todo in Axis2/C.
axis2_engine
This project encapsulates the main functionalities of Axis2/C. So this is the core of Axis2/C. Every service and client should linke to this library.
axis2
[http_sender] and axis2
[http_receiver] This two are the http senders and http receivers of the Axis2/C engine. They are linked to axis2_engine. Axis2/C supports plugging of various transport senders and receivers. Best example is tcp senders and receivers.
axis2_mod_addr
This module implements the WS-Addressing specification. This is a module for Axis2/C and it connects to the Axis2/C via the handlers interface.
mod_axis2
This is the Axis2 module for Apache web server. This module is used to connect Axis2/C and Apache web server. When Axis2/C is deployed in Apache server, Axis2/C services are served via the Apache server. Client side of Axis2/C has nothing to do with this.
mod_axis2_iis
Same as mod_axis2, instead of the Apache Web Server this module connects Axis2/C and Microsoft Internet Information Server (IIS).
axis2_simple
[http_server] This is the simple http implemented by Axis2/C for for http transport. User can use this server instead of IIS or Apache for deploying their services. But its main purpose is to serve as a development tool. If you want to debug your services this is the easiest way. You cab do this by setting this project as the startup project and run the debugger. Also note that the workign directory of this project must be set to idesvcaxis2cdeploybin
axis2_tcp_server, axis2_tcp_sender and axis2_tcp_receiver
These are equivalents of axis2
[http_sender,] axis2
[http_receiver] and axis2
[http_server] for TCP transport.
tcpmon
This is a tool which can show tcp messages. This can be used as a debugging tool to see the actual messages that are going in the wire.
services folder
This folder contains the sample service projects that ship with Axis2/C.
clients folder
This folder contains the sample clients that ship with Axis2/C.
When the Axis2/C solution is built Axis2/C is built in to the idesvcaxis2cdeploy directory. Also make sure that AXIS2C_HOME and PATH variables are set to {AXIS2C_SOURCE_DIST}idesvcaxis2cdeploy and {AXIS2C_SOURCE_DIST}idesvcaxis2cdeploylib directories. Set the axis2
[http_server] as the startup project and set the working directory of this project to {AXIS2C_SOURCE_DIST}idesvcaxis2cdeploybin. Then start the debugger.
By default the axis2
[http_server] runs on port 9090. You can change this by specifying the command line argument -p PORT. You can also set the log level by using the command line option -l{LOG LEVEL}. By default the log is set to debug and you can change it to critical by specifying -l0.
Axis2/C VC project doesn't copy the include files in to the deploy directory. So you have to manually copy them to the deploy directory in case this is used as a development distribution for other projects.
Debugging with IIS server
First you need to setup the IIS server for loading Axis2/C as described in the
Axis2/C manual. Make sure that mod_axis2_IIS is the startup project. Then go to debug->attach to process and in the dialog box select the IIS process. For IIS 5.1 this is inetinfo.exe and for IIS 6 and IIS 7 this is w3wp.exe. If Axis2/C is properly loaded by IIS this will allow you to debug Axis2/C under IIS.
Debugging with Apache Server
The instructions are same as IIS server. You need to make the mod_axis2 as the startup project. When doing the attach to process, Apache process name is
[httpd.exe.]