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
>>
>
>

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

Reply via email to