Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Интеграция JAX-RS с EJB и CDI

JAX-RS работает с Enterprise JavaBeans (Enterprise-бины) и контекстами и инъецированием зависимостей в Java EE (CDI).

В целом, для работы JAX-RS с Enterprise-бинами необходимо аннотировать класс бина аннотацией @Path, чтобы преобразовать его в корневой класс ресурсов. Вы можете использовать аннотацию @Path для сессионных компонентов без сохранения состояния и синглтонов POJO.

В следующем фрагменте кода показаны сессионный компонент без сохранения состояния и компонент-синглтон, преобразованные в классы корневых ресурсов JAX-RS.

@Stateless
@Path("stateless-bean")
public class StatelessResource {...}

@Singleton
@Path("singleton-bean")
public class SingletonResource {...}

Сессионные компоненты также могут использоваться для подресурсов.

Модели компонентов JAX-RS и CDI несколько отличаются друг от друга. По умолчанию классы корневых ресурсов JAX-RS управляются в области видимости запроса, и для указания области не требуется никаких аннотаций. Managed-бины CDI, аннотированные с помощью @RequestScoped или @ApplicationScoped, могут быть преобразованы в классы ресурсов JAX-RS.

В следующем фрагменте кода показан класс ресурсов JAX-RS.

@Path("/employee/{id}")
public class Employee {
    public Employee(@PathParam("id") String id) {...}
}

@Path("{lastname}")
public final class EmpDetails {...}

В следующем фрагменте кода показан этот класс ресурсов JAX-RS, преобразованный в бин CDI. Бины должны быть проксируемыми, поэтому классу Employee требуется неприватный конструктор без параметров, а класс EmpDetails не должен быть final.

@Path("/employee/{id}")
@RequestScoped
public class Employee {
    public Employee() {...}

    @Inject
    public Employee(@PathParam("id") String id) {...}
}

@Path("{lastname}")
@RequestScoped
public class EmpDetails {...}

Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)