Сервер Grizzly со статическим контентом и ресурсом REST
у меня есть служба Jersey REST 2.5.1, которая обслуживается через сервер Grizzly. Пока все работает нормально. Я хочу добавить статический контент, который также подается через Grizzly и предоставляется из моего файла JAR. Поэтому я использую CLStaticHttpHandler
. Когда я получаю доступ к статическим ресурсам, таким как my 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
доступна как страница по умолчанию?
1 ответов
после нескольких потерянных часов я чувствую себя немного глупо, но простым решением было указать путь в BASE_URI
(http://localhost:8080/api/
вместо http://localhost:8080/
). Теперь, при доступе /
, Я index.html
и остальные методы находятся под /api
.