Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Getting servlet context path without a servlet request. (http://www.velocityreviews.com/forums/t294354-getting-servlet-context-path-without-a-servlet-request.html)

stuart.j.wood@gmail.com 05-22-2006 08:45 AM

Getting servlet context path without a servlet request.
 
I have a web application running under Tomcat 5.0, and I need to write
some output to a file.
This app doesn't have its servlet context hardcoded in anywhere, so I
can deploy it with any name and not worry about missing some random bit
of code anywhere, and I often deploy it with different names so the
customers can compare 2 versions side by side.

My problem is that I need to output to a log file within the
application, and I'd like the logfile name to be the context name, so
that I don't have to worry about 2 separate deployments inadvertently
writing to the same file.
I can get the context path from the first request that comes in, but
until that point, I don't seem to be able to retrieve it from either
the ServletContext or the ServletConfig...
Am I missing something?

I'm running in Tomcat, so I can hack it using some Tomcat-specific
code, but I'd rather leave it as portable as possible. Anyone have any
ideas?

Cheers in advance
--
Stuart Wood


Stuart Wood 05-22-2006 10:40 AM

Re: Getting servlet context path without a servlet request.
 
Much as I hate to reply to my own post, I've just found the answer -
for any who are interested, there's no facility for getting the context
path from the servlet context at the moment. It is being introduced in
the Servlet API 2.5 spec - see
http://www.jcp.org/aboutJava/communi...t-2.5_MR2.html
for a bit more detail.

Plan B, here we come.

Cheers
--
Stuart Wood


jmcgill 05-23-2006 01:09 AM

Re: Getting servlet context path without a servlet request.
 
stuart.j.wood@gmail.com wrote:

> I'm running in Tomcat, so I can hack it using some Tomcat-specific
> code, but I'd rather leave it as portable as possible. Anyone have any
> ideas?



To do what you want to do, you need a ContextListener, and you need to
declare it in web.xml. It's quite standard:
javax.servlet.ServletContextListener

This object is instantiated when your context loads your app, thus
getting you around the chicken-egg problem of needing to run your webapp
before being about to execute code based on its context.


James







Stuart Wood 06-06-2006 06:38 AM

Re: Getting servlet context path without a servlet request.
 
jmcgill wrote:
> stuart.j.wood@gmail.com wrote:
>
> > I'm running in Tomcat, so I can hack it using some Tomcat-specific
> > code, but I'd rather leave it as portable as possible. Anyone have any
> > ideas?

>
>
> To do what you want to do, you need a ContextListener, and you need to
> declare it in web.xml. It's quite standard:
> javax.servlet.ServletContextListener
>
> This object is instantiated when your context loads your app, thus
> getting you around the chicken-egg problem of needing to run your webapp
> before being about to execute code based on its context.
>
>
> James


Thanks, James.
I'd dismissed this as unsolvable at the current version and moved on,
hence the late reply, but this doesn't help me either, I'm afraid. The
problem is not that I can't get the context, but more that I can't get
the context /path/ from the context.

The way I've solved it is to get the 'real path' to "/" and take the
last part of it as the context path. It's a bludgeon, and it may be
affected by other servlet containers, or upgrades to Tomcat, but it's
the best I can do until ServletContext.getContextPath() is implemented.

Cheers
--
Stuart Wood



All times are GMT. The time now is 08:15 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.