У меня есть приложение, которое использует сервер Jetty следующим образом:
public class RunServer {
public static void main(String[] args) throws Exception {
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
Server jettyServer = new Server(8080);
jettyServer.setHandler(context);
ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/rest/*");
jerseyServlet.setInitOrder(0);
// Tells the Jersey Servlet which REST service/class to load.
jerseyServlet.setInitParameter(
"jersey.config.server.provider.packages", "rest");
ResourceHandler webHandler = new ResourceHandler();
webHandler.setDirectoriesListed(true);
webHandler.setResourceBase("src/main/webapp");
webHandler.setWelcomeFiles(new String[]{"index.html"});
// Handler
HandlerCollection handlers = new HandlerCollection();
handlers.addHandler(webHandler);
handlers.addHandler(context);
jettyServer.setHandler(handlers);
try {
jettyServer.start();
jettyServer.join();
} finally {
jettyServer.destroy();
}
}
}
Когда я запускаю сервер и обращаюсь к localhost: 8080 через браузер, он отображает index.html
, а также я могу получить доступ к REST APIконечная точка, которая выглядит как
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getString(){
return "This is a test response";
}
Это вывод браузера
Но, когда я пытаюсь отобразить html-файл test.html
, расположенный в src/main/webapp/test.html
вот так
@GET
@Produces(MediaType.TEXT_HTML)
public Response helloResource() {
return Response.ok(new Viewable("/test")).build();
}
Я получаю сообщение об ошибке HTTP 500 с ошибкой в журнале сервера
SEVERE: MessageBodyWriter not found for media type=text/html, type=class org.glassfish.jersey.server.mvc.Viewable, genericType=class org.glassfish.jersey.server.mvc.Viewable.
Буду очень признателен, если кто-нибудь даст мне несколько советов о том, какисправить это.