On Thu, Jul 17, 2008 at 2:25 AM, Alex Bolgarov <[EMAIL PROTECTED]> wrote:
> Well, our server machine is not supposed to have development tools at > all. So I can't compile the Axis2/C on it. > > Then, how it is supposed to work if I use the Axis2C binary distribution? 1. Unzip the binary to a location, 2. Copy the mod_axis2.so to the Apache module directory. 3. Set the LoadModule and the Axis2RepoPath in httpd.conf Restart the Apache server. -Rajika > > > And it should have nothing to do with environment variables settings > (other then possible LD_LIBRARY_PATH) because Apache can't load the > module at all, because the ldopen() can't find the shared libraries > that this module refers to, and I can't load those shared libraries > manually using LoadFile directive because of the circular reference > problem as I described. So at the moment of failure no Axis2/C code > has executed yet that could have a chance to fix something (like, to > find and load libraries from the location pointed by the AXIS2C_HOME > or by any parameter in the Apache config file. Or am I wrong here? > > What I don't understand is why (and how) it works if I run the Apache > server on the machine where I compile the Axis2C. Does the linker, > when it builds the libmod_axis2.so, embeds into this library the > pathes to the other Axis2/C libraries so, when I copy the mod_axis2.so > into the Apache modules directory on the same machine, it finds them > using those embedded pathes? > > > Thank you, > > alex. > > On Wed, Jul 16, 2008 at 3:28 PM, lahiru gunathilake <[EMAIL PROTECTED]> > wrote: > > Hi Alex, > > > > I think you have to set AXIS2C_HOME environment variable on your server > > machine. And why are you copying libraries from one machine to another > why > > don't you compile Axis2C on you server machine.AFAIK if your first > machine > > and the second machine are different,different in the sense first machine > is > > dual core and the server machine is core 2 duo or something else you have > to > > recompile Axis2C on your server machine and create libmod_axis2.so > otherwise > > previously compiled library won't work on the server machine. > > > > Regards > > Lahiru > > > > On Thu, Jul 17, 2008 at 12:03 AM, Alex Bolgarov <[EMAIL PROTECTED]> > wrote: > >> > >> Hi, > >> > >> How do you load a mod_axis2.so module into the Apache when you copy > >> the Axis2/C libraries to some directory - for example, when you are > >> using the binary Axis2/C distribution, or just build Axis2/C from > >> source on one machine (and installed itto some directory) and then > >> copy Axis2/C module and libraries to some directory on some othar > >> machine with Apache server? > >> > >> Well, here is a longer description of the problem: > >> > >> Say I'm using a source distribution. I download the .tar.gz source > >> tarball, untar, configure it with some install directory (--prefix) > >> and build/install it, now I have this install directory with the build > >> by me Axis2/C. > >> > >> I have Apache server running in this machine, so I copy mod_axis2.so > >> into the Apache installation, I update the Apache config to load the > >> module, I define the Axis2/C repository, I develop a web service and > >> run tests against it. All is fine up to this point. > >> > >> Now I want to use the Axis2/C with the Apache server that is running > >> on another machine. > >> > >> I copy everything from the install directory from the build machine > >> into some directory on this other machine with Apache (let's call this > >> directory "/home/alex/axis2c-dist"). > >> > >> I rename libmod_axis2.so.0.4.0 to mod_axis2.so and copy it into the > >> Apache's modules directory. > >> > >> Now I change the Apache config file so that it contains the line > >> > >> LoadModule axis2_module modules/mod_axis2.so > >> > >> I try to start Apache: > >> > >> $ apachectl start > >> > >> and see following error: > >> > >> Cannot load /home/alex/httpd/modules/mod_axis2.so into server: > >> libaxis2_engine.so.0: cannot open shared object file: No such file or > >> directory > >> > >> Now, I happen to know about the LoadFile Apache directive :) > >> > >> I add the LoadFile directive for the libaxis2_engine.so so that Apache > >> loads it from the /home/alex/axis2c-dist directory, now the Apache > >> config looks like this: > >> > >> LoadFile /home/alex/axis2c-dist/lib/libaxis2_engine.so.0.4.0 > >> LoadModule axis2_module modules/mod_axis2.so > >> > >> I try to start Apache again: > >> > >> $ apachectl start > >> > >> and now see: > >> > >> Cannot load /home/alex/axis2c-dist/lib/libaxis2_engine.so.0.4.0 into > >> server: libneethi.so.0: cannot open shared object file: No such file > >> or directory > >> > >> OK, I add LoadFile directives for the libneethi.so, and so on, when I > >> finally arrive to the following config: > >> > >> LoadFile /home/alex/axis2c-dist/lib/libaxutil.so.0.4.0 > >> LoadFile /home/alex/axis2c-dist/lib/libguththila.so.0.4.0 > >> LoadFile /home/alex/axis2c-dist/lib/libaxis2_parser.so.0.4.0 > >> LoadFile /home/alex/axis2c-dist/lib/libaxis2_axiom.so.0.4.0 > >> LoadFile /home/alex/axis2c-dist/lib/libneethi.so.0.4.0 > >> LoadFile /home/alex/axis2c-dist/lib/libaxis2_http_common.so.0.4.0 > >> LoadFile /home/alex/axis2c-dist/lib/libaxis2_engine.so.0.4.0 > >> > >> LoadModule axis2_module modules/mod_axis2.so > >> > >> But now, after I try to start Apache, I see new error: > >> > >> Cannot load /home/alex/axis2c-dist/lib/libaxis2_http_common.so.0.4.0 > >> into server: /home/alex/axis2c-dist/lib/libaxis2_http_common.so.0.4.0: > >> undefined symbol: axis2_handler_invoke > >> > >> Which means that the libaxis2_engine.so depends on the > >> libaxis2_http_common.so, and requires it to be loaded by Apache first, > >> but the libaxis2_http_common.so contains a reference to undefined > >> symbol "axis2_handler_invoke", that is defined by the > >> libaxis2_engine.so. (Yes, I used 'nm libaxis2_engine.so | grep > >> axis2_handler_invoke" to check that this symbol is indeed defined in > >> this library.) > >> > >> Circular dependency? > >> > >> How do I break it? > >> > >> (note that the same thing happens if I download the binary > >> distribution, untar it into some directory and copy the mod_axis2 into > >> the Apache moddules directory. Up to the same point I can use LoadFile > >> to load Axis2/C libraries, but then again I see this circular > >> dependency) > >> > >> > >> Thank you, > >> > >> alex. > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- comp.lang.c - http://groups.google.com/group/comp.lang.c/topics