2014-10-15 7 views
0

을 유지하지 않습니다.상태 유지 빈은 내가 상태 콩이 상태

public class RequestTest extends Arquillian { 

    ... 

    @Inject 
    private ClientContext context; 

    @Inject 
    private RequestProcessor processor; 

    @Test 
    public void test() { 
     context.setBand(new Band()); 
     Assert.assertNotNull(context.getBand()); 

     processor.doSomething(); 
    } 

} 

그리고 프로세서 코드 :

@Stateless 
@LocalBean 
public class RequestProcessor { 

    ... 

    @Inject 
    private ClientContext context; 

    public void doSomething() { 
     System.out.println(context.getBand()); 
    } 

} 

내가 RequestProcessor가이 밴드를 인쇄 할 전망이다. 하지만 실제로는 매번 null이됩니다. 무엇이 잘못되었거나 스테이플 빈을 제대로 이해하지 못했을 수 있습니까?

답변

1

당신은 질문에 스스로 대답하고 있습니다. stateful에 대한 주된 기본은 주입 빈이있는만큼 오래 지속되는 주입 당 하나의 인스턴스 만 유지하는 것입니다. 콩 사이에 상태를 공유해야 할 때 @SessionBean 명확히하기 위해 @Stateful은 주입하려는 각 위치에 대해 하나의 인스턴스가 생성된다는 것을 의미합니다. 이는 어떤 작업을 바인드해야 할 때 유용합니다 상태를 하나의 구성 요소로 유지하기 때문에 어떤 정보를 만들고 다른 클래스간에 공유해야하는 경우 공유 방법을 선택해야합니다. @Singleton : 전체 앱에 대해 하나의 인스턴스 만 존재합니다. @SessionScoped : 클라이언트 당 하나의 인스턴스가 있습니다. @Stateless : 다른 클라이언트가 사용하기 위해 해제 된 후에 사용할 수있는 이미지가없는 경우 이미지를 만듭니다. 뷰를 관리하는 경우 사용할 수도 있습니다. @RequestScoped : 요청마다 하나의 인스턴스를 만든 다음 삭제합니다. 그것. @ViewScoped : Bean은 클라이언트가 동일한보기 내에서 업데이트를 계속하는 동안 오래 유지됩니다.