Существует две причины.
Прежде всего, вы не включаете реализацию JAX-RS, а только JAX-RS API. JAX-RS API предоставляет только набор интерфейсов и оставляет за собой реализацию, чтобы обеспечить конкретные реализации этих интерфейсов.
Если у вас нет реализации JAX-RS, я бы посоветовал вам пойтис Джерси (эталонная реализация). Добавьте к своему pom.xml
следующее:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.29</version>
</dependency>
Во-вторых, вы не зарегистрировали свое приложение нигде в web.xml
. Как вы это сделаете, зависит от того, какую реализацию JAX-RS вы используете, и как вы регистрируете свои классы и провайдеров. Чтобы помочь вам с этим, мне нужно, чтобы вы ответили на несколько вопросов:
- У вас есть класс, реализующий
Application
(или класс, расширяющий ResourceConfig
)? - Все ливаши классы ресурсов помечены
@Path
, а все ваши провайдеры помечены @Provider
? - Все ли ваши классы ресурсов и провайдеры в одном пакете?
- Какая реализация JAX-RS вы собираетесь использовать? с?
Если вы используете Джерси и ответили да на первый вопрос, укажите в web.xml
следующее:
<servlet>
<servlet-name>Jersey Web Application</filter-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value><!-- FQN of your Application/ResourceConfig class --></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
В противном случае посмотрите инструкции по настройке для вашего конкретногоКаркас JAX-RS.