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

Reply via email to