Apache2-Dispatch

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN


      change your httpd.conf entry:

        <Location /Foo>
          SetHandler perl-script
          PerlHandler Bar->dispatch_baz
        </Location>

      pre-load your module:
        PerlModule Bar
          or
        PerlRequire startup.pl
        # where startup.pl contains
        # use Bar;

    That's it - now the handler can be swapped in and out of Dispatch
    without further modification. See the Eagle book on method handlers for
    more details.

FILTERING
    Apache::Dispatch provides for output filtering using Apache::Filter
    1.013 and above.

      <Location /Foo>
        SetHandler perl-script
        PerlHandler Apache::Dispatch Apache::Compress

        DispatchPrefix Bar
        DispatchFilter On
      </Location>

    Your handler need do nothing special to make its output the start of the
    chain - Apache::Dispatch registers itself with Apache::Filter and hides
    the task from your handler. Thus, any dispatched handler is
    automatically Apache::Filter ready without the need for additional code.

    The only caveat is that you must use the request object that is passed
    to the handler and not get it directly using Apache->request.

AUTOLOAD
    Support for AUTOLOAD has been made optional, but requires special care.
    Please take the time to read the camel book on using AUTOLOAD with can()
    and subroutine declarations (3rd ed pp326-329).

    Basically, you declare the methods you want AUTOLOAD to capture by name
    at the top of your script. This is necessary because can() will return
    true if your class (or any parent class) contains an AUTOLOAD method,
    but $AUTOLOAD will only be populated for declared method calls. Hence,
    without a declaration you won't be able to get at the name of the method
    you want to AUTOLOAD.

    DispatchISA introduced some convenience, but some headaches as well - if
    you inherit from a class that uses AutoLoader then ALL method calls are
    true. And as just explained, AUTOLOAD() will not know what the called
    method was. This may represent a problem if you aren't aware that, say,
    CGI.pm uses AutoLoader and spend a few hours trying to figure out why
    all of a sudden every URL under Dispatch is bombing. You may want to
    check out NEXT.pm (available from CPAN) for use in your AUTOLOAD
    routines to help circumvent this partucular feature.

    If you decide to use DispatchISA it is HIGHLY SUGGESTED that you do so
    with DispatchAUTOLOAD Off (which is the default behavior).

NOTES
    If you define a dispatch_index() method calls to /Foo will default to
    it. Unfortunately, this implicit translation only happens at the highest
    level - calls to /Foo/Bar will translate to Foo->Bar() (that is, unless
    Foo::Bar is your DispatchPrefix, in which case it will work but
    /Foo/Bar/Baz will not, etc). Explicit calls to /Foo/index follow the
    normal dispatch rules.

    If the uri can be dispatched but contains anything other than
    [a-zA-Z0-9_/-] Apache::Dispatch declines to handle the request.

    Like everything in perl, the package names are case sensitive.

    Warnings have been left on, so if you set an invalid class with
    DispatchISA you will see a message like: Can't locate package Foo::Bar
    for @Bar::Baz::ISA at .../Apache/Dispatch.pm line 277.

    This is alpha software, and as such has not been tested on multiple
    platforms or environments for security, stability or other concerns. It
    requires PERL_DIRECTIVE_HANDLERS=1, PERL_LOG_API=1, PERL_HANDLER=1, and
    maybe other hooks to function properly.

FEATURES/BUGS
    If a module fails reload under DispatchStat, Apache::Dispatch declines
    the request. This might change to SERVER_ERROR in the future...

SEE ALSO
    perl(1), mod_perl(1), Apache(3), Apache::Filter(3), Apache::Reload(3),
    Apache::StatINC(3)

MAINTAINER
    Fred Moyer <phred@apache.org>

AUTHOR
    Geoffrey Young <geoff@cpan.org>

COPYRIGHT
    Copyright 2001-2006 Geoffrey Young - all rights reserved.

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.



( run in 0.934 second using v1.01-cache-2.11-cpan-39bf76dae61 )