여기는 최근에 읽은 oracle blog의 문단입니다.Stateful Bean은 EJB의 컨테이너 또는 응용 프로그램으로 관리됩니까?
이 동작은 Stateful 세션 빈의 동작과 매우 다릅니다. Stateful 세션 빈 인스턴스는 @Remove로 주석 처리 된 메소드의 호출로 클라이언트에 의해 명시 적으로 제거되어야합니다. 컨테이너에 의해 자동으로 삭제되지는 않습니다. 그것은 어떤 맥락에도 구속되지 않는다. Stateful 세션 빈을 HttpSession과 연관 시키면, HttpSession의 끝이나 타임 아웃에서 안정적인 폐기에 대해서도주의해야한다.
이에 따르면 stateful session
을 제거한 후 응용 프로그램을 제거해야합니다.
그러나 두 권의 책을 읽었습니다. @Remove
이 호출되지 않으면 컨테이너는 범위에서 콩을 제거하지만 자체 재량으로 제거합니다.
그래서 나는 옳은 것이 무엇인지 알고 싶습니까? @stateful
명시 적으로 제거하거나 모든 경우에 제거하기 위해 컨테이너에두고해야하는지 그것을 수행 제거
편집
내가 Beginning Java EE7 by Antonio Goncalves
인용 - 훌륭한 책; 페이지 243 (pdf)
선택적 @ javax.ejb.StatefulTimeout 및 @ javax.ejb.Remove 주석에 유의하십시오. @Remove는 checkout() 메소드를 장식합니다. 이렇게하면 checkout() 메소드를 호출 한 후에 Bean 인스턴스가 메모리에서 영구적으로 제거된다. @StatefulTimeout은 컨테이너가 제거하기 전에 Bean이 유휴 (클라이언트 호출을받지 않음) 상태로 유지되는 기간 인 시간 종료 값을 지정합니다. 이 주석의 시간 단위는 java.util.concurrent.TimeUnit이므로 DAYS, HOURS ...에서 NANOSECONDS (기본값 : 은 MINUTES)까지 갈 수 있습니다. 또는 이러한 주석을 피하고 클라이언트 세션이 끝나거나 만료 될 때 자동으로 컨테이너에 인스턴스를 제거 할 수 있습니다. 그러나 적절한 순간에 상태 저장 빈이 제거되었는지 확인하면 메모리 소비가 줄어들 수 있습니다. 이는 동시 처리가 많은 응용 프로그램에서 중요 할 수 있습니다.
내가 읽은 것을 다음과 같이 해석합니다. "SFSB를 직접 관리하지 않으면 누적되고 메모리가 낭비되어 결국 컨테이너가 정리하려고합니다 ... _" – jahroy
@ jahroy : 책의 텍스트를 인용했습니다 –
"읽은 책 _" – jahroy