Hello,

I did not test your cases, and I always use full paths to files on my URLs
for static resources inside jars, but... did you try to setup a redirector?
so whenever you hit your resource at /stat or /stat/ you get redirected to
/stat/index.html ? I know it's a hack, and not a fix... and it will require
redirectors for subfolders too... (/stat/yourstat ->
/stat/yourstat/index.html). Maybe you can avoid the ones for subfolders by
making sure you spec the full URL to the HTML file for subfolders.




On Fri, May 31, 2013 at 10:48 PM, Robert Brewer <[email protected]> wrote:

> Anyone have any thoughts on this? Is nobody else serving up static
> HTML/CSS/JS content from jar files? Should I create a GitHub issue?
>
> Thanks.
>
> On Fri, May 10, 2013 at 6:41 PM, Robert S Brewer <[email protected]> wrote:
> > Hello Thierry B. My dissertation is finished, so I can finally get
> > back to debugging this problem :)
> >
> > Your sample code & project were quite helpful, however, it differed
> > from my code in one way: my static files are contained in a
> > subdirectory of the jar file. So I made 2 tiny modifications to your
> > sample: the path to the directory is now "/stat", and I created a
> > "stat" directory in the jar file that contains the index.html file.
> >
> > Once I made these changes, it replicates the problem I am having. The
> > modified sample code behaves just like my application: if I go to
> > http://localhost:8182/stat/ my browser downloads a zero-length file,
> > but localhost:8182/stat/index.html works fine.
> >
> > Am I misunderstanding something, or is this a bug?
> >
> > I have attached a zip file with my modified version of the project.
> > There are two jar files: testRobert.jar is the original jar file,
> > while newTestRobert.jar is my modified version so one can see the
> > differences easily.
> >
> > Thank you for your assistance with this bedeviling problem.
> >
> > On Fri, Jan 11, 2013 at 12:07 AM, Thierry Boileau <[email protected]>
> wrote:
> >> oops, I missed the project file.
> >>
> >> Best regards,
> >> Thierry Boileau
> >>
> >>
> >> 2013/1/11 Thierry Boileau <[email protected]>
> >>>
> >>> Hi Robert,
> >>>
> >>> I send you a zip file of the eclipse project (testRobert.zip), and the
> jar
> >>> file generated by eclipse.
> >>> I launch the application on command line as follow:
> >>> java -cp
> testRobert.jar:/home/thierry/restlet/branches/2.1/org.restlet.jar
> >>> test.MyApplication
> >>>
> >>>
> >>> Best regards,
> >>> Thierry Boileau
> >>>
> >>>
> >>> 2013/1/11 Robert Brewer <[email protected]>
> >>>>
> >>>> Hmm, I could not clap and jars for a directory to work. Do you have
> >>>> the test code that worked available? I will try reducing my code to a
> >>>> bare minimum to see what is going on, but another project has come up
> >>>> so I have to investigate later.
> >>>>
> >>>> Thanks for your help.
> >>>>
> >>>> On Wed, Jan 9, 2013 at 10:36 PM, Thierry Boileau <
> [email protected]>
> >>>> wrote:
> >>>> > Hi Robert,
> >>>> >
> >>>> > I've just tried the clap connector using a jar file and it works
> for me
> >>>> > (I
> >>>> > mean such url works : "http://localhost:8182/stat/index.html";,
> >>>> > "http://localhost:8182/stat/";). Just take care to complete
> properly the
> >>>> > classpath when lauching your application from the command line.
> >>>> >
> >>>> > Best regards,
> >>>> > Thierry Boileau
> >>>> >
> >>>> >
> >>>> > 2013/1/10 Thierry Boileau <[email protected]>
> >>>> >>
> >>>> >> Hello Robert,
> >>>> >>
> >>>> >> from what I notice, the resolution of "a file" is more or less
> based
> >>>> >> on
> >>>> >> the ability to discover ressources having the same base name. A
> file
> >>>> >> directory is perfect because it is possible to list all ressources
> >>>> >> within
> >>>> >> the same parent directory.
> >>>> >> A classloader is more retrictive and gives access to a single
> >>>> >> resource...
> >>>> >> which explains the behaviour of the "indexName" attribute of a
> >>>> >> Directory.
> >>>> >> I check why it does not work from a jar file.
> >>>> >>
> >>>> >> You can also connect the Directory with the jar file using the JAR
> >>>> >> protocol or the ZIP protocol. Such protocol is based on the JDK
> >>>> >> ZipEntry
> >>>> >> class which has the ability to list files (such as a directory).
> >>>> >> directory = new Directory(getContext(), "zip:" +
> >>>> >> LocalReference.createFileReference(new File("/your/path")) + "!/"
> );
> >>>> >> Of course, it obliges you to reference the jarfile from itself. You
> >>>> >> can
> >>>> >> consider this as a workaround.
> >>>> >>
> >>>> >> Best regards,
> >>>> >> Thierry Boileau
> >>>> >>
> >>>> >>
> >>>> >> 2013/1/10 Robert Brewer <[email protected]>
> >>>> >>>
> >>>> >>> Hello Restlet folks. I have a problem serving static files using
> >>>> >>> Restlet's Directory class and the CLAP pseudo protocol
> (apparently a
> >>>> >>> popular topic right now :)
> >>>> >>>
> >>>> >>> I have a standalone web application that uses Restlet to provide a
> >>>> >>> RESTful API. Some students taking a class have written a nice
> client
> >>>> >>> for the web application as a Single Page Application (SPA)
> consisting
> >>>> >>> of HTML5/CSS/Javascript. I would like to store a directory
> containing
> >>>> >>> the static SPA files in my web application's jar file and to serve
> >>>> >>> them under a specific URI so the SPA client and server are
> >>>> >>> self-contained
> >>>> >>>
> >>>> >>> The way I am trying to do this is:
> >>>> >>>
> >>>> >>>   public synchronized Restlet createInboundRoot() {
> >>>> >>> ...
> >>>> >>>     Directory directory = new Directory(getContext(),
> >>>> >>> "clap://class/spa/");
> >>>> >>>     router.attach("/spa/", directory);
> >>>> >>> ...
> >>>> >>>
> >>>> >>> Unfortunately, this doesn't work. When I run the server from my
> jar
> >>>> >>> file and point a browser at "/spa/", the browser downloads an
> empty
> >>>> >>> file (Chrome calls it "download", Safari calls it "spa") rather
> than
> >>>> >>> rendering the page. Browsing to "/spa/index.html" does work, but I
> >>>> >>> don't want users to have to remember to add the "index.html".
> >>>> >>>
> >>>> >>> Am I doing something wrong here? It seems like this should work.
> I'm
> >>>> >>> open to other ways to accomplish this goal.
> >>>> >>>
> >>>> >>> Annoyingly, the server behaves differently when running from
> Eclipse
> >>>> >>> than when running from a jar file, which makes troubleshooting
> this
> >>>> >>> problem more painful since I have to build the jar file to test
> >>>> >>> fixes.For example, when running from Eclipse, "/spa/" gives a 404
> >>>> >>> error, instead of downloading an empty file.
> >>>> >>>
> >>>> >>> I also tried playing with setIndexName(). If I set it to
> "index.html"
> >>>> >>> (including the extension despite the Javadoc saying the parameter
> >>>> >>> should be without extension), then it works when run from Eclipse
> but
> >>>> >>> not from the jar file.
> >>>> >>>
> >>>> >>> Thanks in advance for any suggestions on how to make this work!
> >>>> >>>
> >>>> >>> --
> >>>> >>> Robert Brewer
> >>>> >>> http://excitedcuriosity.wordpress.com/
> >>>> >>> https://www.facebook.com/kukuicup
> >>>> >>>
> >>>> >>> ------------------------------------------------------
> >>>> >>>
> >>>> >>>
> >>>> >>>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3042270
> >>>>
> >>>> --
> >>>> Robert Brewer
> >>>> http://excitedcuriosity.wordpress.com/
> >>>> https://www.facebook.com/kukuicup
> >>>>
> >>>> ------------------------------------------------------
> >>>>
> >>>>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3042617
> >
> > --
> > Robert Brewer
> > http://excitedcuriosity.wordpress.com/
> > https://www.facebook.com/kukuicup
>
>
>
> --
> Robert Brewer
> http://excitedcuriosity.wordpress.com/
> https://www.facebook.com/kukuicup
>
> ------------------------------------------------------
>
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3056813
>



-- 
Fabián Mandelbaum
IS Engineer

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3056836

Reply via email to