Supun,
   Arn't these steps on the manual?
Samisa...

Supun Kamburugamuva wrote:
Hi Alex,

Nice description of the problem. Couldn't think of a better way to do it.

This is what you need to do.

You have the axis2/c distribution in /home/alex/axis2c-dist right? You should have the lib, modules and services directories under that directory. Also you need to have the axis2.xml file in that directory.

Please add the lib directory to your LD_LIBRARY_PATH or do an equivalent of this (ldconfig). Please remove all your LoadFile directives from your Apache configuration.

Make sure your Axis2/C configuration in httpd.conf is correct. The required entries are:

LoadModule axis2_module MOD_AXIS2_SO_PATH
Axis2RepoPath AXIS2C_INSTALL_DIR
Axis2LogFile  PATH_TO_LOG_FILE
Axis2LogLevel LOG_LEVEL
<Location /axis2>
    SetHandler axis2_module
</Location>

Also make sure that Apache has read access to the /home/alex/axis2c-dist directory. Start Apache and everything should work fine.

Supun..

On Thu, Jul 17, 2008 at 8:09 AM, Rajika Kumarasiri <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:



    On Thu, Jul 17, 2008 at 2:25 AM, Alex Bolgarov <[EMAIL PROTECTED]
    <mailto:[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] <mailto:[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] <mailto:[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]
        <mailto:[EMAIL PROTECTED]>
        >> For additional commands, e-mail:
        [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        >>
        >
        >

        ---------------------------------------------------------------------
        To unsubscribe, e-mail: [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        For additional commands, e-mail:
        [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>




-- comp.lang.c - http://groups.google.com/group/comp.lang.c/topics


No virus found in this incoming message.
Checked by AVG - http://www.avg.com Version: 8.0.138 / Virus Database: 270.5.0/1556 - Release Date: 7/16/2008 4:56 PM


--
Samisa Abeysinghe Director, Engineering; WSO2 Inc.

http://www.wso2.com/ - "The Open Source SOA Company"


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to