Restlet,CLAP,Ajax和块超时

我们正在使用RESTlet为我们的项目做一个小的REST服务器。 我们在从Applicationinheritance的类中build立了一堆路由:

 public static void createRestServer(ApplicationContext appCtx, String 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().getAttributes().put("appCtx", appCtx); application.getContext().getAttributes().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; } 

问题:如果我通过Ajax从JAR请求JAR文件(也是通过CLAR从JAR加载的),它将只返回该文件的前7737个字节,然后挂起。 我不能让它返回文件的其余部分。 它总是在完全相同的字节数之后挂起。 1 50倍的工作。

任何想法,为什么它挂? 我可以closures分块编码为CLAP和静态文件(我们所有的都很小)。

这使我们疯狂。

我不知道你的应用程序使用哪个服务器连接器,但它似乎是默认的。

Restlet可以在不同级别上插入和扩展。 我build议你使用docker之一。 要做到这一点,只需在类path中添加Jetty扩展的JAR文件( org.restlet.ext.jetty.jar )即可。 连接器将被自动注册并使用,而不是默认的连接器。

我也build议你升级到最新版本(2.3)。

要查看在Restlet引擎中注册了哪些连接器,可以使用以下代码:

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

这样做后,你不应该有这样的问题。

希望它能帮助你,Thierry

Interesting Posts