관리 Bean과 JAX-RS 2.0 통합

Liberty의 JAX-RS 2.0은 루트 자원 클래스, 제공자 및 애플리케이션 서브클래스로서 관리 Bean을 사용하도록 지원합니다.

  • JAX-RS 2.0을 관리 Bean과 통합하려면, <feature>managedBeans-1.0</feature> 항목을 server.xml 파일의 featureManager 요소 내에 추가하십시오.
  • 관리 Bean을 JAX-RS 자원, 제공자 또는 애플리케이션으로 사용하려면, @ManagedBean을 사용하여 이 클래스의 어노테이션을 작성하십시오.
    예를 들어, 다음과 같이 인터셉터 관리 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(Contexts and Dependency Injection)에 의해 관리되는 다음의 JAX-RS 컴포넌트 클래스에 의해서만 지원됩니다.
  • 애플리케이션 서브클래스
  • 제공자
  • 루트 자원 클래스

특히 관리 Bean 인스턴스를 특정 JAX-RS 컴포넌트 클래스에 삽입하려면, 이 컴포넌트 클래스가 CDI Bean으로서 인식되고 관리될 수 있는지 확인해야 합니다.

예를 들어, 다음과 같이 printMyName 관리 Bean 인스턴스를 JAX-RS 루트 자원 클래스에 삽입하려면 비어 있는 beans.xml 파일을 .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" );
    }

}

주제의 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_jaxrs2.0_managedbeans
파일 이름: rwlp_jaxrs2.0_managedbeans.html