Java EE. Create Jersey Servlet without web.xml.

Необходимость объявлять добавляемые сервлеты в 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>
            <version>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, проверьте зависимости.

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.