@Stateless
@Path("stateless-bean")
public class StatelessResource {...}
@Singleton
@Path("singleton-bean")
public class SingletonResource {...}
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
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 {...}
Назад | Вперёд | Содержание |