blob: f7adf9162f441eb3203526800f0481d6d7ba69f8 [file] [log] [blame]
Axis C++ Linux Installation Guide
Contents
# Introduction
# What You Need
# Installing Axis C++
Introduction
This guide will help you to start with Axis C++. I'll explain the minimum steps needed to build and run Axis C++, and warn you about the common pitfalls.
What You Need
You need few helper libraries for parsing XML, WSDL processing and introspection. You need to have the following in order to run Axis C++ engine.
Apache web server (2.0.x or 1.3.x) - You need to have Apache built with module so support, hence you need to have source of Apache web server.
Axis C++ uses Apache web server to host services.
Expat (1.95.7) and/or Xerces C++ (2.2.0) XML parser(s)
Axis C++ needs an XML parser to parse SOAP messages and WSDD files. It has a parser abstraction layer that help users select/switch between parsers. However only once parser library could be used at a time. Currently Expat and Xerces parsers are supported by Axis C++.
Installing Axis C++
1. Install Apache web server. In case you already have an Apache installation, make sure that 'so modules' are enabled. This is because Axis C++ server engine is implemented as an 'so module'. (For Apache 1.3.x use --enable-module=so; for Apache 2.0.x use --enable-so when configuring. See Apache web server documentation for more details)
2. Install Expat (1.95.7) and/or Xerces C++ (2.2.0) depending on your parser preferences. See the respective parser's documentation for installation instructions.
3. Download Axis C++ source or binary distribution and extract the package.
4. Define the following environment variables.
AXISCPP_HOME="Path to Axis C++ source or binary extracted folder"
e.g. AXISCPP_HOME="/my/home/axiscpp"
AXISCPP_DEPLOY="Path to folder where you want to install Axis C++"
e.g. AXISCPP_DEPLOY="/usr/local/axiscpp_deploy"
LD_LIBRARY_PATH="<path to parser library you use>/lib:$AXISCPP_DEPLOY/lib:$LD_LIBRARY_PATH"
export AXISCPP_HOME AXISCPP_DEPLOY LD_LIBRARY_PATH
5. Build Axis C++ (If you downloaded Axis C++ binaries, you can skip this step)
cd $AXISCPP_HOME
./configure --prefix=$AXISCPP_DEPLOY --with-apache2=/path/to/Apache2 --with-xercesc=/path/to/xerces-c
make
make install
The above set of instructions assume you have Apache 2.0.x web server and Xerces C++ parser.
For more information on build options run ./configure --help.
The libs created in build process are placed in $AXISCPP_DEPLOY/lib. (Provided that you used $AXISCPP_DEPLOY as --prefix option for configuring). Note that you need permission to install to the specified directory given in prefix option
You need global access rights to Axis C++ deploy folder to make sure Axis C++ work properly.
chmod -R 777 $AXISCPP_DEPLOY
6. Configure Apache module
Note: to execute the following steps, you may need to have super user rights on your machine.
Now you need to add to edit httpd.conf file in <path to Apache web server installation>/conf and add the following lines at the bottom of that file (assuming you are using Apache 2.0.x):
LoadModule axis_module modules/libaxiscpp_mod2.so
<Location /axis>
SetHandler axis
</Location>
For Apache1.3.x LoadModule line should read as:
LoadModule axis_module libexec/libaxiscpp_mod.so
7. Configure server deployment descriptor file
Now you need the server deployment descriptor (server.wsdd) to deploy server samples you built.
There is a sample deployment descriptor called server.wsdd_linux in $AXISCPP_DEPLOY/etc to help deploy samples.
If you edit this file to your requirements then when you run step 9 it will be turned into server.wsdd. If you don't use scripts as described in step 9 then just rename server.wsdd_linux into server.wsdd after your changes. server.wsdd file is an XML file, and the contents are self descriptive.
8. Set engine wide settings in configuration file
Axis C++ uses a configuration file to let the user specify preferences such as log file locations, transport and parser libs to be used and location of deployment descriptor files. A sample configuration file named axiscpp.conf_linux is installed in $AXISCPP_DEPLOY/etc folder. Edit this file to your reqirements.When you execute step 9 this file will be turned into axiscpp.conf. If you don't use scripts as described in step 9 then just rename axiscpp.conf_linux into axiscpp.conf after your changes
Configuration file has the following Syntax:
The comment character is '#'
WSDDFilePath: The path to the server wsdd file
ClientWSDDFilePath:The path to the client wsdd
LogPath: The path to the Axis C++ server log
ClientLogPath: The path to the Axis C++ client log
Transport_http: The HTTP transport library
XMLParser: The XML parser library
A sample axiscpp.conf file:
LogPath:/usr/local/axiscpp_deploy/log/AxisLog
WSDDFilePath:/usr/local/axiscpp_deploy/etc/server.wsdd
ClientLogPath:/usr/local/axiscpp_deploy/log/AxisClientLog
XMLParser:/usr/local/axiscpp_deploy/lib/libaxis_xercesc.so
Transport_http:/usr/local/axiscpp_deploy/lib/libaxis2_transport.so
9. deploying in apache
Now we need to copy apache module(libaxiscpp_mod2.so for apache2 and libaxiscpp_mod.so for apache) to the correct places and start apache. To do that you can find scripts written in $AXISCPP_DEPLOY/bin.
cd $AXISCPP_DEPLOY/bin
To deploy on apache2
sh deploy_apache2.sh
To deploy on apache
sh deploy_apache.sh
Note that if you need to use different parser you need to edit the script. For example if you use expat
instead of
cp -f ${AXISCPP_DEPLOY}/lib/libaxis_xercesc.so ${AXISCPP_DEPLOY}/lib/libaxis_xmlparser.so
you need
cp -f ${AXISCPP_DEPLOY}/lib/libaxis_expat.so ${AXISCPP_DEPLOY}/lib/libaxis_xmlparser.so
Basically what is done in the script are,
1. libaxiscpp_mod2.so is copied to /modules (the corresponding folder in apache is libexec)
2. libaxis_xercesc.so or libaxis_expat.so (the parser you use) is renamed to libaxis_xmlparser.so.
3. Restart Apache is restarted
So if you don't use the scripts you need to do the above three steps yourself.
10. See Axis C++ in action
Now the installation is complete. You can verify that the server side is working by accessing the URL http://localhost/axis/ using your web browser. You should get the Axis C++ welcome page and this page will show you a list of deployed services as specified by the $AXISCPP_DEPLOY/conf/server.wsdd file.
Now you can run a client sample and see if it works.
cd $AXISCPP_DEPLOY/bin
./base
To help you run several samples at once there is a script named run_interoptests.sh in $AXISCPP_DEPLOY/bin folder. You can try running that as well.