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
>

Reply via email to