Столкновение Java EE Servlet и REST пути
Я пытаюсь написать веб-приложение на Java, которое обеспечивает интерфейс HTML и REST. Я хотел бы создать сервлет, который будет предоставлять интерфейс HTML с использованием JSP, но данные также должны быть доступны через REST.
У меня уже есть что-то вроде этого для ОТДЫХА:
@javax.ws.rs.Path("/api/")
public class RestAPI {
... // Some methods
}
а также
@WebServlet("/servlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Howdy at ");
}
}
Теперь, когда я меняю аннотацию @WebServlet("/servlet") на @WebServlet("/"), сервлет перестает работать, вероятно, из-за конфликта пути с REST.
Как я могу предоставить REST по определенному пути и HTML в корне?
Спасибо, Лукас Дженделе
1 ответ
Это, кажется, работает хорошо для меня. Что я сделал:
В моем
pom.xml
У меня есть зависимость отorg.wildfly.swarm:undertow
(для Servlet API) иorg.wildfly.swarm:jaxrs
(для JAX-RS). И конечно же плагин Swarm Maven.Для сервлета у меня есть только один класс:
@WebServlet("/")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("Hello from servlet");
}
}
- Для JAX-RS у меня есть эти 2 класса:
@ApplicationPath("/api")
public class RestApplication extends Application {
}
@Path("/")
public class HelloResource {
@GET
public Response get() {
return Response.ok().entity("Hello from API").build();
}
}
Чтобы проверить, я бегу curl http://localhost:8080/
а также curl http://localhost:8080/api
, Результаты ожидаемые. (Может быть, мой пример слишком прост?)