You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Beau E. Cox" <be...@beaucox.com> on 2004/02/04 01:18:26 UTC

ANNOUNCE: Modules for using Mason with mod_perl 2 and libapreq2

I am happy to announce the availability of several Mason add-on
modules that enable Mason to run in a pure mod_perl2 ( using
the "mod_perl" not "CGI" request interface ).

I would like to submit these modules to CPAN to insure greater
availability. Your comments would be appreciated.

These modules are:

 HTML::Mason::ApacheHandler2 v 0.01
 MasonX::Request::WithApacheSession2 v 0.01

They require:

 perl => 5.8.0
 mod_perl => 1.9910
 HTML::Mason => 1.25
 libapreq2 => 2.02-dev

They are EXPERIMENTAL and should NOT BE RUN IN A PRODUCTION
ENVIRONMENT. They are Not yet on CPAN, but are available on
my site:

 <http://beaucox.com/mason>

Please direct comments, bug reports, etc to me at:

 <ma...@beaucox.com>

Here is a portion of the HOWTO:
NAME
    HTML::Mason::ApacheHandler2 - experimental (alpha) Mason/mod_perl2
    interface

SYNOPSIS
        use HTML::Mason::ApacheHandler2;
 
        my $ah = HTML::Mason::ApacheHandler2->new (..name/value params..);
        ...
        sub handler {
           my $r = shift;
           $ah->handle_request($r);
        }

DESCRIPTION
    HTML::Mason::ApacheHandler2 is highly experimental ( alpha ) and should
    only be used in a test environment.

    HTML::Mason::ApacheHandler2 was written to allow Mason to run in a
    'pure' mod_perl2/Apache2 environment using the mod_perl2 native request
    structure as implemented by libapreq2. As such, this module is highly
    experimental and definitely not-ready-for-prime-time. This is an
    unofficial release, not supported by the Mason group. If you want to use
    this module in a testing environment, please address problems, issues,
    comments, and improvements to me, not Mason.

    When deciding to port Mason to mod_perl2 I took the approach to add
    Module(s) rather than patching core Mason modules. Upon investigation I
    discovered that all the Apache 'glue' code in Mason was contained in
    HTML::Mason::ApacheHandler. Therefore, I renamed and modified that
    module to create HTML::Mason::ApacheHandler2.

    The actual changes I made can be found in the distribution in
    diff/ApacheHandler.diff ( made with 'diff -Naru' ... ).

    As a result of my approach, you may install the normal Mason ( >= 1.25
    ), the modules in "PREREQUISITES" below, and this module. After
    configuring ( see "CONFIGURATION" below ), you're ready to play.

    The ApacheHandler2 object links Mason to mod_perl2, running components
    in response to HTTP requests. It is controlled primarily through
    parameters to the new() constructor.

    handle_request() is not a user method, but rather is called from the
    HTML::Mason::handler() routine in handler.pl.

    HTML::Mason::ApacheHandler2 is a modified copy of the standard
    HTML::Mason::ApacheHandler. ApacheHandler2 MUST be used with mod_perl2.

    You may, however, run Mason with Apache2/mod_perl2 without
    ApacheHandler2 (see my rather dated mini-HOWTO at
    <http://beaucox.com/mason/mason-with-apmp2-mini-HOWTO.htm>), but you
    then use use 'CGI' requests rather than the native 'mod_perl' requests.

    The interface is the same as ApacheHandler's, Please refer to
    HTML::Mason, HTML::Mason::ApacheHandler, and
    <http://masonhq.com/docs/manual/Admin.html>.

PREREQUISITES
    You must have the following packages installed:

        perl            => 5.8.0
        mod_perl        => 1.9910
        HTML::Mason     => 1.25
        libapreq2       => 2.02-dev

    Please refer to the packages' documentation for instructions.

WARNING: PERL 5.8.2
    If you are using perl 5.8.2 you may get a series of errors in the
    http/error_log such as:

        Attempt to free unreferenced scalar: SV 0x405e6e78
         at /usr/lib/perl5/site_perl/5.8.2/HTML/Mason/Request.pm line 160.
        ...
        [Fri Jan 30 09:41:58 2004] [error] [client 207.175.219.202]
         Attempt to free unreferenced scalar: SV 0x405e6e78
         at /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi/
         Apache/Cookie.pm line 67.
  
        Stack:
          [/usr/lib/perl5/site_perl/5.8.2/HTML/Mason/ApacheHandler2.pm:892]
          [/usr/lib/perl5/site_perl/5.8.2/HTML/Mason/ApacheHandler2.pm:801]
          [/srv/www/perl/MyApache/Mason/ApacheHandler2.pm:86]
          [-e:0]

    which may return a 500 Internal Server Error to the user.

    There was a bug introduced in perl 5.8.2 and fixed in 5.8.3, which
    affects some XS modules running under a threaded mpm mod_perl 2.0 (or
    any ithreads perl application). The affected modules can be fixed, to
    avoid this problem, by using the PERL_NO_GET_CONTEXT macro in the XS
    code (see the perlguts manpage for more information). So you need to
    check whether a newer version of the module is available. If not you
    need to upgrade to perl 5.8.3 or higher and the problem will go away.

    When I had these problems, I ended up upgrading to 5.8.3 and recompiling
    EVERY CPAN module I use and remaking mod_perl2. You may have to do the
    same thing.

    I don't know if there are similar problems in 5.8.0 or 5.8.1, but I
    gather the problem is mainly manifested in 5.8.2.

CONFIGURATION
    ApacheHandler2 provides a way for Mason to use the pure mod_perl2
    request interface (libapreq2). THIS MODULE IS EXPERIMENTAL. PLEASE USE
    FOR TESTING ONLY UNTIL IT HAS PASSED THE TEST OF TIME. Having given that
    dire warning, I have been using it on my personal site and one of the
    sites I administer since mid January, 2004. It _seems_ to work fine.
...

Aloha => Beau;


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html