Finally I have something that seems to work. I could find only this
way of calling mod-jk after perlhandler gets called. Does it look ok?

In <VirtualHost ..

PerlModule Apache2::Rules2
SetHandler modperl
PerlHandler Apache2::Rules2
JkMount ...

----

package Apache2::Rules2;
#use lib '/home/.mohit/mod_perl-2.0.4/lib';
use strict;
use warnings;
use Apache2::Const qw(:common);
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::Filter ();
use APR::Table ();


sub handler {
my $r = shift;
my $headers_in = $r->headers_in();
if ($headers_in->get("Content-Length") < 20){
   $r->handler("jakarta-servlet");
   return DECLINED;
}

#$r->content_type('text/plain');
#$r->print('Rules');

return OK; # We must return a status to mod_perl
}
1; # This is a perl module so we must return true to perl


On Tue, Nov 23, 2010 at 4:17 PM, Mohit Anchlia <mohitanch...@gmail.com> wrote:
> On Tue, Nov 23, 2010 at 9:57 AM, Mohit Anchlia <mohitanch...@gmail.com> wrote:
>> On Mon, Nov 22, 2010 at 4:14 PM, Mohit Anchlia <mohitanch...@gmail.com> 
>> wrote:
>>> On Mon, Nov 22, 2010 at 10:18 AM, Ryan Gies <r...@livesite.net> wrote:
>>>> You should be putting "use strict;" at the top of your Perl files (which
>>>> would have reported the following error)
>>>>
>>>> The constant is DECLINED, not DECLINE
>>>>
>>> Thanks. I now changed it to DECLINED. Now it tries to forward the
>>> request but looks like instead of forwarding it to mod-jk worker it is
>>> trying to locate document on the same server.
>>>
>>>
>>> http://ws1/bridge/e?val
>>> HTTP request sent, awaiting response... 404 Not Found
>>> 16:11:45 ERROR 404: Not Found.
>>>
>>> In access logs it says e?val not found. It's supposed to forward this
>>> request to mod_jk worker. Because bridge is a servlet in jboss app
>>> server and apache sends it using mod_jk.
>>
>> Can someone advise why it's not going to mod_jk? How do I debug this?
>
> I haven't received any advise. Meanwhile I am thinking is it possible
> to chain the handlers such that modperl calls "SetHandler
> jakarta-servlet" ? Is there a way this can be done?
>
>>
>>>>
>>>> On 11/22/2010 12:53 PM, Mohit Anchlia wrote:
>>>>>
>>>>> I tried
>>>>>
>>>>> package Apache2::Rules2;
>>>>> #use lib '/home/.mohit/mod_perl-2.0.4/lib';
>>>>> use Apache2::Const qw(:common);
>>>>> use Apache2::RequestRec ();
>>>>> use Apache2::RequestIO ();
>>>>> sub handler {
>>>>> my $r = shift;
>>>>> #$r->content_type('text/plain');
>>>>> #$r->print("mod_perl rules!\n");
>>>>> return DECLINE; # We must return a status to mod_perl
>>>>> }
>>>>> 1; # This is a perl module so we must return true to perl
>>>>>
>>>>> But even though I am using DECLINE it doesn't continue going to
>>>>> mod-jk. Handler just becomes the final destination in this case. How
>>>>> can I write handler such that it continues sending request to mod-jk.
>>>>>
>>>>> On Sat, Nov 20, 2010 at 7:14 AM, Ryan Gies<r...@livesite.net>  wrote:
>>>>>
>>>>>>
>>>>>> Have you tried returning Apache2::Const::DECLINED instead?
>>>>>>
>>>>>> http://perl.apache.org/docs/2.0/user/handlers/intro.html#Handler_Return_Values
>>>>>>
>>>>>> On 11/20/2010 12:09 AM, Mohit Anchlia wrote:
>>>>>>
>>>>>>>
>>>>>>> I am trying to look at how handlers work so I created a very simple
>>>>>>> perl handler that just return "OK". And I added an entry "PerlModule"
>>>>>>> and the "PerlHandler". I also was able to build mod_perl2.so. When I
>>>>>>> do a GET request with handler ON I see that Handler gets called but
>>>>>>> then the call is not going further to the mod-jk worker. Can someone
>>>>>>> please tell me what might be going on? I thought OK will continue down
>>>>>>> the cycle.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to