JAX-RS 2.0-Integration mit MBeans
JAX-RS 2.0 in Liberty unterstützt die Verwendung von MBeans als Stammressourcenklassen, Provider und Anwendungsunterklassen.
- Zum Integrieren von JAX-RS 2.0 mit Mbeans fügen Sie den Eintrag <feature>managedBeans-1.0</feature> im Element "featureManager" in der Datei server.xml hinzu.
- Wenn Sie eine MBean als JAX-RS-Ressource, -Provider oder -Anwendung verwenden möchten, verwenden Sie
@ManagedBean, um diese Klasse zu annotieren. Verwenden Sie beispielsweise das Interceptor-Feature für Mbeans wie folgt:
@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!" ; } }
Einschränkungen in JAX-RS 2.0 mit MBeans
Die Ressourceninjektion wird nur von den folgenden JAX-RS-Komponentenklassen unterstützt,
die von Contexts and Dependency Injection (CDI) verwaltet werden:
- Anwendungunterklassen
- Provider
- Stammressourcenklassen
Um eine MBean-Instanz in eine bestimmte JAX-RS-Komponentenklasse einzufügen, müssen Sie sicherstellen, dass diese Komponentenklasse als CDI-Bean erkannt und verwaltet werden kann.
Wenn Sie beispielsweise die MBean-Instanz printMyName wie folgt in eine
JAX-RS-Stammressourcenklasse einfügen möchten, müssen Sie eine leere Datei beans.xml im WAR-Dateirepository /WEB-INF hinzufügen:
@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 Automatisch generierter Methodenstub
System. out .println("Injection of ManagedBean is successful" );
}
}