http://qs321.pair.com?node_id=1084514


in reply to How to do multi-threaded RPC::XML::Server

Assuming you're using rjray's RPC-XML library, you can use the Apache::RPC::Server mod_perl handler that comes with it.

If this isn't the RPC library you're using, you'll want to find similar support for your library, or build a comparable roll-your-own.

  • Comment on Re: How to do multi-threaded RPC::XML::Server

Replies are listed 'Best First'.
Re^2: How to do multi-threaded RPC::XML::Server
by zubster22 (Initiate) on May 02, 2014 at 12:56 UTC

    Thanks!!!! You've given me the next step-- which I probably would have never found on my own.

    I'll tell you how it goes!!

      Thank you again for your very helpful post earlier!!!! I very much used it as a basis for what to do next.

      We finally got to implementing this.

      Here's an update:
      Our server is actually running rjay's RPC::XML::Server, which is a base class for his RPC-XML server tuned for mod_perl. Unfortunately, our server's running apache2 with mod_perl2. rjay's Apache::RPC::Server needs mod_perl 1.3, and Apache::RPC::Server doesn't support mod_perl2 yet.

      I also tried writing thread-pooling manually! I used ithreads with the module threads. I wrote a thread pooling script that worked really well as a separate script.

      Unfortunately, there was an incompatibility with the threads module and rjay's RPC::XML::Server server module. I kept getting a message about “use of inherited AUTOLOAD for non-method RPC::XML::Server::threads::create” or something like that. I tried editing POSIX.pm, XSLoader.pm, and a couple other modules in order to change some of their autoload code. Nothing that I've done up until this point worked.

      Maybe somebody here has an idea as to what I could do next?

      Thanks again!!!!!

        Quick response:
        I found the root on the incompatibility!
        Appropriately, it had nothing to do with threads or anything. I had named a variable with the same name as a module.
        My test script let it go, but somewhere in Server.pm it had no strict 'vars';. That caused the script to crash with the AUTOLOAD message.

        We were able to add threading to rjay's RPC::XML::Server module using the threads module. This project is moving along.

        Thanks!!!!