You are viewing a plain text version of this content. The canonical link for it is here.
Posted to asp@perl.apache.org by Warren Young <wa...@etr-usa.com> on 2004/03/04 09:32:12 UTC

Application_OnStart not getting called

I have some code I'd like to run just once when Apache::ASP comes up the 
first time; it computes a value that never changes over the life of the 
application.  For some reason, this event never seems to be called.

I dug into the Apache::ASP code a bit, and the only thing that struck me 
is how deeply buried the call to Application_OnStart seems to be. 
Perhaps one of the many conditions wrapping this call is faulty?

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Josh Chamas <jo...@chamas.com>.
John Drago wrote:
> I could formalize this to also
> | execute some code when the compilation occurs, and this event then
> | might be called:
> | 
> |    Global_OnStart
> 
> Would BEGIN {...} take care of this?
> 

BEGIN should work, but I think Global_OnStart would be more like
putting some code at the botton of the global.asa, which would
be executed last after everything else is defined.

For this effect, I usually just put code before any subs in the
global.asa, like global variable declarations, caching, calculations, etc.
I think BEGIN would work too, but would be executed before the
subs are compiled.  It may be useful to call helper subs in the global.asa
like &_calculate_this() when computing a global value defined outside
the subs in global.asa, and this would be better done outside a BEGIN {}

Personally, I don't need a formal Global_OnStart or Server_OnStart,
but it seems that especially when people are coming from backgrounds where
they don't necessarily know how mod_perl works more generally, there
might be a need for this.  I have no problem helping to abstract things
away from mod_perl though, and in general I regard Apache::ASP as a
general, consistent API on top of mod_perl that can shield one from
its sometimes troublesome details.

Regards,

Josh

________________________________________________________________________
Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
Chamas Enterprises Inc. | NodeWorks Directory - http://dir.nodeworks.com
http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


RE: Application_OnStart not getting called

Posted by John Drago <jd...@e-commedia.net>.
I could formalize this to also
| execute some code when the compilation occurs, and this event then
| might be called:
| 
|    Global_OnStart

Would BEGIN {...} take care of this?


_______________________________________________________________

John Drago | Chief Architect of Software Development
E-com Media Group, Inc. [www.e-commedia.com] 
office
::
 303.790.7940 x25
email
::
 jdrago@e-commedia.com



E - b u s i n e s s   w i t h   D i m e n s i o n TM


| -----Original Message-----
| From: Josh Chamas [mailto:josh@chamas.com]
| Sent: Friday, March 05, 2004 2:43 PM
| To: Peter Galbavy
| Cc: Warren Young; Apache-ASP List
| Subject: Re: Application_OnStart not getting called
| 
| Peter Galbavy wrote:
| > Josh Chamas wrote:
| >
| >>I have had requests to allow for the Application_OnStart to run when
| >>the web server first starts up.  This would be fairly had to do, but
| >>it might be possible.  The requests for this have been sporadic, and
| >>it has never been one of my top priorities, should it be?
| >
| >
| > Server_OnStart() ?
| >
| 
| 
| Here's the closest we have today:
| 
|    http://www.apache-asp.org/events.html#Server_OnSta0d174f59
| 
| Basically, any code executed in a global.asa outside of the
subroutines
| loaded in this way will get executed.  I could formalize this to also
| execute some code when the compilation occurs, and this event then
| might be called:
| 
|    Global_OnStart
| 
| The difference of course is to get this loaded into the Server startup
| we still need to do the Apache::ASP->Loader().  The problem more
generally
| is how do we execute something in Apache::ASP when Apache::ASP has not
| even been loaded yet.  Is Loader() enough, or do we need something
better?
| 
| Regards,
| 
| Josh
| 
|
________________________________________________________________________
| Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
| Chamas Enterprises Inc. | NodeWorks Directory -
http://dir.nodeworks.com
| http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org
| 
| 
| 
| ---------------------------------------------------------------------
| To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
| For additional commands, e-mail: asp-help@perl.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Josh Chamas <jo...@chamas.com>.
Peter Galbavy wrote:
> Josh Chamas wrote:
> 
>>I have had requests to allow for the Application_OnStart to run when
>>the web server first starts up.  This would be fairly had to do, but
>>it might be possible.  The requests for this have been sporadic, and
>>it has never been one of my top priorities, should it be?
> 
> 
> Server_OnStart() ?
> 


Here's the closest we have today:

   http://www.apache-asp.org/events.html#Server_OnSta0d174f59

Basically, any code executed in a global.asa outside of the subroutines
loaded in this way will get executed.  I could formalize this to also
execute some code when the compilation occurs, and this event then
might be called:

   Global_OnStart

The difference of course is to get this loaded into the Server startup
we still need to do the Apache::ASP->Loader().  The problem more generally
is how do we execute something in Apache::ASP when Apache::ASP has not
even been loaded yet.  Is Loader() enough, or do we need something better?

Regards,

Josh

________________________________________________________________________
Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
Chamas Enterprises Inc. | NodeWorks Directory - http://dir.nodeworks.com
http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Peter Galbavy <pe...@photasmagoria.com>.
Josh Chamas wrote:
> I have had requests to allow for the Application_OnStart to run when
> the web server first starts up.  This would be fairly had to do, but
> it might be possible.  The requests for this have been sporadic, and
> it has never been one of my top priorities, should it be?

Server_OnStart() ?

Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Josh Chamas <jo...@chamas.com>.
Warren Young wrote:
> 
> More accurately, the new event would be for calculating something when 
> the web server first comes up.
> 

Apache::ASP does not know what applications are installed when the
web server first comes up.  That is what the Loader() routine is for.
Loader() combined with this new event could calculate something just
once for when the global.asa is first compiled in the parent httpd,
but only when using Loader().

The problem fundamentally is getting Apache::ASP to know what applications
to compile at httpd server start time, and this is what Loader() does.
Loader for starters compiles the global.asa in the application being
referenced, and thus trigger the Global_OnStart routine being proposed.

> If I were still working on the code, this would be a fair annoyance. The 
> difference with new event is that it would run every time the parent web 
> server comes up, regardless of whether the "application" is considered 
> to be restarting.  Restarting the web server to make new changes appear 
> isn't a problem at all.  I have to do it often already, since much of my 
> code is in Perl modules, which don't get reloaded when they change.

The Global_OnStart event would actually run each time the global.asa is
recompiled in a child web server process, so just touching the global.asa
would trigger this event.  Also for reloading perl code dynamically while
in development, you can try the StatINC config, and the Apache::Reload module.

> Global_OnStart is good.

Thanks, this seems to be the consensus.

> 
> I was thinking Global_OnStart would be in lieu of getting Loader 
> working.  Once you get Loader working, code at the end of global.asa has 
> this "once on Apache startup" behavior, doesn't it?

Yes.  Global_OnStart would just formalize this behavior.  Again, unless
one can propose a better way, I think Loader() is the best we can get
for compiling Apache::ASP applications in the parent httpd.

> 
> The only gray area would be if you changed global.asa.  It gets 
> recompiled in this case.  Would Global_OnStart be re-run?  I suppose it 
> could work either way.
> 

Yes.

>> It may be that necessarily Global_OnStart would have to occur before 
>> $Application
>> or $Session is set up ( effectively before Application_OnStart or 
>> Session_OnStart )
>> effectively.  Would this event still be useful if this is the case?  
> 
> 
> Yes, that's still useful.
> 

Thanks for the feedback so far...

Regards,

Josh

________________________________________________________________________
Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
Chamas Enterprises Inc. | NodeWorks Directory - http://dir.nodeworks.com
http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Warren Young <wa...@etr-usa.com>.
Josh Chamas wrote:

> This is a good point, and was the basis for the original implementation,
> that the application starts when the first visitor registers a session.
> This was the definition of the original Application_OnStart event
> in the ASP model.

That's reasonable.

> If I understand things correctly, the real need is to calculate 
> something once per application, 

More accurately, the new event would be for calculating something when 
the web server first comes up.

I was able to actually use the current Application_OnStart in my 
situation once I understood how it actually behaved.  The consequence is 
simply that I have to nuke the StateDir every time I change 
Application_OnStart's implementation, to force that event to be re-run.

If I were still working on the code, this would be a fair annoyance. 
The difference with new event is that it would run every time the parent 
web server comes up, regardless of whether the "application" is 
considered to be restarting.  Restarting the web server to make new 
changes appear isn't a problem at all.  I have to do it often already, 
since much of my code is in Perl modules, which don't get reloaded when 
they change.

>   Global_OnStart or Global_OnCompile ( Global_OnStart seems consistent )

Global_OnStart is good.

> which would be executed when the global.asa is compiled for the first time.
> If one wanted this to occur just once per server start, then running 
> Loader()
> to get it compiled there would be the trick, otherwise it would be executed
> just once per httpd process.

I was thinking Global_OnStart would be in lieu of getting Loader 
working.  Once you get Loader working, code at the end of global.asa has 
this "once on Apache startup" behavior, doesn't it?

The only gray area would be if you changed global.asa.  It gets 
recompiled in this case.  Would Global_OnStart be re-run?  I suppose it 
could work either way.

> It may be that necessarily Global_OnStart would have to occur before 
> $Application
> or $Session is set up ( effectively before Application_OnStart or 
> Session_OnStart )
> effectively.  Would this event still be useful if this is the case?  

Yes, that's still useful.

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


RE: Application_OnStart not getting called

Posted by John Drago <jd...@e-commedia.net>.
Global_OnStart sounds good to me.  It's good to have a distinction
between "this happens when everything is compiled" and "this happens
when the application is re/started".

_______________________________________________________________

John Drago | Chief Architect of Software Development
E-com Media Group, Inc. [www.e-commedia.com] 
office
::
 303.790.7940 x25
email
::
 jdrago@e-commedia.com



E - b u s i n e s s   w i t h   D i m e n s i o n TM


| -----Original Message-----
| From: Josh Chamas [mailto:josh@chamas.com]
| Sent: Tuesday, March 09, 2004 1:03 AM
| To: Peter Galbavy
| Cc: Warren Young; Apache-ASP List
| Subject: Re: Application_OnStart not getting called
| 
| Peter Galbavy wrote:
| > Warren Young wrote:
| >
| >>If the current behavior is useful for others, then it might be nice
to
| >>have a new event that has the behavior I expected.  No rush, this is
| >>mostly a syntax issue.  (Reasoning below.)  The top priority is
simply
| >>to document the actual behavior of Application_OnStart.  The current
| >>docs are misleading.
| >
| >
| > I see App*OnStart as very useful, if it is understood by the
developer
| of
| > the application. If for any reason you share application state
between
| > mulitple front ends, then you only want certain things to happen
exactly
| > once. Each reboot or web server restart is not necessarily an
| application
| > restart :)
| >
| 
| This is a good point, and was the basis for the original
implementation,
| that the application starts when the first visitor registers a
session.
| This was the definition of the original Application_OnStart event
| in the ASP model.
| 
| Since there are others that find it useful as is ( thanks for speaking
up
| Peter ),
| it seems that we really need to create something else to fill this
gap.
| 
| If I understand things correctly, the real need is to calculate
something
| once
| per application, so the best would be to create the event
| 
|    Global_OnStart or Global_OnCompile ( Global_OnStart seems
consistent )
| 
| which would be executed when the global.asa is compiled for the first
| time.
| If one wanted this to occur just once per server start, then running
| Loader()
| to get it compiled there would be the trick, otherwise it would be
| executed
| just once per httpd process.
| 
| It may be that necessarily Global_OnStart would have to occur before
| $Application
| or $Session is set up ( effectively before Application_OnStart or
| Session_OnStart )
| effectively.  Would this event still be useful if this is the case?
| Really, the
| event would just be used to do things like calculate globals and the
like,
| so
| it seems like this would be good enough.
| 
| Any thoughts?
| 
| Regards,
| 
| Josh
| 
|
________________________________________________________________________
| Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
| Chamas Enterprises Inc. | NodeWorks Directory -
http://dir.nodeworks.com
| http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org
| 
| 
| 
| ---------------------------------------------------------------------
| To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
| For additional commands, e-mail: asp-help@perl.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Josh Chamas <jo...@chamas.com>.
Peter Galbavy wrote:
> Warren Young wrote:
> 
>>If the current behavior is useful for others, then it might be nice to
>>have a new event that has the behavior I expected.  No rush, this is
>>mostly a syntax issue.  (Reasoning below.)  The top priority is simply
>>to document the actual behavior of Application_OnStart.  The current
>>docs are misleading.
> 
> 
> I see App*OnStart as very useful, if it is understood by the developer of
> the application. If for any reason you share application state between
> mulitple front ends, then you only want certain things to happen exactly
> once. Each reboot or web server restart is not necessarily an application
> restart :)
> 

This is a good point, and was the basis for the original implementation,
that the application starts when the first visitor registers a session.
This was the definition of the original Application_OnStart event
in the ASP model.

Since there are others that find it useful as is ( thanks for speaking up Peter ),
it seems that we really need to create something else to fill this gap.

If I understand things correctly, the real need is to calculate something once
per application, so the best would be to create the event

   Global_OnStart or Global_OnCompile ( Global_OnStart seems consistent )

which would be executed when the global.asa is compiled for the first time.
If one wanted this to occur just once per server start, then running Loader()
to get it compiled there would be the trick, otherwise it would be executed
just once per httpd process.

It may be that necessarily Global_OnStart would have to occur before $Application
or $Session is set up ( effectively before Application_OnStart or Session_OnStart )
effectively.  Would this event still be useful if this is the case?  Really, the
event would just be used to do things like calculate globals and the like, so
it seems like this would be good enough.

Any thoughts?

Regards,

Josh

________________________________________________________________________
Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
Chamas Enterprises Inc. | NodeWorks Directory - http://dir.nodeworks.com
http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Peter Galbavy <pe...@photasmagoria.com>.
Warren Young wrote:
> If the current behavior is useful for others, then it might be nice to
> have a new event that has the behavior I expected.  No rush, this is
> mostly a syntax issue.  (Reasoning below.)  The top priority is simply
> to document the actual behavior of Application_OnStart.  The current
> docs are misleading.

I see App*OnStart as very useful, if it is understood by the developer of
the application. If for any reason you share application state between
mulitple front ends, then you only want certain things to happen exactly
once. Each reboot or web server restart is not necessarily an application
restart :)

Peter


---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Warren Young <wa...@etr-usa.com>.
Josh Chamas wrote:
> Currently, Application_OnStart only runs when the first Session gets
> initialized, and again after the last Session expires.  Theoretically,
> this could never happen if your application is always busy.  A big
> difference between Apache::ASP, and IIS/ASP is that sessions persist
> by default beyond the web server stop/start by writing to StateDir.

Aha!  That's the ticket.  If I nuke my StateDir, Application_OnStart() 
is called right when the first session is created.

> The requests for this have been sporadic, and
> it has never been one of my top priorities, should it be?

If the current behavior is useful for others, then it might be nice to 
have a new event that has the behavior I expected.  No rush, this is 
mostly a syntax issue.  (Reasoning below.)  The top priority is simply 
to document the actual behavior of Application_OnStart.  The current 
docs are misleading.

If the current behavior is of no use to anyone, then Application_OnStart 
should be modified to behave the way the docs currently imply. 
Aparently this will increase logical compatibility with IIS/ASP, 
generally a good thing.  If it will take a long time to get around to 
doing this feature, the current behavior should be documented, possibly 
with a link to this thread in the mail archives for workarounds.

> instead of calculating once per server start, it will be calculated
> once per web process initialization of global.asa.  

...

> if you are
> using script preloading with Loader(), then you will actually get this
> calculation done during the parent web process init, 

On reading the first quote, my question was, "How is code in 
Script_OnStart() different from code at the end of global.asa?"

I suspect the second quote hints at the answer: code at the end of 
global.asa runs only once if compiled in the parent httpd, whereas 
Script_OnStart() always runs once per httpd child creation regardless of 
whether global.asa is already compiled when the child starts.  Yes?  And 
if so, there is no difference between them when global.asa must be 
re-compiled for every httpd child, excepting order of events.

I had Loader() working on my stock RH7.2 systems, but it broke in RH9 
for reasons I haven't bothered to chase down yet.  I'll try re-enabling 
it later.  If it works, it's a fix for my problem.  The syntax is 
wanting compared to Application_OnStart, but I can live with that.

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Josh Chamas <jo...@chamas.com>.
Warren Young wrote:
> 
> What I've been trying to do is not dramatically different from that. 
> I've been trying to save a calculated value to $Application->{foo}, and 
> print it out later in some of the .asp files.  Its failure to work is 
> what prompted my original post.
> 

Currently, Application_OnStart only runs when the first Session gets
initialized, and again after the last Session expires.  Theoretically,
this could never happen if your application is always busy.  A big
difference between Apache::ASP, and IIS/ASP is that sessions persist
by default beyond the web server stop/start by writing to StateDir.

I have had requests to allow for the Application_OnStart to run when
the web server first starts up.  This would be fairly had to do, but
it might be possible.  The requests for this have been sporadic, and
it has never been one of my top priorities, should it be?

Until then, what I recommend is that you either calculate your value
in Script_OnStart and cache it as a global there, like this:

   # global.asa, cache on script execution first time
   use vars qw($Cached);
   sub Script_OnStart {
     $Cached ||= &calculate_now();
     ...
   }

instead of calculating once per server start, it will be calculated
once per web process initialization of global.asa.  Better yet, you could:

   # global.asa, cache on global.asa compilation
   use vars qw($Cached);
   $Cached ||= &calculate_now();
   sub Script_OnStart {
     ...
   }

and this would be cached on global.asa compilation, which if you are
using script preloading with Loader(), then you will actually get this
calculation done during the parent web process init, so would in effect
get this just once per server start if that is what you really want.
Another way to achieve this is to just write a perl module and calculate
the value there, and load it with PerlModule, or PerlRequire startup.pl,
both of which are mod_perl conventions.

Regards,

Josh

________________________________________________________________________
Josh Chamas, Founder    | NodeWorks - http://www.nodeworks.com
Chamas Enterprises Inc. | NodeWorks Directory - http://dir.nodeworks.com
http://www.chamas.com   | Apache::ASP - http://www.apache-asp.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Application_OnStart not getting called

Posted by Warren Young <wa...@etr-usa.com>.
John Drago wrote:

> Make absolutely sure Apache::ASP is finding your global.asa to start
> with.

All the other events I have in there are being called.

> 	PerlSetVar Global "/path"

I had mine set to '.', with global.asa at the site's root.  I tried 
setting it to the site root's absolute path, but the behavior didn't change.

> If your Script_OnStart() subroutine *does* work, but your
> Application_OnStart() doesn't, then we might have a problem.

That is precisely the situation.

> Maybe there is a problem with the code itself?  If you try the
> following, it should work:
> 
> <your global.asa>
> 	sub Application_OnStart
> 	{
> 		$Application->{foo} = "this is a test!";
> 	}# end Application_OnStart()
> 
> 	sub Script_OnStart
> 	{
> 		$Response->Write( $Application->{foo} );
> 	}# end Script_OnStart()
> </your globa.asa>

What I've been trying to do is not dramatically different from that. 
I've been trying to save a calculated value to $Application->{foo}, and 
print it out later in some of the .asp files.  Its failure to work is 
what prompted my original post.

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


RE: Application_OnStart not getting called

Posted by John Drago <jd...@e-commedia.net>.
Hi Warren,

Make absolutely sure Apache::ASP is finding your global.asa to start
with.
Add a Script_OnStart() subroutine that prints something so you know it
is getting executed.

<your global.asa>
	sub Script_OnStart
	{
		$Response->Write("<h1>This is a test!</h1>");
	}# end Script_OnStart()
</your global.asa>

If this fails, then I would double-check the "Global" setting in your
httpd.conf:

<your conf>
	PerlSetVar Global "/path"
</your conf>

where "/path" is the directory where the global.asa is to be found.

If your Script_OnStart() subroutine *does* work, but your
Application_OnStart() doesn't, then we might have a problem.

Maybe there is a problem with the code itself?  If you try the
following, it should work:

<your global.asa>
	sub Application_OnStart
	{
		$Application->{foo} = "this is a test!";
	}# end Application_OnStart()

	sub Script_OnStart
	{
		$Response->Write( $Application->{foo} );
	}# end Script_OnStart()
</your globa.asa>

_______________________________________________________________

John Drago | Chief Architect of Software Development
E-com Media Group, Inc. [www.e-commedia.com] 
office
::
 303.790.7940 x25
email
::
 jdrago@e-commedia.com



E - b u s i n e s s   w i t h   D i m e n s i o n TM


| -----Original Message-----
| From: Warren Young [mailto:warren@etr-usa.com]
| Sent: Thursday, March 04, 2004 1:32 AM
| To: Apache-ASP List
| Subject: Application_OnStart not getting called
| 
| I have some code I'd like to run just once when Apache::ASP comes up
the
| first time; it computes a value that never changes over the life of
the
| application.  For some reason, this event never seems to be called.
| 
| I dug into the Apache::ASP code a bit, and the only thing that struck
me
| is how deeply buried the call to Application_OnStart seems to be.
| Perhaps one of the many conditions wrapping this call is faulty?
| 
| ---------------------------------------------------------------------
| To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
| For additional commands, e-mail: asp-help@perl.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org