jersey
Настройка JAX-RS в Джерси
Поиск…
Java-фильтр CORS для запросов на перекрестный поиск
@Provider
public class CORSResponseFilter implements ContainerResponseFilter {
public void filter(
ContainerRequestContext requestContext,
ContainerResponseContext responseContext
) throws IOException {
MultivaluedMap<String, Object> headers = responseContext.getHeaders();
headers.add("Access-Control-Allow-Origin", "*"); //Allow Access from everywhere
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
}
}
Обратите внимание, что Access-Control-Allow-Origin полезен только при ответах OPTIONS.
Конфигурация Java Jersey
В этом примере показано, как настроить Джерси, чтобы вы могли использовать его в качестве инфраструктуры реализации JAX-RS для вашего RESTful API.
Предполагая, что вы уже установили Apache Maven , выполните следующие шаги, чтобы настроить Джерси:
- Создайте структуру веб-проекта maven, в терминале (окнах) выполните следующую команду
mvn archetype: generate -DgroupId = com.stackoverflow.rest -DartifactId = jersey-ws-demo-DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false
Примечание. Для поддержки Eclipse используйте команду Maven: mvn eclipse: eclipse -Dwtpversion = 2.0
- Перейдите в папку, в которой вы создали свой проект maven, в pom.xml, добавьте необходимые зависимости
<dependencies>
<!-- Jersey 2.22.2 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- JSON/POJO support -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
</dependencies>
<properties>
<jersey.version>2.22.2</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
- В Web.xml добавьте следующий код
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<!-- Service or resources to be placed in the following package -->
<param-value>com.stackoverflow.service</param-value>
</init-param>
<!-- Application configuration, used for registering resources like filters -->
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.stackoverflow.config.ApplicationConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Url mapping, usage-http://domainname:port/appname/api/ -->
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
- Класс
ApplicationConfig
public class ApplicationConfig extends ResourceConfig {
public ApplicationConfig() {
register(OtherStuffIfNeeded.class);
}
}
Следует также отметить, что если вы хотите перейти без web.xml, вы можете просто избавиться от него и добавить @ApplicationPath("/api")
поверх класса ApplicationConfig
.
@ApplicationPath("/api")
public class ApplicationConfig extends ResourceConfig {
public ApplicationConfig() {
// this call has the same effect as
// jersey.config.server.provider.packages
// in the web.xml: it scans that packages for resources and providers.
packages("com.stackoverflow.service");
}
}
- Создайте и разверните проект maven.
- Теперь вы можете настроить классы Java RESTful webservice (JAX-RS) для использования банок Джерси.