Intégration de JAX-RS 2.0 à des beans gérés
JAX-RS 2.0 dans Liberty prend en charge l'utilisation de beans gérés en tant que classes de ressources racines, fournisseurs et sous-classes d'application.
- Pour intégrer JAX-RS 2.0 à des beans gérés, ajoutez l'entrée <feature>managedBeans-1.0</feature> dans l'élément featureManager du fichier server.xml.
- Pour utiliser un bean géré en tant que ressource,
fournisseur ou applicationJAX-RS, utilisez la commande
@ManagedBean pour annoter ces classes. Par exemple, utilisez la fonction de bean géré Intercepteurs comme suit :
@ManagedBean ("JaxrsManagedBean" ) @Path ("/managedbean" ) public class ManagedBeanResource { public static class MyInterceptor { @AroundInvoke public Object around(InvocationContext ctx) throws Exception { System. out .println("around() called" ); return ctx.proceed(); } } @GET @Produces( "text/plain") @Interceptors(MyInterceptor. class ) public String getIt() { return "Hi managed bean!" ; } }
Restrictions relatives à JAX-RS 2.0 avec des beans gérés
L'injection de ressource est uniquement prise
en charge par les classes de composant JAX-RS suivantes qui
sont gérées par Contexts and Dependency Injection (CDI) :
- Sous-classes d'application
- Fournisseurs
- Classes de ressources racine
Plus précisément, pour injecter une instance de bean géré dans une classe de composant JAX-RS particulière, vous devez vous assurer que cette classe de composant peut être reconnue et gérée en tant que bean CDI.
Par exemple, pour injecter l'instance de bean géré
printMyName dans une classe de ressource
racine JAX-RS comme suit, vous devez ajouter un fichier
beans.xml vide dans le référentiel
.WAR file/WEB-INF :
@Path ("/managedbean" )
public class ManagedBeanResource {
@Resource(name = "printMyName" )
private PrintMyName printMyName ;
@GET
@Produces( "text/plain")
public String getIt() {
printMyName .print();
return "Hi managed bean!" ;
}
}
@ManagedBean ("printmyname" )
public class PrintMyName {
public void print() {
// TODO Auto-generated method stub
System. out .println("Injection of ManagedBean is successful" );
}
}