blob: 9f89ea5c4448e33ba94527afe2409557e793ebd7 [file] [log] [blame]
Table of Contents
=================
1. Getting Axis2/C Working on Linux
1.1 Setting up Prerequisites
1.1.1 Mandatory
1.1.2 Optional
1.2 Using Binary Release
1.3 Using Source Release
1.3.1 Basic Build
1.3.2 Build with Options
(a) With Guththila
(b) With libxml2
(c) With AMQP Transport
1.3.3 Building Samples
1.4 Configuration
1.4.1 AMQP Transport
1.5 Running Samples
1.5.1 HTTP Transport
(a) Server
(b) Clients
1.5.2 AMQP Transport
(a) Server
(b) Client
2. Getting Axis2/C Working on Windows (Win32)
2.1 Setting up Prerequisites
2.1.1 Mandatory
2.1.2 Optional
2.2 Using Binary Release
2.3 Using Source Release
2.3.1 Setting Build Options
(a) Enable Guththila
(b) Enable libxml2
(c) Enable SSL Support
(d) Enable libcurl
(e) Setting zlib Location
2.3.2 Compiling the Source
2.4 Running Samples
2.4.1 HTTP transport
(a) Server
(b) Clients
3. Installing Apache2 Web Server Integration Module (mod_axis2)
3.1 Building mod_axis2 from Source
3.1.1 On Linux
3.1.2 On Windows (Win32)
3.2 Deploying in Apache2 Web Server
4. Installing IIS (Internet Information Server) Integration Module
(mod_axis2_IIS)
4.1 Building mod_axis2_IIS from Source
4.2 Deploying in the IIS
5. Using Axis2/C with CGI
5.1 Deploying in Apache2
5.2 Deploying in IIS
6. FAQ
1. Getting Axis2/C Working on Linux
===================================
1.1 Setting up Prerequisites
----------------------------
1.1.1 Mandatory
--------------
By default Axis2/C is not dependent on any other software libraries.
1.1.2 Optional
--------------
(a) libxml2 - http://www.xmlsoft.org/
(b) zlib - http://www.zlib.net/
(c) libiconv - http://www.gnu.org/software/libiconv/
(d) openssl - http://www.openssl.org/
(e) Apache Qpid - You need to have Qpid libraries installed on your machine
if you are going to use AMQP transport. It is imperative
that you compile and install Qpid from SVN source.
You can checkout Qpid SVN source from
https://svn.apache.org/repos/asf/qpid/trunk.
1.2 Using Binary Release
------------------------
(a) Extract the binary tar package to a directory.
(b) Set AXIS2C_HOME environment variable pointing to the location where you
have extracted Axis2/C.
$ AXIS2C_HOME='/your_path_to_axis2c'
$ export AXIS2C_HOME
NOTE : You will need to set AXIS2C_HOME only if you need to run Axis2/C
samples or tests. The reason is that the samples and test codes
use AXIS2C_HOME to get the path to Axis2/C. To write your own
services or clients this is not a requirement.
1.3 Using Source Release
------------------------
1.3.1 Basic Build
-----------------
(a) Extract the source tar package to a directory
(b) Set AXIS2C_HOME environment variable pointing to the location where you
want to install Axis2/C.
$ AXIS2C_HOME='/your_desired_path_to_axis2c_installation'
$ export AXIS2C_HOME
NOTE : You will need to set AXIS2C_HOME only if you need to run Axis2/C
samples or tests. The reason is that the samples and test codes
use AXIS2C_HOME to get the path to Axis2/C. To write your own
services or clients this is not a requirement.
(c) Go to the directory where you extracted the source
$ cd /your_path_to_axis2c_source
(d) Build the source
This can be done by running the following command sequence in the
directory where you have extracted the source.
$ ./configure --prefix=${AXIS2C_HOME}
$ make
$ make install
Please run './configure --help' in respective sub directories for more
information on these configure options.
NOTE : If you don't provide the --prefix configure option, it will by
default be installed into '/usr/local/axis2c' directory.
You could run 'make check' to test if everything is working fine. However,
note that the test/core/clientapi/test_clientapi program would fail unless
AXIS2C_HOME points to the installed location. (It's looking for Axis2/C
repository) This means you really should run 'make && make install',
then set 'AXIS2C_HOME=/path/to/install', and then 'make check'.
That's a little different than the usual 'make && make check && make
install' process.
1.3.2 Build with Options
------------------------
(a) With Guththila
------------------
- Now Guththila is the default parser. Unless you enable libxml2 Guththila will be built.
(b) With libxml2
----------------
You may need to try Axis2/C with libxml2 XML parser. You can do it by
giving '--enable-libxml2=yes' as a configure option.
$ ./configure --enable-libxml2=yes [other configuration options]
$ make
$ make install
(c) With AMQP Transport
-----------------------
You may need to try Axis2/C with the AMQP transport. You can do it by
giving '--with-qpid=/path/to/qpid/home' as a configure option.
$ ./configure --with-qpid=/path/to/qpid/home [other configuration options]
$ make
$ make install
(d) With openssl
----------------
You may need to try Axis2/C with openssl. You can do it by
giving '--with-openssl=[Path to openssl directory]' as a configure option. Path will contain
openssl include directory and lib directory. If path is not given, include files will be
taken from /usr/include/openssl and lib will be taken from /usr/lib (or /usr/lib64).
$ ./configure --with-openssl=/opt/openssl [other configuration options]
$ make
$ make install
1.3.3 Building Samples
----------------------
If you need to get the samples working, you also need to build the samples.
To build the samples:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib/
$ cd samples
$ ./configure --prefix=${AXIS2C_HOME}
--with-axis2=${AXIS2C_HOME}/include/axis2-1.7.0
$ make
$ make install
Please run './configure --help' in samples folder for more information on
configure options.
NOTE : If you don't provide a --prefix configure option, samples will by
default be installed into '/usr/local/axis2c/samples' directory.
1.4 Configuration
-----------------
1.4.1 AMQP Transport
--------------------
You need to add the following entries into the axis2.xml.
<transportReceiver name="amqp" class="axis2_amqp_receiver">
<parameter name="qpid_broker_ip" locked="false">127.0.0.1</parameter>
<parameter name="qpid_broker_port" locked="false">5672</parameter>
</transportReceiver>
<transportSender name="amqp" class="axis2_amqp_sender"/>
1.5 Running Samples
-------------------
1.5.1 HTTP Transport
--------------------
(a) Server
----------
You have to first start the axis2_http_server as follows.
$ cd ${AXIS2C_HOME}/bin
$ ./axis2_http_server
You should see the message
Started Simple Axis2 HTTP Server...
This will start the simple axis server on port 9090. To see the possible
command line options run
$ ./axis2_http_server -h
NOTE 1 : You may need to login as superuser to run the axis2_http_server.
NOTE 2 : If you run into shared lib problems, set the LD_LIBRARY_PATH as
follows.
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib
(b) Clients
-----------
When the axis2_http_server is up and running, you can run the sample
clients in a new shell as follows.
$ cd ${AXIS2C_HOME}/samples/bin
$ ./echo
This will invoke the echo service.
$ ./math
This will invoke the math service.
To see the possible command line options for sample clients run them
with '-h' option
NOTE : If you run into shared lib problems, set the LD_LIBRARY_PATH as
follows.
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib
1.5.2 AMQP Transport
--------------------
(a) Server
----------
Start the Qpid broker as follows.
$ cd ${QPID_HOME}/sbin
$ ./qpidd --data-dir ./
Start the axis2_amqp_server as follows.
$ cd ${AXIS2C_HOME}/bin
$ ./axis2_amqp_server
You should see the message
Started Simple Axis2 AMQP Server...
This will connect to the Qpid broker listening on 127.0.0.1:5672.
To see the possible command line options run
$ ./axis2_amqp_server -h
NOTE 1 : You have the flexibility of starting the Qpid broker first and
then axis2_amqp_server or vice-versa.
NOTE 2 : You may need to login as superuser to run the axis2_amqp_server.
NOTE 3 : If you run into shared lib problems, set the LD_LIBRARY_PATH as
follows.
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib
(b) Clients
-----------
When the axis2_amqp_server is up and running, you can run the sample
clients in a new shell as follows.
$ cd ${AXIS2C_HOME}/samples/bin/amqp
$ ./echo_blocking
This will invoke the echo service.
To see the possible command line options for sample clients run them
with '-h' option
NOTE : If you run into shared lib problems, set the LD_LIBRARY_PATH as
follows.
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib
2. Getting Axis2/C Working on Windows (Win32)
=============================================
2.1 Setting up Prerequisites
----------------------------
2.1.1 Mandatory
---------------
(a) The binaries shipped with this version are compiled with
Microsoft Visual Studio compiler (cl). And also the makefile that is
shipped with this version needs Microsoft Visual Studio compiler (cl)
and nmake build tool.
NOTE : You can download Microsoft VS Express2005 Edition and
Platform SDK from Microsoft website. You need to add the path to
Platform SDK Include and Lib folders to the makefile in order
for you to compile the source.
2.1.2 Optional
--------------
(a) libxml2 [http://www.zlatkovic.com/pub/libxml
version >= libxml2-2.6.20.win32]
(b) zlib [http://www.zlatkovic.com/pub/libxml
version >= zlib-1.2.3.win32]
(c) iconv [http://www.zlatkovic.com/pub/libxml
version >= iconv-1.9.1.win32]
(d) openssl [http://www.slproweb.com/products/Win32OpenSSL.html
version >= openssl 0.9.8e]
2.2 Using Binary Release
------------------------
Extract the binary distribution to a folder of your choice.
(example: C:\axis2c)
The c:\axis2c folder structure is as follows.
axis2c
|
+- bin - server
|
+- samples - samples go here
| |
| +- bin - sample client executables
| |
| +- lib - sample libraries
| |
| +- src - source files of the sampels in bin and lib folders
|
|
+- docs - documentation
|
+- include - all include files of axis2
|
+- lib - library modules
|
+- logs - system and client logs are written to this folder
|
+- modules - deployed modules
|
+- services - deployed services
You might optionally require to copy zlib1.dll ,iconv.dll and libxml2.dll. Copy
them to C:\axis2c\lib .
(Or you can have these dll's in some other place and add that
location to PATH environment variable)
2.3 Using Source Release
------------------------
2.3.1 Setting Build Options
---------------------------
Please edit the <source_distribution>\build\win32\configure.in file
to set the following build options.
(a) Enable Guththila
--------------------
- Now Guththila is the default parser. Unless you enable libxml2 Guththila will be built.
(b) Enable libxml2
------------------
- Set the ENABLE_LIBXML2 option to 1
- Set the LIBXML2_BIN_DIR to the location where libxml2 is installed to
- Set the ICONV_BIN_DIR to the location where iconv is installed to
(c) Enable SSL Support
----------------------
- Set ENABLE_SSL option to 1
- Set OPENSSL_BIN_DIR to the location where OpenSSL is installed to
(d) Enable libcurl
------------------
- Set ENABLE_LIBCURL to 1
- Set LIBCURL_BIN_DIR to the location where libcurl is installed to
(e) Setting zlib Location
-------------------------
Set the ZLIB_BIN_DIR to the location where zlib is installed to
Default location for zlib is E:\zlib-1.2.3.win32 and the folder
structure should look like the following
E:\zlib-1.2.3.win32
|
+- include
|
+- bin
|
+- lib
You can either extract zlib to this folder or extract it to a location
of your choice and edit the configure.in file accordingly.
NOTE : You need to have zlib1.dll in the library path.
2.3.2 Compiling the Source
--------------------------
Extract the source distribution to a folder of your choice.
Example:
C:\axis2c
Open a DOS shell and type:
> cd %AXIS2C_HOME%\build\win32
> vcvars32.bat
> nmake install
NOTE : You may need to set the PATH environment variable to vcvars32.bat
if Windows complains that it cannot find this batch file. This file
is located in <Your MS Visual Studio Install Directory>\VC\bin
directory.
That's it! This will build the system and create a directory named 'deploy'
under the build directory.
The deploy folder structure is as follows.
deploy
|
+- bin - server and other executables
|
+- samples - samples go here
| |
| +- bin - sample client executables
| |
| +- lib - sample libraries
| |
| +- src - sources of the samples in bin and lib folders
|
|
+- lib - library modules
|
+- services - deployed services
|
+- modules - deployed modules
|
+- include - all include files of axis2
|
+- logs - system and client logs are written to this folder
2.4 Running Samples
-------------------
You need to set a couple of environment variables before you can run the
server and samples.
Set the variable AXIS2C_HOME to the deploy folder (C:\axis2c)
Add the path to lib directory to the PATH variable (%AXIS2C_HOME%\lib)
You might optionally require to copy the iconv.dll, zlib1.dll, libxml2.dll to
the %AXIS2C_HOME%\lib folder.
2.4.1 HTTP transport
--------------------
(a) Server
----------
> cd %AXIS2C_HOME%\bin
> axis2_http_server.exe
You should see the message
Started Simple Axis2 HTTP Server...
By default the log is created under %AXIS2C_HOME%\logs folder with the
name axis2.log.
NOTE : You may provide command line options to change the default behaviour.
Type 'axis2_http_server.exe -h' to learn about the usage
(b) Clients
-----------
Now you can run any sample client deployed under %AXIS2C_HOME%\samples\bin
Example:
> cd %AXIS2C_HOME%\samples\bin
> echo.exe
3. Installing Apache2 Web Server Integration Module (mod_axis2)
===============================================================
3.1 Building mod_axis2 from Source
----------------------------------
3.1.1 On Linux
--------------
Provide the Apache2 include file location as a configure option
$ ./configure --with-apache2="<apache2 httpd include files location>"
[other configure options]
NOTE : Some apache2 distributions install APR (Apache Portable Runtime)
include files in a separate location which is required to build
mod_axis2.
In that case use:
$ ./configure --with-apache2="<apache2 include files location>"
--with-apr="<apr include files location>"
[other configure options]
Then build the source tree
$ make
$ make install
This will install mod_axis2.so into your "<your_path_to_axis2c>/lib"
3.1.2 On Windows (Win32)
------------------------
Provide the apache2 location in configure.in file in APACHE_BIN_DIR
Example:
APACHE_BIN_DIR = E:\Apache22
After compiling the sources (as described in section 2.3) build the
mod_axis2.dll by issuing the command 'nmake axis2_apache_module'.
This will build mod_axis2.dll and copy it to %AXIS2C_HOME%\lib directory.
Example:
C:\axis2c\build\deploy\lib
3.2 Deploying in Apache2 Web Server
-----------------------------------
NOTE : To do the following tasks, you might need super user privileges
on your machine.
Copy the mod_axis2 (libmod_axis2.so.0.7.0 on Linux and mod_axis2.dll
on Windows) to "<apache2 modules directory>" as mod_axis2.so
Example:
cp $AXIS2C_HOME/lib/libmod_axis2.so.0.7.0
/usr/lib/apache2/modules/mod_axis2.so (on Linux)
copy C:\axis2c\build\deploy\lib\mod_axis2.dll
C:\Apache2\modules\mod_axis2.so (on Windows)
Edit the Apache2's configuration file (generally httpd.conf) and add the
following directives
LoadModule axis2_module <apache2 modules directory>/mod_axis2.so
Axis2RepoPath <axis2 repository path>
Axis2LogFile <axis2 log file path>
Axis2MaxLogFileSize <maximum size of log file>
Axis2LogLevel LOG_LEVEL
<Location /axis2>
SetHandler axis2_module
</Location>
NOTE: Axis2 log file path should have write access to all users because by
default Apache Web Server runs as nobody.
If you want to use a Shared Global Pool with Apache you have to give
another entry called Axis2GlobalPoolSize. You have to give the size of
the shared global pool in MB. If you don't set the value or if you
set a negative value Apache module doesn't create shared global pool.
Axis2GlobalPoolSize <global pool size in MB>
LOG_LEVEL can be one of the followings
crit - Log critical errors only
error - Log errors critical errors
warn - Log warnings and above
info - Log info and above
debug - Log debug and above (default)
trace - Log trace messages
NOTE: Use forward slashes "/" for path separators in
<apache2 modules directory>, <axis2 repository path> and
<axis2 log file path>
Make sure that the apache2 user has the correct permissions to above paths
- Read permission to the repository
- Write permission to the log file
Restart apache2 and test whether mod_axis2 module is loaded by typing the
URL http://localhost/axis2/services in your Web browser
4. Installing IIS (Interner Information Server) Integration Module
(mod_axis2_IIS)
==================================================================
4.1 Building mod_axis2_IIS from Source
--------------------------------------
After compiling the source (as described in section 2.3) build the
mod_axis2.dll by issuing the command 'nmake axis2_IIS_module'.
This will build the mod_axis2_IIS.dll and copy it to %AXIS2C_HOME%\lib
directory.
Example:
C:\axis2c\build\deploy\lib
4.2 Deploying in the IIS
------------------------
Add the following key to the registery.
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Axis2c\IIS ISAPI Redirector
Under this registry key add the following entries.
A String value with the name "axis2c_home". The value is the AXIS2C_HOME.
Example : c:\axis2c
A String value with the name "log_file". The value is the absolute path of
the log file.
Example: c:\axis2c\logs\axis2.log
A String value with the name "log_level". The value can be one of the
followings.
trace - Log trace messages
error - Log errors critical errors
info - Log info and above
critical - Log critical errors only
debug - Log debug and above (default)
warning - Log warnings
You can add a string value with the name services_url_prefix. This is optional and defaults
to "/services". As an example, if you have "/web_services" as the prefix, then all the
services hosted would have the endpoint prefix of : http://localhost/axis2/web_services.
Note: don't forget the / at the begining.
If you wish, you can also change the location as well by adding a string value with the name
axis2_location. This is also optional and defaults to /axis2. If you have /myserser as the
value you can access your web services with a url like http://localhost/myserver/services.
Note: Don't forget the / at the beginning.
Now you can do all the registry editing using the JScript file axis2_iis_regedit.js
provided with the distribution. When you build axis2/C with the IIS module the file
is copied to the root directory of the binary distribution. Just double click it and
everything will be set to the defaults. The axis2c_home is taken as the current directory,
so make sure you run the file in the Axis2/C repository location (or root of the binary
distribution). If you want to change the values you can manually edit the the .js file or
give it as command line arguments to the script when running the script. To run the jscript
from the command line use the command :\cscript axis2_iis_regedit.js optional arguments.
We recomend the manual editing as it is the easiest way to specify the values
IIS 5.1 or Below
-----------------
Using the IIS management console, add a new virtual directory to the
IIS/PWS web site called "axis2". The physical path of this virtual
directory should be the axis2\lib directory (Where the mod_axis2_IIS.dll
is in)
Assign excecute permissions to this virtual directory.
Using the IIS management console, add mod_axis2_IIS.dll as a filter to the
IIS/PWS web site. The name of the filter can be any meaningful name.
Restart IIS and test whether mod_axis2_IIS module is loaded by typing the
URL http://localhost/axis2 in your Web browser.
IIS 6 & 7
---------
Using the IIS management console, add the mod_axis2_IIS.dll as a Wildcard Script Map.
Executable should be the complete path to the mod_axis2_IIS.dll
You can put any name as the name of the Wildcard Script Map
Please don't add the mod_axis2_IIS.dll as a filter to IIS as in the IIS 5.1 case.
Note: If the Axis2/C failed to load, verify that Axis2/C and its dependent DLLs are in the
System Path (not the user path).
5. Using Axis2/C with CGI
5.1 Deploying in Apache2
If you haven't already done so you need to configure and set up an cgi-bin/ directory
that holds your CGI scripts,where we will put Axis2/C cgi executable axis2.cgi.
(Note: most of recent Apache web servers already have an cgi-bin dir set up, usually
/usr/lib/cgi-bin/. )
Add following to your Apache2 configuration (httpd.conf) file.
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/ (Or some other directory of your choice)
OR you can use
<Directory /usr/local/apache/cgi-bin/>
Options +ExecCGI
</Directory>
AddHandler cgi-script .cgi
{ It's recomended to restrict all your cgi scripts to single ScriptAlias directory for security reasons.}
Now we have to set up configuration parameters via environment variables for the cgi
deployment using the SetEnv directive.
{ You need to have mod_env enabled for this to work )
Add the following to your apache2 configuration file (httpd.conf)
SetEnv AXIS2C_HOME <your path to axis2c home dir>
( i.e. SetEnv AXIS2C_HOME /usr/local/axis2c/ )
If you have chosen another alias for you cgi-bin you can also set up an AXIS2C_URL_PREFIX
environment variable, but it's not needed if you have chosen /cgi-bin/.
AXIS2C_URL_PREFIX defines your web services deployment url prefix. Lets say you have chosen URL
/private/scripts/ for your cgi-bin URL and named your cgi exec as 'axis2.cgi',
Then you need to set AXIS2_URL_PREFIX environment variable as follows:
SetEnv AXIS2C_URL_PREFIX /private/scripts/axis2.cgi/
Now we have configured apache such that all requests with URL http://<domain-name>/cgi-bin/ requests
are located at your configured cgi folder. We have granted Apache server to execute CGI from that directory
and treat files with .cgi extensions as CGI executables.
Now you need to copy the Axis2/C cgi executable "axis2.cgi" located in <AXIS2C_HOME>\bin directory.
5.2 Deploying in IIS
IIS 5.1
1. Open your 'Internet services manager'
2. Under your computer name and 'Default Web Site' you must create an virtual
directory called 'cgi-bin' (if you haven't done so by now) so right click
'Default Web Site' -> New -> Virtual Directory.
3. In wizard enter 'cgi-bin' as Alias.
4. Choose a directory of your choice for cgi scripts placement. (like C:\www\cgi-bin\)
5. In access permissions select Read and Execute.
6. Finish the wizard so that Virtual Directory is created.
7. Open your selected folder (i.e. C:\www\cgi-bin\) and copy axis2.cgi there.
NOTE:
Your Axis2 endpoints now looks like this when deployed under cgi.
http://domain-name.com/cgi-bin/axis2.cgi/<services directory>/<service name>
For the echo service found under /services/ directory of Axis2, the endpoint will become
http://domain-name.com/cgi-bin/axis2.cgi/services/echo
6. FAQ
======
1. Although I was able to get simple axis server up, unable to run samples.
This could happen because the AXIS2C_HOME environment variable is not
set to the correct axis2 installation path.
2. What are the other dependencies Axis2/C has?
Basically if you are willing to use libxml2 as your parser, you need to
have it installed in your system.
You can get libxml2 from http://xmlsoft.org/downloads.html.
3. I have libxml2 installed in my system, but ./configure fails saying
"libxml2 not found"
Yes, you need to install libxml2-dev packages.
1. If you are using a Debian based system run
$ apt-get install libxml2-dev
2. If you are using a RedHat/Fedora based system run
$ yum install libxml2-dev
3. If you install libxml2 from source you will not get this error
4. Is there any recommended packages, that I need to install in my system?
1. automake, autoconf, libtool, aclocal
2. libxml2 and libxml2-dev
3. pkg-config
5. I tried several methods, browse through axis-c-dev and axis-c-user mail
archives but I was not able to solve my problem.
Then you can ask from Axis2/C users or Axis2/C developers about it by
sending your question to
user = c-user@axis.apache.org
developer = c-dev@axis.apache.org
You can subscribe to
c-user list by sending a request to
<c-user-subscribe@axis.apache.org> with the subject "subscribe"
c-dev list by sending request to
<c-dev-subscribe@axis.apache.org> with the subject "subscribe"
6. This FAQ is not enough...
You can help us by reporting your suggestions, complaints, problems and bugs
Thank you for using Axis2/C ...