great information. thx for taking the time.
very much appreciated,
- james
Paul Philion wrote:
>
> James -
>
> I've just been reviewing the RFC 1738 (URL spec, mostly in context of some formal
>comments that I putting together about the 2.2 spec). From that RFC:
>
> A file URL takes the form:
>
> file://<host>/<path>
>
> where <host> is the fully qualified domain name of the system on
> which the <path> is accessible, and <path> is a hierarchical
> directory path of the form <directory>/<directory>/.../<name>.
>
> As a special case, <host> can be the string "localhost" or the empty
> string; this is interpreted as `the machine from which the URL is
> being interpreted'.
>
> The file URL scheme is unusual in that it does not specify an
> Internet protocol or access method for such files; as such, its
> utility in network protocols between hosts is limited.
>
> And from the BNF at the end of the RFC:
>
> fileurl = "file://" [ host | "localhost" ] "/" fpath
>
> So, according to the spec, both of
>
> file://localhost/PATH
> file:///PATH
>
> a equal. The BNF further implies that URL are absolute: There is no way to specify a
>resource otherwise.
>
> Now, RFC 1630 (URI spec) does allow for relative URIs:
>
> Partial (relative) form
>
> Within a object whose URI is well defined, the URI of another object
> may be given in abbreviated form, where parts of the two URIs are the
> same. This allows objects within a group to refer to each other
> without requiring the space for a complete reference, and it
> incidentally allows the group of objects to be moved without changing
> any references. It must be emphasized that when a reference is
> passed in anything other than a well controlled context, the full
> form must always be used.
>
> The rules for the use of a partial name relative to the URI of the
> context are:
>
> If the scheme parts are different, the whole absolute URI must
> be given. Otherwise, the scheme is omitted, and:
>
> If the partial URI starts with a non-zero number of consecutive
> slashes, then everything from the context URI up to (but not
> including) the first occurrence of exactly the same number of
> consecutive slashes which has no greater number of consecutive
> slashes anywhere to the right of it is taken to be the same and
> so prepended to the partial URL to form the full URL. Otherwise:
>
> The last part of the path of the context URI (anything following
> the rightmost slash) is removed, and the given partial URI
> appended in its place, and then:
>
> Within the result, all occurrences of "xxx/../" or "/." are
> recursively removed, where xxx, ".." and "." are complete path
> elements.
>
> So, if you've got a "URI in context", you can use relative URIs. Some examples (from
>the spec):
>
> In the context of URI
>
> magic://a/b/c//d/e/f
>
> the partial URIs would expand as follows:
>
> g magic://a/b/c//d/e/g
> /g magic://a/g
> //g magic://g
> ../g magic://a/b/c//d/g
> g:h g:h
>
> and in the context of the URI
>
> magic://a/b/c//d/e/
>
> the results would be exactly the same.
>
> This is nice, but it really only gives you a way to translate relative URIs into
>absolute URLs, based on the URI context.
>
> So basically, what I'm saying is that there is currently no way to specify a
>"relative file url", mostly because for the URL to be relative, it has to have some
>sort of context. Basically, I think it comes down to is using ".." in an absolute URL
>and generating that URL:
>
> String url;
> String file = "../foo.jar";
> String base = getCodeBase();
>
> if ( base.endsWith( "/" ) ) {
> url = base + file;
> } else {
> url = base + "/" + file; // this might always be valid;
> }
>
> This is why I always use getResource(). Perhaps there should be a File() constructor
>that takes a URL, or developers should consistantly use getResource() and
>URL.getFile().
>
> - Paul Philion
>
> James Todd wrote:
> >
> > [i'm going to cross-post my reply to the jsp and servlet
> > interest lists ... as i've been burned on this very item
> > in the past and am curious as to folks opinions].
> >
> > hi joe -
> >
> > !great information!
> >
> > for a good part of the day i've been trying to resolve
> > a "portable file url specified docBase" issue. for what
> > it is worth and this may be a bit dated but i've used
> > the following format since jdk 1.0.x days with measurable
> > success:
> >
> > file://localhost/PATH
> >
> > where PATH can look like "foo/bar" for unix
> > and "C|/foo/bar" (or something like this)
> > on win
> >
> > i've run into modo various jdk version/platform issues
> > when using file urls which are specified with anything
> > less then the above. that said, i'm really not sure how
> > to specify relative file urls with the above scheme in
> > a portable manner as the "third" slash designates the
> > the root file system ... or so i believe.
> >
> > eg: file:../foo.jar
> >
> > i'd like to hear thoughts on this item as it is really
> > a bit of a pain in the a$$ when it comes to specifying
> > a reliable (ie jdk 1.1.x and jdk 1.2.x on win/solaris/*
> > for relative and absolute paths) file based docBase.
> >
> > any ideas? i am optimistic (and stubborn) so i believe
> > there is a solution here.
>
> ___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html