Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / June 2006

Tip: Looking for answers? Try searching our database.

Getting servlet context path without a servlet request.

Thread view: 
stuart.j.wood@gmail.com - 22 May 2006 09:45 GMT
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 - 22 May 2006 11:40 GMT
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/communityprocess/maintenance/jsr154/servlet-2.5_MR2.html
for a bit more detail.

Plan B, here we come.

Cheers
--
Stuart Wood
jmcgill - 23 May 2006 02:09 GMT
> 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 Jun 2006 07:38 GMT
> > 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
[quoted text clipped - 9 lines]
>
> 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


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.