You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Øyvind Hvamstad <oy...@hvamstad.net> on 2003/01/06 14:35:50 UTC
Relative paths in servlets?
Hi, could anyone tell me how to access files using relative paths from a
servlet? Say, if servlet is mapped to /bar and the file foo.html is in
the webapps top dir. How do I access the foo.html file from the servlet.
I tried ../foo.html, /foo.html and even
getServletContext().getRealPath(/bar)+"/../foo.html" but none works.
Any pointers?
--
Øyvind Hvamstad
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re[2]: Relative paths in servlets?
Posted by Jacob Kjome <ho...@visi.com>.
Hello Øyvind,
I'm not aggravated, I was just pointing out the misconception.
Jake
Monday, January 06, 2003, 9:30:26 AM, you wrote:
ØH> On Mon, 2003-01-06 at 16:31, Jacob Kjome wrote:
>> Assuming the .war file is in CATALINA_HOME/webapps
>> <Context path="/mypath" docBase="myWarArchive.war"/>
>>
>> Make sure to stop tomcat before you put the .war file into webapps. Add
>> the above to your server.xml or a context configuration file (like
>> admin.xml or manager.xml are set up). Then put the .war file into
>> webapps. Now start Tomcat. Then, try to access a servlet which uses
>> getRealPath("/"). Check the value. I guarantee it is null.
>>
ØH> I am using the ant installTask, I was somehow confused to believe that
ØH> it used .war, but that was a mistake. No need to be agrevated.
ØH> <snip from="build.xml">
ØH> <target name="install"
ØH> depends="dist"
ØH> description="Install application to servlet container">
ØH> <install url="${manager.url}"
ØH> username="${manager.username}"
ØH> password="${manager.password}"
ØH> path="${app.path}"
ØH> <!-- THIS PROBABLY THREW ME OFF -->
ØH> war="file://${build.home}"/>
ØH> </target>
ØH> </snip>
>> Jake
ØH> Thanks
ØH> Øyvind
ØH> --
ØH> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
ØH> For additional commands, e-mail: <ma...@jakarta.apache.org>
--
Best regards,
Jacob mailto:hoju@visi.com
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Relative paths in servlets?
Posted by Øyvind Hvamstad <oy...@hvamstad.net>.
On Mon, 2003-01-06 at 16:31, Jacob Kjome wrote:
> Assuming the .war file is in CATALINA_HOME/webapps
> <Context path="/mypath" docBase="myWarArchive.war"/>
>
> Make sure to stop tomcat before you put the .war file into webapps. Add
> the above to your server.xml or a context configuration file (like
> admin.xml or manager.xml are set up). Then put the .war file into
> webapps. Now start Tomcat. Then, try to access a servlet which uses
> getRealPath("/"). Check the value. I guarantee it is null.
>
I am using the ant installTask, I was somehow confused to believe that
it used .war, but that was a mistake. No need to be agrevated.
<snip from="build.xml">
<target name="install"
depends="dist"
description="Install application to servlet container">
<install url="${manager.url}"
username="${manager.username}"
password="${manager.password}"
path="${app.path}"
<!-- THIS PROBABLY THREW ME OFF -->
war="file://${build.home}"/>
</target>
</snip>
> Jake
Thanks
Øyvind
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Relative paths in servlets?
Posted by Jacob Kjome <ho...@visi.com>.
You are confusing the WAR structure with the actual .war archive. The .war
archive is a .jar format archive. I challenge you to try to use File IO to
access a file inside a .jar or .war archive. If you can do it, please let
us all know because you will have broken new ground in Java :-)
Remember that Tomcat auto-expands .war files to a directory structure and
then deploys the directory structure. Also, you mention that your
contextPath points to the "build" *directory*. That is, obviously, not a
.war file archive, but a directory structure which will, quite obviously,
work to get a real path using File IO. The only way to test serving out of
a .war archive in Tomcat is to define a <Context> element with the docBase
pointing to a .war archive. For instance...
Assuming the .war file is in CATALINA_HOME/webapps
<Context path="/mypath" docBase="myWarArchive.war"/>
Make sure to stop tomcat before you put the .war file into webapps. Add
the above to your server.xml or a context configuration file (like
admin.xml or manager.xml are set up). Then put the .war file into
webapps. Now start Tomcat. Then, try to access a servlet which uses
getRealPath("/"). Check the value. I guarantee it is null.
Jake
At 03:23 PM 1/6/2003 +0100, you wrote:
>On Mon, 2003-01-06 at 15:22, Jacob Kjome wrote:
>
> > Check is that is null before using it as it *will* be null if you serve
> > your app directly from a .war file rather than from a directory on the
> file
> > system.
>
>Odd, I do serve mine from a .war file, however the contextPath is not
>null, but points to the build directory. This is probably not true if
>the war is buildt elsewhere than on the local host.
>
> > Jake
>
>Thanks
>
>Øyvind
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Relative paths in servlets?
Posted by Øyvind Hvamstad <oy...@hvamstad.net>.
On Mon, 2003-01-06 at 15:22, Jacob Kjome wrote:
> Check is that is null before using it as it *will* be null if you serve
> your app directly from a .war file rather than from a directory on the file
> system.
Odd, I do serve mine from a .war file, however the contextPath is not
null, but points to the build directory. This is probably not true if
the war is buildt elsewhere than on the local host.
> Jake
Thanks
Øyvind
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Relative paths in servlets?
Posted by Jacob Kjome <ho...@visi.com>.
/bar is your servlet mapping which has nothing to do with a real path on
your system. You want to get the real path from the base of the context:
String contextPath = getServletContext.getRealPath("/");
Check is that is null before using it as it *will* be null if you serve
your app directly from a .war file rather than from a directory on the file
system.
Now do contextPath+foo.html and create a File object from that.
Jake
At 02:35 PM 1/6/2003 +0100, you wrote:
>Hi, could anyone tell me how to access files using relative paths from a
>servlet? Say, if servlet is mapped to /bar and the file foo.html is in
>the webapps top dir. How do I access the foo.html file from the servlet.
>I tried ../foo.html, /foo.html and even
>getServletContext().getRealPath(/bar)+"/../foo.html" but none works.
>
>Any pointers?
>--
>Øyvind Hvamstad
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>