Yeah, it should. IMHO that call was only added as a kowtow to people demanding an easy hack approach -- and there's something to be said for that, if many people demand it. But it was still added half-heartedly, as it requires a request, i.e. you can't use it an initialization time before any requests come have arrived...
Yoav On 4/18/06, Bill Au <[EMAIL PROTECTED]> wrote: > But shouldn't the return value of HttpServletRequest.getContextPath() > be the same independing of packaging (WAR or no WAR)? > > Bill > > On 4/18/06, Yoav Shapira <[EMAIL PROTECTED]> wrote: > > > > Hola, > > > > No, don't use getServletContextName(). Besides being optional, it > > doesn't necessarily related to a path on the disk. For that matter, > > don't use the disk path approach anyhow, as things get quirky / > > fragile for users running packed WARs. There are a couple of > > alternatives, one using the classpath and one using the > > ServletContext#getResource approach. > > > > The classpath one is the standard Java classpath resource lookup > > mechanism: in your class, do > > getClass().getResource("path.to.your.resource") -- in a webpp, this > > will automatically use the webapp's specific classloader by default, > > so if you have a config file in WEB-INF/lib or WEB-INF/classes, it > > will get picked up. (And conveniently, one could specify server-wide > > Solr defaults in a higher classloader like the common server one). > > > > The ServletContext one is very similar: use ServletContext.getResource > > with the same path semantics, and a resource anywhere under your > > webapp root will be fetched. > > > > To compare / contrast the two: the ServletContext approach depends on > > a servlet container, i.e. is hard to use and test from a command-line > > utility. It also doesn't provide the hierarchical defaulting > > mechanism as easily as the classpath one. On the flip side, some > > people only like to have classes on the classpath in the name of > > "neatness" although in reality, there are a lot of things (for example > > DTD, XSD spec files) on the classpath at runtime. > > > > If you need a more concrete example of how to do this, I'll be glad to > > provide one. > > > > Yoav > > > > > > On 4/18/06, Yonik Seeley <[EMAIL PROTECTED]> wrote: > > > On 4/18/06, Chris Hostetter <[EMAIL PROTECTED]> wrote: > > > > (or does ServletContext.getServletContextName() not do what I think i > > > > remember it doing) > > > > > > Unfortunately not.... the javadoc says it comes from the web.xml > > > > > > java.lang.String getServletContextName() > > > Returns the name of this web application corresponding to > > > this ServletContext as specified in the deployment descriptor for this > > > web application by the display-name element. > > > > > > -Yonik > > > > > > > > > -- > > Yoav Shapira > > Nimalex LLC > > 1 Mifflin Place, Suite 310 > > Cambridge, MA, USA > > [EMAIL PROTECTED] / www.yoavshapira.com > > > > -- Yoav Shapira Nimalex LLC 1 Mifflin Place, Suite 310 Cambridge, MA, USA [EMAIL PROTECTED] / www.yoavshapira.com