** ПОЖАЛУЙСТА, ПРОЧТИТЕ, ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ TOMCAT ИЛИ JETTY! **
Принятый ответ работает , но только если веб-приложение развернуто на сервере приложений, таком как Glassfish или Wildfly, и, возможно, в контейнерах сервлетов с расширениями EE, такими как TomEE. Он не работает на стандартных контейнерах сервлетов, таких как Tomcat, которые, я уверен, большинство людей, которые ищут здесь решение, хотят использовать.
Если вы используете стандартную установку Tomcat (или какой-либо другой контейнер сервлета), вам необходимо включить реализацию REST, поскольку Tomcat не поставляется с ней. Если вы используете Maven, добавьте это в раздел dependencies
:
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.bundles</groupId>
<artifactId>jaxrs-ri</artifactId>
<version>2.13</version>
</dependency>
...
</dependencies>
Затем просто добавьте класс конфигурации приложения в ваш проект. Если у вас нет особых требований к настройке, кроме настройки пути к контексту для остальных служб, класс может быть пустым. Как только этот класс добавлен, вам не нужно ничего настраивать в web.xml
(или вообще иметь его):
package com.domain.mypackage;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("rest") // set the path to REST web services
public class ApplicationConfig extends Application {}
После этого объявление ваших веб-сервисов выполняется напрямую с использованием стандартных аннотаций JAX-RS в ваших классах Java:
package com.domain.mypackage;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.GET;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;
// It's good practice to include a version number in the path so you can have
// multiple versions deployed at once. That way consumers don't need to upgrade
// right away if things are working for them.
@Path("calc/1.0")
public class CalculatorV1_0 {
@GET
@Consumes("text/plain")
@Produces("text/plain")
@Path("addTwoNumbers")
public String add(@MatrixParam("firstNumber") int n1, @MatrixParam("secondNumber") int n2) {
return String.valueOf(n1 + n2);
}
}
Это должно быть все, что вам нужно. Если ваша установка Tomcat выполняется локально на порту 8080, и вы развернули файл WAR в контексте myContext
, перейдите к ...
http://localhost:8080/myContext/rest/calc/1.0/addTwoNumbers;firstNumber=2;secondNumber=3
... должен дать ожидаемый результат (5).