From: <gta...@at...> - 2002-05-15 15:28:25
|
WebKit doesn't really have a good solution for this -- yet. There is a setting "ExtraPathInfo" which is supposed to do what you're asking for here. But last time I checked, the setting wasn't working :-( and it hasn't been fixed in the meantime. I suppose that means nobody is using it. Also, ExtraPathInfo is a global setting, but it really ought to be configurable on a servlet by servlet basis. It also isn't easy to add new "servlet factories". That is the way PSP works -- it registers its own servlet factory for all files with a .psp extension. If this were easy to do, you could use this approach. Your best bet at the moment is probably to use Apache's mod_rewrite to transform the URL. There are some examples in the Webware Wiki that might help, but the basic idea is to transform URL's like /foo/bar/qux.xml into /XMLHandler?url=/foo/bar/qux.xml or something like that, so that you can write a servlet called XMLHandler that simply looks in the url query field for the "real" url. - Geoff > I just recently starting experimenting with WebKit, and I'm quite > impressed. I'm hoping to port an app that currently runs on mod_python, > but I'm running into a stumbling block. I need to be able to write a > servlet (or some other type of object that can be executed by WebKit and > persist in memory) that can be invoked indirectly by the webserver when > files ending with a specific extension are requested. > Specifically I'd like to be able to hit .xml files at any url on the > server and have the request handled by this hypothetical servlet. > > The way I do this with mod_python is by using AddHandler to associate .xml > files with the URL to my mod_python handler. My mod_python handler can > then look at the PATH_TRANSLATED variable to figure out the real path to > the requested .xml file and then handle the request from there (applying > XSL stylesheets and such). > > I created a subclass of HTTPServlet that I can hit directly at > /WK/Sam/Test. However, if I pass additional path information (by hitting > something like /WK/Sam/Test/foo.xml, which is I think essentially what > AddHandler does if /foo.xml is requested) I get a 404 from WebKit. I'm > guessing it's not possible to pass extra path info to a WebKit servlet. > I get 404s whether I try to hit /WK/Sam/Test/foo.xml or /foo.xml, although > in the first case the error message says that /WK/Sam/Test/foo.xml was not > found and the second case says that /foo.xml was not found... but both > messages are coming from WebKit instead of Apache, leading me to believe > that Apache is actually routing the request the way I expect. > > Although I haven't tried to use PSP, it must do some request handling > similar to what I want. I could look into that further to see if I could > do something similar, but it looks like that would involve customizing > Webware which I don't want to do; I'd much rather be able to write > something that runs on top of a standard Webware installation. > > Any advice or pointers would be much appreciated. > > Thanks, > Sam > > -- > Sam Brauer > Systems Programmer > sa...@we... > > > _______________________________________________________________ > > Have big pipes? SourceForge.net is looking for download mirrors. We supply > the hardware. You get the recognition. Email Us: ban...@so... > _______________________________________________ > Webware-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-discuss |
From: Geoffrey T. <gta...@na...> - 2002-05-16 15:52:06
|
I'm glad to hear that ExtraPathInfo works in 0.7. I tried to use it myself a few weeks ago and failed, but I probably did something wrong. I'll try again when I have a chance. - Geoff > -----Original Message----- > From: Matt Feifarek [mailto:ma...@da...] > Sent: Wednesday, May 15, 2002 1:33 PM > To: gta...@at...; Sam Brauer > Cc: web...@li... > Subject: RE: [Webware-discuss] file handling servlet > > > | WebKit doesn't really have a good solution for this -- > | yet. There is a setting "ExtraPathInfo" which is > | supposed to do what you're asking for here. But last > | time I checked, the setting wasn't working :-( and it > | hasn't been fixed in the meantime. I suppose that means > | nobody is using it. Also, ExtraPathInfo is a global > > I've been experimenting with it. It works fine in 0.7 release. > > I put this into an awake() method: > > extra = transaction.request().extraURLPath() > if extra: > # if there is one, check how many parts it has > extra = self.extra = extra.split('/') > > Then you've got either 'None' or a list of strings that > correspond to extra > url bits. > > So, I can do http://localhost/MyContext/foo/bar/baz/8 > > which is actually hitting an index.py that lives in > MyContext, and extra > looks like this: > ['foo','bar','baz','8'] > > Sure beats mod_rewrite in my book. > > > _______________________________________________________________ > > Have big pipes? SourceForge.net is looking for download > mirrors. We supply > the hardware. You get the recognition. Email Us: > ban...@so... > _______________________________________________ > Webware-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-discuss > |
From: Bill E. <bi...@rf...> - 2002-05-16 16:56:29
|
Okay, it sounds like this 1) works and 2) works for the particular application, instead of just for WebKit as a whole. So, instead of modifying web_kit, you can use this, and if the speed is a big issue, you can probably modify the processExtraURLPath routine in Application.py (or override it, but where?) to first directly look for a string ending in .xml, and then split on ".py": xmlhandler='/WK/XML/mainhandler.py' xmlfilehandler='/usr/local/Webware/WebKit/XML/mainhandler.py' if urlPath[-4:] == '.xml' junk,extraURLPath = ssPath.split('.py') urlPath=xmlhandler ssPath=xmlfilehandler Don't know whether this saves googles of nanoseconds over the original method Geoffrey Talvola wrote: > I'm glad to hear that ExtraPathInfo works in 0.7. I tried to use it myself > a few weeks ago and failed, but I probably did something wrong. I'll try > again when I have a chance. > > - Geoff > > >>-----Original Message----- >>From: Matt Feifarek [mailto:ma...@da...] >>Sent: Wednesday, May 15, 2002 1:33 PM >>To: gta...@at...; Sam Brauer >>Cc: web...@li... >>Subject: RE: [Webware-discuss] file handling servlet >> >> >>| WebKit doesn't really have a good solution for this -- >>| yet. There is a setting "ExtraPathInfo" which is >>| supposed to do what you're asking for here. But last >>| time I checked, the setting wasn't working :-( and it >>| hasn't been fixed in the meantime. I suppose that means >>| nobody is using it. Also, ExtraPathInfo is a global >> >>I've been experimenting with it. It works fine in 0.7 release. >> >>I put this into an awake() method: >> >>extra = transaction.request().extraURLPath() >>if extra: >> # if there is one, check how many parts it has >> extra = self.extra = extra.split('/') >> >>Then you've got either 'None' or a list of strings that >>correspond to extra >>url bits. >> >>So, I can do http://localhost/MyContext/foo/bar/baz/8 >> >>which is actually hitting an index.py that lives in >>MyContext, and extra >>looks like this: >>['foo','bar','baz','8'] >> >>Sure beats mod_rewrite in my book. -- Bill Eldridge Radio Free Asia bi...@rf... |
From: Geoffrey T. <gta...@na...> - 2002-05-16 15:53:34
|
Sam Brauer wrote: > A-ha! It only seems to work if your servlet is index.py... > that's what I > was missing. > Thanks a lot! That obviously explains why it didn't work for me. I'll update the bug report on SourceForge. - Geoff |
From: Sam B. <sa...@we...> - 2002-05-15 16:02:51
|
On Wed, 15 May 2002 gta...@at... wrote: > WebKit doesn't really have a good solution for this -- > yet. There is a setting "ExtraPathInfo" which is > supposed to do what you're asking for here. But last > time I checked, the setting wasn't working :-( and it > hasn't been fixed in the meantime. I suppose that means > nobody is using it. Also, ExtraPathInfo is a global > setting, but it really ought to be configurable on a > servlet by servlet basis. I can see how it would be best if this setting was servlet-specific, but right now I'd just be happy if it worked ;) (Although maybe it does work and I'm just doing something wrong...) > > It also isn't easy to add new "servlet factories". That > is the way PSP works -- it registers its own servlet > factory for all files with a .psp extension. If this > were easy to do, you could use this approach. Writing a plugin is a possibility. Like you say, the big drawback I see to this is the extra work involved learning how to implement a plugin. > > Your best bet at the moment is probably to use Apache's > mod_rewrite to transform the URL. There are some > examples in the Webware Wiki that might help, but the > basic idea is to transform URL's like /foo/bar/qux.xml > into /XMLHandler?url=/foo/bar/qux.xml or something like > that, so that you can write a servlet called XMLHandler > that simply looks in the url query field for the "real" > url. This sounds pretty good at first, but what if the original url already has a query string. Would it be possible using mod_rewrite to detect that case and then append &url=/foo/bar/qux.xml to the end of the original url? Also, this kinda ties me to Apache (which is one of the things I'm trying to avoid). > > - Geoff > > I just recently starting experimenting with WebKit, and I'm quite > > impressed. I'm hoping to port an app that currently runs on mod_python, > > but I'm running into a stumbling block. I need to be able to write a > > servlet (or some other type of object that can be executed by WebKit and > > persist in memory) that can be invoked indirectly by the webserver when > > files ending with a specific extension are requested. > > Specifically I'd like to be able to hit .xml files at any url on the > > server and have the request handled by this hypothetical servlet. > > > > The way I do this with mod_python is by using AddHandler to associate .xml > > files with the URL to my mod_python handler. My mod_python handler can > > then look at the PATH_TRANSLATED variable to figure out the real path to > > the requested .xml file and then handle the request from there (applying > > XSL stylesheets and such). > > > > I created a subclass of HTTPServlet that I can hit directly at > > /WK/Sam/Test. However, if I pass additional path information (by hitting > > something like /WK/Sam/Test/foo.xml, which is I think essentially what > > AddHandler does if /foo.xml is requested) I get a 404 from WebKit. I'm > > guessing it's not possible to pass extra path info to a WebKit servlet. > > I get 404s whether I try to hit /WK/Sam/Test/foo.xml or /foo.xml, although > > in the first case the error message says that /WK/Sam/Test/foo.xml was not > > found and the second case says that /foo.xml was not found... but both > > messages are coming from WebKit instead of Apache, leading me to believe > > that Apache is actually routing the request the way I expect. > > > > Although I haven't tried to use PSP, it must do some request handling > > similar to what I want. I could look into that further to see if I could > > do something similar, but it looks like that would involve customizing > > Webware which I don't want to do; I'd much rather be able to write > > something that runs on top of a standard Webware installation. > > > > Any advice or pointers would be much appreciated. > > > > Thanks, > > Sam > > > > -- > > Sam Brauer > > Systems Programmer > > sa...@we... > > > > > > _______________________________________________________________ > > > > Have big pipes? SourceForge.net is looking for download mirrors. We supply > > the hardware. You get the recognition. Email Us: ban...@so... > > _______________________________________________ > > Webware-discuss mailing list > > Web...@li... > > https://lists.sourceforge.net/lists/listinfo/webware-discuss > > _______________________________________________________________ > > Have big pipes? SourceForge.net is looking for download mirrors. We supply > the hardware. You get the recognition. Email Us: ban...@so... > _______________________________________________ > Webware-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-discuss > -- Sam Brauer Systems Programmer sa...@we... |
From: Bill E. <bi...@rf...> - 2002-05-15 22:24:23
|
Sam Brauer wrote: > Writing a plugin is a possibility. > Like you say, the big drawback I see to this is the extra work involved > learning how to implement a plugin. Hacking an existing plugin should be easier than "learning how to implement a plugin". You might be able to add to the webkit_handlers similar to the PSP handler, make an XML handler in mod_webkit....? -- Bill Eldridge Radio Free Asia bi...@rf... |
From: Sam B. <sa...@we...> - 2002-05-16 12:09:57
|
On Thu, 16 May 2002, Bill Eldridge wrote: > Sam Brauer wrote: > > Writing a plugin is a possibility. > > Like you say, the big drawback I see to this is the extra work involved > > learning how to implement a plugin. > > Hacking an existing plugin should be easier > than "learning how to implement a plugin". I guess I should have said that it would be probably be more work than writing a servlet (which was really easy to figure out). As you suggest, if I went the plugin route I would use the PSP plugin as a starting point, as opposed to starting completely from scratch. > > You might be able to add to the webkit_handlers > similar to the PSP handler, make an XML handler > in mod_webkit....? > > -- Sam Brauer Systems Programmer sa...@we... |
From: Tavis R. <ta...@re...> - 2002-05-15 22:30:54
|
On May 15, 2002 02:17 pm, Bill Eldridge wrote: > Sam Brauer wrote: > > Writing a plugin is a possibility. > > Like you say, the big drawback I see to this is the extra work involv= ed > > learning how to implement a plugin. > > Hacking an existing plugin should be easier > than "learning how to implement a plugin". > > You might be able to add to the webkit_handlers > similar to the PSP handler, make an XML handler > in mod_webkit....? You can do that by creating a 'ServletFactory' and then loading it into=20 WebKit's Application class at startup. mod_webkit doesn't have much to d= o=20 with it. Tavis |
From: Bill E. <bi...@rf...> - 2002-05-16 06:00:57
|
Tavis Rudd wrote: > > On May 15, 2002 02:17 pm, Bill Eldridge wrote: > > Sam Brauer wrote: > > > Writing a plugin is a possibility. > > > Like you say, the big drawback I see to this is the extra work involved > > > learning how to implement a plugin. > > > > Hacking an existing plugin should be easier > > than "learning how to implement a plugin". > > > > You might be able to add to the webkit_handlers > > similar to the PSP handler, make an XML handler > > in mod_webkit....? > > You can do that by creating a 'ServletFactory' and then loading it into > WebKit's Application class at startup. mod_webkit doesn't have much to do > with it. > > Tavis I was referring to the stuff in mod_webkit.c: static int psp_handler(request_rec *r) { ap_table_add(r->subprocess_env, "WK_ABSOLUTE","1"); return content_handler(r); } static const handler_rec webkit_handlers[] = { {"webkit-handler", content_handler}, {"psp-handler",psp_handler}, {NULL} }; thinking that that could be used to point to a new handler for .xml files, using that handler to rewrite path and other environment information. -- Bill Eldridge Radio Free Asia bi...@rf... |
From: Tavis R. <ta...@re...> - 2002-05-16 16:16:00
|
On May 15, 2002 09:53 pm, Bill Eldridge wrote: > Tavis Rudd wrote: > > On May 15, 2002 02:17 pm, Bill Eldridge wrote: > > > Sam Brauer wrote: > > > > Writing a plugin is a possibility. > > > > Like you say, the big drawback I see to this is the extra work > > > > involved learning how to implement a plugin. > > > > > > Hacking an existing plugin should be easier > > > than "learning how to implement a plugin". > > > > > > You might be able to add to the webkit_handlers > > > similar to the PSP handler, make an XML handler > > > in mod_webkit....? > > > > You can do that by creating a 'ServletFactory' and then loading it in= to > > WebKit's Application class at startup. mod_webkit doesn't have much = to > > do with it. > > > > Tavis > I was referring to the stuff in mod_webkit.c: =2E.. > thinking that that could be used to point > to a new handler for .xml files, using that > handler to rewrite path and other environment > information. Oops, I hadn't read Sam's original message when I replied to yours. If t= he=20 aim is to map all .xml files to a single servlet I'd go with mod_rewrite = as=20 Ian suggested. Why bother writing a handler in C or WebKit plugin when a= few=20 lines of black magic does the trick. You could even argue for scrapping=20 mod_webkit's psp_handler and doing PSP files via mod_rewrite as well ... It would be nice to allow this sort of many-to-one mapping in WebKit itse= lf=20 when the URLDecoding stuff is reworked. Tavis |
From: Geoffrey T. <gta...@at...> - 2002-05-17 13:22:04
|
On Thursday May 16, 2002 12:16 pm, Tavis Rudd wrote: > Oops, I hadn't read Sam's original message when I replied to yours. If the > aim is to map all .xml files to a single servlet I'd go with mod_rewrite as > Ian suggested. Why bother writing a handler in C or WebKit plugin when a > few lines of black magic does the trick. You could even argue for > scrapping mod_webkit's psp_handler and doing PSP files via mod_rewrite as > well ... > > It would be nice to allow this sort of many-to-one mapping in WebKit itself > when the URLDecoding stuff is reworked. I agree with Tavis. Use mod_rewrite now because it's easiest AND it's very similar to the way you'll want to do it if and when advanced URL decoding makes it into Webware, so the transition will be easy. - Geoff |
From: Matt F. <ma...@da...> - 2002-05-15 17:34:36
|
| WebKit doesn't really have a good solution for this -- | yet. There is a setting "ExtraPathInfo" which is | supposed to do what you're asking for here. But last | time I checked, the setting wasn't working :-( and it | hasn't been fixed in the meantime. I suppose that means | nobody is using it. Also, ExtraPathInfo is a global I've been experimenting with it. It works fine in 0.7 release. I put this into an awake() method: extra = transaction.request().extraURLPath() if extra: # if there is one, check how many parts it has extra = self.extra = extra.split('/') Then you've got either 'None' or a list of strings that correspond to extra url bits. So, I can do http://localhost/MyContext/foo/bar/baz/8 which is actually hitting an index.py that lives in MyContext, and extra looks like this: ['foo','bar','baz','8'] Sure beats mod_rewrite in my book. |
From: Sam B. <sa...@we...> - 2002-05-15 18:03:38
|
On Wed, 15 May 2002, Matt Feifarek wrote: > | WebKit doesn't really have a good solution for this -- > | yet. There is a setting "ExtraPathInfo" which is > | supposed to do what you're asking for here. But last > | time I checked, the setting wasn't working :-( and it > | hasn't been fixed in the meantime. I suppose that means > | nobody is using it. Also, ExtraPathInfo is a global > > I've been experimenting with it. It works fine in 0.7 release. > > I put this into an awake() method: > > extra = transaction.request().extraURLPath() > if extra: > # if there is one, check how many parts it has > extra = self.extra = extra.split('/') > > Then you've got either 'None' or a list of strings that correspond to extra > url bits. > > So, I can do http://localhost/MyContext/foo/bar/baz/8 > > which is actually hitting an index.py that lives in MyContext, and extra > looks like this: > ['foo','bar','baz','8'] A-ha! It only seems to work if your servlet is index.py... that's what I was missing. Thanks a lot! > > Sure beats mod_rewrite in my book. > -- Sam Brauer Systems Programmer sa...@we... |
From: Tracy S. R. <tr...@ax...> - 2002-05-15 20:34:39
|
The documentation says that using ExtraPathInfo is slower. Does=20 anyone know exactly how much slower it is? Is it noticeable? Here's what the docs say: > ExtraPathInfo =A0 =3D 0 > When enabled, this setting allows a servlet to be followed > by additional path components which are accessible via > HTTPRequest's extraURLPath(). For subclassers of Page, this > would be self.request().extraURLPath(). This may degrade > performance when turned on. --Tracy On Wednesday, May 15, 2002, at 01:02 PM, Sam Brauer wrote: > On Wed, 15 May 2002, Matt Feifarek wrote: > >> | WebKit doesn't really have a good solution for this -- >> | yet. There is a setting "ExtraPathInfo" which is >> | supposed to do what you're asking for here. But last >> | time I checked, the setting wasn't working :-( and it >> | hasn't been fixed in the meantime. I suppose that means >> | nobody is using it. Also, ExtraPathInfo is a global >> >> I've been experimenting with it. It works fine in 0.7 release. >> >> I put this into an awake() method: >> >> extra =3D transaction.request().extraURLPath() >> if extra: >> # if there is one, check how many parts it has >> extra =3D self.extra =3D extra.split('/') >> >> Then you've got either 'None' or a list of strings that correspond=20 >> to extra >> url bits. >> >> So, I can do http://localhost/MyContext/foo/bar/baz/8 >> >> which is actually hitting an index.py that lives in MyContext, and=20 >> extra >> looks like this: >> ['foo','bar','baz','8'] > > > A-ha! It only seems to work if your servlet is index.py... that's=20 > what I > was missing. > Thanks a lot! > |
From: Ian B. <ia...@co...> - 2002-05-15 21:03:12
|
On Wed, 2002-05-15 at 15:34, Tracy S. Ruggles wrote: > The documentation says that using ExtraPathInfo is slower. Does > anyone know exactly how much slower it is? Is it noticeable? Right now there's basically two algorithms for finding servlets, one for extraPathInfo, one without (yes, ick). The one without can utilitize caching a bit more. No one (to my knowledge) has ever tested the two cases. There's been very little profiling of Webware, except for global "how many pages can Webware serve" kind of testing -- but I'm not exactly sure how you'd do it. I suppose a global profile would be sufficient for this, though. IMHO, the performance penalty for extraPathInfo should be negligible. Doing a few os.listdir()'s shouldn't take that long, and you still get some benefit of caching. Ian |