JAX-RS 2.0 与受管 bean 的集成

Liberty 中的 JAX-RS 2.0 支持使用受管 bean 作为根资源类、提供者和应用程序子类。

  • 要将 JAX-RS 2.0 与受管 bean 集成,请在 server.xml 文件的 featureManager 元素内添加 <feature>managedBeans-1.0</feature> 条目。
  • 要将受管 bean 用作 JAX-RS 资源、提供者或应用程序,请使用 @ManagedBean 来注释这些类。
    例如,按如下所示使用 Interceptors 受管 bean 功能部件:
    @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!" ;
        }
    }

对带有受管 bean 的 JAX-RS 2.0 的限制

由上下文和依赖性注入 (CDI) 管理的以下 JAX-RS 组件类才支持资源注入:
  • 应用程序子类
  • 提供者
  • 根资源类

具体地说,要将受管 bean 实例注入到某个 JAX-RS 组件类中,必须确保此组件类可识别为 CDI bean 并进行管理。

例如,要按如下所示将 printMyName 受管 bean 实例注入至 JAX-RS 根资源类,必须在 .WAR file/WEB-INF 存储库中添加空 beans.xml 文件:
@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" );
    }

}

用于指示主题类型的图标 参考主题

信息中心的条款和条件 | 反馈


时间戳记图标 最近一次更新时间: Tuesday, 7 June 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_jaxrs2.0_managedbeans
文件名:rwlp_jaxrs2.0_managedbeans.html