Restlet, CLAP, Ajax et délais d’attente

Nous utilisons RESTlet pour faire un petit serveur REST pour un projet que nous avons. Nous avons mis en place un tas de routes dans une classe héritant d’ Application :

 public static void createRestServer(ApplicationContext appCtx, Ssortingng propertiesPath) throws Exception { // Create a component Component component = new Component(); component.getServers().add(Protocol.HTTP, 8081); component.getClients().add(Protocol.FILE); component.getClients().add(Protocol.CLAP); Context context = component.getContext().createChildContext(); RestServer application = new RestServer(context); application.getContext().getParameters().add("useForwardedForHeader", "true"); application.getContext().getAtsortingbutes().put("appCtx", appCtx); application.getContext().getAtsortingbutes().put("file", propertiesPath); // Attach the application to the component and start it component.getDefaultHost().attach(application); component.start(); } private RestServer(Context context) { super(context); } public synchronized Restlet createInboundRoot() { Router router = new Router(getContext()); // we then have a bunch of these router.attach("/accounts/{accountId}", AccountFetcher.class); //LIST Account level // blah blah blah // finally some stuff for static files: // Directory directory = new Directory(getContext(), LocalReference.createClapReference(LocalReference.CLAP_CLASS, "/")); directory.setIndexName("index.html"); router.attach("/", directory); return router; } 

Le problème: si je demande un fichier .js dans le JAR via Ajax depuis une page Web (également chargée via CLAP à partir de ce JAR), il ne renverra que les 7737 premiers octets de ce fichier, puis se bloquera. Je ne peux pas le faire retourner le rest du fichier. Il se bloque toujours après exactement le même nombre d’octets. 1 fois sur 50 ça marche.

Des idées pourquoi ça pend? Puis-je simplement désactiver l’encodage fragmenté pour les fichiers CLAP et les fichiers statiques (tous les nôtres sont assez petits).

Cela nous rend fou.

    Je ne sais pas quel connecteur de serveur vous utilisez pour votre application, mais il semble que ce soit le connecteur par défaut.

    Restlet est enfichable et extensible à différents niveaux. Je vous recommande d’utiliser le jetée. Pour ce faire, ajoutez simplement le fichier JAR pour l’extension Jetty ( org.restlet.ext.jetty.jar ) dans votre org.restlet.ext.jetty.jar . Le connecteur sera automatiquement enregistré et utilisé à la place de celui par défaut.

    Je vous recommande également de passer à la dernière version (2.3).

    Pour voir quels connecteurs sont enregistrés dans le moteur Restlet, vous pouvez utiliser le code suivant:

     List> serverConnectors = Engine.getInstance().getRegisteredServers(); for (ConnectorHelper connectorHelper : serverConnectors) { System.out.println("Server connector: "+connectorHelper); } 

    Vous ne devriez pas avoir de tels problèmes après cela.

    J’espère que ça vous aide, Thierry