Ok, I sent this to the list the other day, but it hasn't shown up yet??
Here's another try - sorry if people get duplicates.
I'm getting pretty frustrated with the Axis C++ binary installation. I'm
going to go step-by-step through the installation instructions provided.
Sorry for the long email - think of it as a complete newbie trying to
learn your system.
For what it's worth, I'm working on a Fedora Core 5 system
I downloaded axis-c-linux-current-bin.tar several days ago and unpacked it
to reveal axis-c-1.6b-Linux-trace-bin
Then I went to axis-c-1.6b-Linux-trace-bin/docs/install-guide.html and
found the instructions for server install & config.
Step 1: Download Axis C++
Done - unpacked to
/home/myname/WebServices/axis-c-1.6b-Linux-trace-bin
Step 2: Install Apache Web Server
Done - I have httpd-2.2.2-1.3 installed via RPM and modules are
supported.
3. Install Xerces C++ (2.2.0)
Done - I then downloaded & installed xerces-c-src_2_8_0
This yielded the following libraries:
/usr/local/lib/libxerces-c.so -> libxerces-c.so.28.0
/usr/local/lib/libxerces-c.so.28 -> libxerces-c.so.28.0
/usr/local/lib/libxerces-c.so.28.0
/usr/local/lib/libxerces-depdom.so -> libxerces-depdom.so.28.0
/usr/local/lib/libxerces-depdom.so.28 -> libxerces-depdom.so.28.0
/usr/local/lib/libxerces-depdom.so.28.0
4. Configure environment variables
Done:
export
AXISCPP_DEPLOY="/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/"
export LD_LIBRARY_PATH="/usr/local/lib:$AXISCPP_DEPLOY/lib"
(There appears to be a missing linefeed in the 3rd line of this
section)
5. Configure Engine Wide Settings in Configuration File
Ok, here is some confusion. I read the following instruction:
"A sample configuration file is installed in
$AXISCPP_DEPLOY/etc"
I understood earlier that AXISCPP_DEPLOY was to point to the
directory I unpacked the tarball to. In this case
/home/myname/WebServices/axis-c-1.6b-Linux-trace-bin But there is no etc
directory here?? I did find an etc directory under
/home/myname/WebServices/axis-c-1.6b-Linux-trace-bin/deploy.
So, the first question:
**************************************************************
What should AXISCPP_DEPLOY point to??
**************************************************************
Should it point to the unpacked directory, or the 'deploy'
directory with it? Or did I miss something above?
I'll take a guess and re-assign the AXISCPP_DEPLOY environment
variable to the deploy directory within the top-level directory:
export
AXISCPP_DEPLOY="/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/"
export LD_LIBRARY_PATH="/usr/local/lib:$AXISCPP_DEPLOY/lib"
So now I look in $AXISSCPP_DEPLOY/etc ... there is no axiscpp.conf
file present, as stated in your instructions??
There is a axiscpp.conf_linux file, with a structure similar to
what is described in the docs, so I copy it to axiscpp.conf Not to much
of a leap, but it would be nice if the docs pointed this out.
cp $AXISCPP_DEPLOY/etc/axiscpp.conf_linux
$AXISCPP_DEPLOY/etc/axiscpp.conf
I go in and take a look ... and all of the paths reference
"/usr/local/axiscpp_deploy/". There is nothing in the server install
instructions which says anything about copying stuff to
/usr/local/axiscpp_deploy. Why not use the $AXISCPP_DEPLOY environment
variable?
So I change the paths to point to
/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/
Now my config file looks like this:
LogPath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/log/AxisLog
WSDDFilePath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/etc/server.wsdd
ClientLogPath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/log/AxisClientLog
XMLParser:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/libaxis_xmlparser.so
Transport_http:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/libaxis2_transport.so
Just for grins, I take a look for this stuff:
LogPath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/log/AxisLog
No such file or directory - ok, I'll assume it creates this file
on the fly
WSDDFilePath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/etc/server.wsdd
No such file or directory - looking I see the following:
server.wsdd_linux
server.wsdd_linux_handler
I'm guessing this is similar to the axiscpp.conf_linux stuff, but
which to rename???
***************************
What is server.wsdd? Candidates would appear to be:
server.wsdd_linux
server.wsdd_linux_handler
***************************
I flip a coin and pick server.wsdd_linux
cp deploy/etc/server.wsdd_linux deploy/etc/server.wsdd
ClientLogPath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/log/AxisClientLog
Again - so such file. Will assume it will be created on the fly.
XMLParser:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/libaxis_xercesc.so
No such file or directory.
In fact, a search of the directory tree finds nothing by this
name. Nothing in the Xerces directory matches either. In fact, nothing
on my filesystem matches, and this is the first time libaxis_xercesc.so is
mentioned at all in this document. What the heck is it???
I then notice that the client install section it refers to
libaxis_xerces.so - which is in the axis install directory, but not in
deploy/lib A typo maybe?
There is also a file called libxerces-c.so to add to the
confusion??
****************************************
What is libaxis_xercesc.so?
Should I copy axis-c-1.6b-Linux-trace-bin/lib/axis/libaxis_xerces.so to
deploy/lib - or point the config file to it as it stands?
****************************************
So I make a WAG and copy everything in
axis-c-1.6b-Linux-trace-bin/lib to deploy/lib:
cp -r axis-c-1.6b-Linux-trace-bin/lib/*
axis-c-1.6b-Linux-trace-bin/deploy/lib
This seems to indicate that $AXISCPP_DEPLOY should point to the
base directory (/home/myname/axis-c-1.6b-Linux-trace-bin) rather then the
deploy directory (axis-c-1.6b-Linux-trace-bin/deploy) - but this breaks
the config files located in axis-c-1.6b-Linux-trace-bin/deploy/etc ???
And finally, why do we install Xerces if the library is already
provided?
Another note - the empty README.txt files scattered everywhere are
a nice touch on the whole confusion thing.
Transport_http:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/libaxis2_transport.so
Again - there is no libaxis2_transport.so anywhere???
There is a "libhttp_transport.so" - so I point it to that.
*****************************************
What is libaxis2_transport.so???
*****************************************
There is a line in the documentation which is not in the sample
config file:
Channel_HTTP:/usr/local/axiscpp_deploy/lib/libaxis3_transport_channel.so
Of course, there is no "libaxis3_transport_channel.so" on the
filesystem.
There is a libhttp_channel.so - no "transport" in the name, but
it's the closest I have.
******************************************
Is Channel_HTTP needed in the config file? Docs & sample are
inconsistent.
What is libaxis3_transport_channel.so?
******************************************
Now my config file looks like this:
LogPath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/log/AxisLog
WSDDFilePath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/etc/server.wsdd
ClientLogPath:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/log/AxisClientLog
XMLParser:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/axis/libaxis_xerces.so
Transport_http:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/axis/libhttp_transport.so
Channel_HTTP:/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/axis/libhttp_channel.so
On to the next step...
6. Setting Axis files to be executable
chmod -R 777 $AXISCPP_DEPLOY
Ok, I'll do it - but it makes me nervous setting stuff related to
server or CGI stuff to 777 I'll play with this later if I get things
working.
7. Configure Apache Module
Ok, I cut and pasted the stuff from the documentation directly
into my httpd.conf file:
LoadModule axis_module modules/libaxiscpp_mod2.so
<Location /axis>
SetHandler axis
</Location>
The copy the module to the apache module directory:
cp ./lib/axis/libaxiscpp_mod2.so /usr/lib/httpd/modules/
And then restart apache - to the following error message:
"Starting httpd: httpd: Syntax error on line 992 of
/etc/httpd/conf/httpd.conf: Cannot load
/etc/httpd/modules/libaxiscpp_mod2.so into server: libaxis_server.so:
cannot open shared object file: No such file or directory"
There is a libaxis_server.so - but the apache user doesn't know
about it, because the new LD_LIBRARY_PATH isn't set for that user.
So I add the following lines to /etc/ld.so.conf:
/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib
/home/myname/WebService/axis-c-1.6b-Linux-trace-bin/deploy/lib/axis
and run ldconfig.
I try to start apache again, and now get the following:
"Starting httpd: httpd: Syntax error on line 992 of
/etc/httpd/conf/httpd.conf: API module structure `axis_module' in file
/etc/httpd/modules/libaxiscpp_mod2.so is garbled - perhaps this is not an
Apache module DSO?"
I have no idea what this means - I'm stuck. I made a brief attempt at the
axis c++ source install - and quickly got bogged down there as well.
So ... any suggestions?
Can I expect the rest of the learning curve for this tool to be as
convoluted and poorly documented. If so, I may cut my losses and find
another way.
I'd really like this to work though, because everything I want to do as a
web service already exists as C/C++ code. Wrapping it to an intermediate
language will be a PITA - the most likely candidate would seem to be JAVA,
which I don't know. So re-writing it to that language isn't feasible
either. So I hope I can make this work.
Thanks
Eric