Hi Jay, On 9/23/2014 10:03 PM, Jay McCarthy wrote:
The command-line tool is basically deprecated and only provided for backwards compatibility. There is a huge amount that it can't do at all and it hasn't been the primary way that we recommend using the Web server for a very long time.
I'm not using the plt-web-server app - I created a minimal application that set up the environment: directories, ports, etc. and a start function that just returns a 404 if called. My server sits behind Apache and only handles servlets, which I would like to be demand load modules so they can be added to and updated easily. That's why I am interested in being able to unload servlets on command, though not necessarily all of them at once (although that also is helpful).
> Not really knowing much about Racket's internals he naively asks: >Coulda server pre-load the commonly used webserver modules and make >themavailableto new module servlets, or does the custodian >implementation make doing thatdifficult/impossible? This is the purpose of the make-servlet-namespace argument of configuration-table->web-config@ but there is no option in the configuration file for that argument. http://docs.racket-lang.org/web-server-internal/Web_Servers.html?q=servlet-namespace#%28def._web-config._%28%28lib._web-server%2Fweb-config-unit..rkt%29._configuration-table-~3eweb-config~40%29%29
The namespace facility seems designed more for user written modules than for library modules.
My analysis may be off-base as I have very little experience working directly with custodians, but it seems that when a dynamic servlet is first loaded, its custodian spends a lot of additional time (re)loading library modules that already exist in other custodians. [ Though I can't tell exactly what's happening, I can see a lot of disk activity when I think I'm loading a 5KB servlet. ] Reasonably I would have expected that after loading/linking the first servlet, the libraries common to the servlets would be already in memory. But loading additional servlets is no quicker [ and causes a similar disk hit ] so clearly I don't understand what is happening internally with the custodians.
If a Racket library is deliberately put into the servlet-namespace, does that streamline linking?
> My application so far is based on stateful servlets and AJAX ... stateful > mainly because it's easier for me to understand. Currently there is >little use ofcontinuations, but some planned functionality will use them > extensively and it certainly wouldhelp if debugging didn't always mean >starting over setting up conditions in theapplication. This comment/question is related to questions 4 and 5 from the FAQ: http://docs.racket-lang.org/web-server/faq.html?q=servlet-namespace#%28part._update-servlets%29
That link leads to a "troubleshooting" page 8-). I didn't consider the issue to be a "problem" per se - I already knew that restarting a stateful servlet would lose saved state. Most of my existing servlets are one-shots that don't save any state, but they are written using the stateful language. Only a few use continuations and not extensively (so far). I was just thinking ahead to stuff that will need to use continuations more extensively.
Thanks for putting up with my questions. George
____________________ Racket Users list: http://lists.racket-lang.org/users