Grizzly Server со статическим содержимым и ресурсом REST

У меня есть служба Jersey REST 2.5.1, которая обслуживается через сервер Grizzly. Пока все работает нормально. Я хочу добавить некоторое статическое содержимое, которое также обслуживается через Grizzly и предоставляется из моего файла JAR. Поэтому я использую CLStaticHttpHandler. Когда я обращаюсь к статическим ресурсам, таким как мой index.html явно (например, http://localhost:8080/index.html), все работает нормально. Однако, когда я пытаюсь получить доступ к корню http://localhost:8080, я получаю 404. Код выглядит так:

ObjectMapper mapper = new ObjectMapper();
// some configuration stuff here

JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider();
provider.setMapper(mapper);

ResourceConfig resourceConfig = new ResourceConfig()
            .packages("my.restapi.package")
            .register(provider);

HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), resourceConfig);
HttpHandler httpHandler = new CLStaticHttpHandler(HttpServer.class.getClassLoader(), "/static/");
httpServer.getServerConfiguration().addHttpHandler(httpHandler, "/");

Насколько я могу судить по отладке, org.glassfish.grizzly.http.server.CLStaticHttpHandler.handle(String, Request, Response) никогда не вызывается. Любые подсказки, как я могу сделать index.html доступной в качестве страницы по умолчанию?


person qqilihq    schedule 04.01.2014    source источник


Ответы (1)


После нескольких потерянных часов я чувствую себя немного глупо, но простым решением было указать путь в BASE_URI (http://localhost:8080/api/ вместо http://localhost:8080/). Теперь при доступе к / я получаю index.html, а методы REST находятся под /api.

person qqilihq    schedule 05.01.2014
comment
Да, я так и использую. - person qqilihq; 21.02.2014
comment
@qqilihq, где вы размещаете статическую папку? - person Rentonie; 19.08.2015
comment
В пути к классам проекта (правда, тогда я использовал проект maven, поэтому я поставил /static в src/main/resources). - person qqilihq; 19.08.2015