Я решил заменить Web .XML в этой части:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-
class>org.glassfish.jersey.servlet.ServletContainer</servlet-
class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.skillsimprover.restexamples.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
Я указываю на контейнер сервлета Джерси , который будет принимать запросы к REST -Контроллеры, указывающие, что при загрузке необходимо сканировать пакет REST по пути com.skillsimprover.restexamples.rest и указывать, что базовый URI дляВсе методы и классы ресурса заполнены / api / *
Начиная с версии JAX-RS 2.x , вы можете использовать Application или ResourceConfig классы для регистрации пакетов и ресурсов.
Я выполнил код следующим образом:
@ApplicationPath("api")
public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
packages("com.skillsimprover.restexamples.rest");
register(EmployeApi.class);
}
}
Таким образом, необходимо указать,какой пакет и в нем под пакетами нужно сканировать.Используя аннотацию @ ApplicationPath ("api") , я подумал заменить
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
Но ничего не работает.
В чем может быть ошибка?И почему мне нужно указывать классы ресурсов, поскольку я указал пакет для сканирования?
Почему этот метод не заменяет Web.XML и как заменить Web.xml?
А если классов ресурсов может быть много, их нужно будет в больших количествах зарегистрировать?То есть лучше использовать Web.XML?
Или его можно обойти?
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>${jersey.rest.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.rest.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlets.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>