Необходимость объявлять добавляемые сервлеты в web.xml отпала еще в далеком Java EE 6. На данный момент уже вышла Java EE 8, а на просторах интернета до сих пор можно встретить туториалы с созданием сервлетов, путем добавления объявлений сервлетов в файл web.xml. В нашем примере используется jdk 11, Apache Tomcat 8.53
Необходимые зависимости:
<dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>javax.persistence</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.27</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId> <version>2.27</version> </dependency> <dependency> <groupId>org.glassfish.jersey.bundles</groupId> <artifactId>jaxrs-ri</artifactId> <version>2.27</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId&gt; <version>gt;2.27</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-common</artifactId> <version>2.27</version> </dependency>
import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("api") public class WebApiApp extends Application { } import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; @Path("post") public class Post { @POST @Path("stop") @Produces("application/json; charset=UTF-8") @Consumes("application/json; charset=UTF-8") public Response dayv2(String data){ } }
Родительский путь указывается аннотацией @ApplicationPath, путь к сервлету через аннотацию @Path. Вот и все, довольно просто. Гораздо легче, чем постоянно следить за фалом web.xml
Если после запуска TOMCAT у вас появляется в логах запись: org.apache.catalina.core.StandardContext.loadOnStartup Servlet, проверьте зависимости.