@Stateless
@Path("stateless-bean")
public class StatelessResource {...}
@Singleton
@Path("singleton-bean")
public class SingletonResource {...}
Java Platform, Enterprise Edition (Java EE) 8 The Java EE Tutorial |
Previous | Next | Contents |
JAX-RS works with Enterprise JavaBeans technology (enterprise beans) and Contexts and Dependency Injection for Java EE (CDI).
In general, for JAX-RS to work with enterprise beans, you need to
annotate the class of a bean with @Path
to convert it to a root
resource class. You can use the @Path
annotation with stateless
session beans and singleton POJO beans.
The following code snippet shows a stateless session bean and a singleton bean that have been converted to JAX-RS root resource classes.
@Stateless
@Path("stateless-bean")
public class StatelessResource {...}
@Singleton
@Path("singleton-bean")
public class SingletonResource {...}
Session beans can also be used for subresources.
JAX-RS and CDI have slightly different component models. By default,
JAX-RS root resource classes are managed in the request scope, and no
annotations are required for specifying the scope. CDI managed beans
annotated with @RequestScoped
or @ApplicationScoped
can be converted
to JAX-RS resource classes.
The following code snippet shows a JAX-RS resource class.
@Path("/employee/{id}")
public class Employee {
public Employee(@PathParam("id") String id) {...}
}
@Path("{lastname}")
public final class EmpDetails {...}
The following code snippet shows this JAX-RS resource class converted to
a CDI bean. The beans must be proxyable, so the Employee
class
requires a nonprivate constructor with no parameters, and the
EmpDetails
class must not be final
.
@Path("/employee/{id}")
@RequestScoped
public class Employee {
public Employee() {...}
@Inject
public Employee(@PathParam("id") String id) {...}
}
@Path("{lastname}")
@RequestScoped
public class EmpDetails {...}
Previous | Next | Contents |