Мы используем RESTlet для создания небольшого небольшого сервера REST для проекта, который у нас есть. Мы создали цепочку маршрутов в классе, наследующем от Application
:
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;
}
Проблема: если я запрашиваю файл .js в JAR через Ajax с веб-страницы (также загружаемой через CLAP из этого JAR), он возвращает только первые 7737 байт этого файла, а затем зависает. Я не могу заставить его вернуть остальную часть файла. Он всегда зависает после точно такого же количества байтов. 1 в 50 раз он работает.
Любые идеи, почему он висит? Могу ли я просто отключить закодированную кодировку для CLAP и статических файлов (все наши довольно маленькие).
Это приводит нас в бешенство.