2009-12-10 3 views
4

스테이트리스 세션 빈은 같은 메소드를 가진 일반 클래스보다 무엇을 제공합니까? 상태 유지 세션 빈을 상자 밖으로 배포 할 수 있으며 컨테이너는 상태가 클라이언트와 동일하게 보이는지 확인합니다. 상태없는 세션 빈을 사용하면 정상적인 클래스로는 얻을 수없는 것이 무엇입니까?스테이트리스 세션 빈은 일반 클래스를 통해 무엇을 제공합니까?

분산 환경이있는 경우 EJB 계층이 장애 조치를 수행 할 수 있습니까? 하나의 서버 만 내 응용 프로그램에 사용하고 원격 인터페이스를 사용하지 않으면 어떤 이점이 있더라도 스테이트리스 세션 빈의 로컬 또는 원격 인스턴스를 가져올 수 있습니다.

답변

5

스테이트리스 세션 빈은 응용 프로그램 컨테이너에 제공되는 서비스의 의도에 대한 지식을 응용 프로그램 컨테이너에 제공합니다. 상태가 없으므로 응용 프로그램 컨테이너는 언제든지 콩을 파괴하고 다음 번에 콩을 다시 만들도록 결정할 수 있습니다.

이러한 의미가 없으면 응용 프로그램 컨테이너는 속도/메모리/기타 용도로 응용 프로그램을 최적화 할 수 없습니다. 따라서 상태 비 저장 세션빈은 대부분 POJO와 유사하지만 응용 프로그램 서버에 대한 추가 "힌트"를 제공합니다.

EJB3 스펙을 사용하여 상태 비 저장 세션빈을 구현하는 방법을 살펴보면 일반적인 POJO (추가 주석 이외에)와 많이 유사합니다.

+0

이것은 EJB를 가지고 있어도 문제가되지 않는다는 것을 의미합니다. 때때로 개발자는 컨테이너보다 작업을 최적화하는 방법에 대해 더 많이 알고 있습니다. –

+0

@EyadEbrahim : 개발자가 코드가 실행되는 환경에 대한 충분한 지식이있는 경우에만 EJB 컨테이너의 전체 개념은 * 여러 * 응용 프로그램이 동시에 공존 할 수 있다는 것입니다 (트랜잭션과 같은 모든 종류의 서비스 제공 제외). EJB 컨테이너처럼 환경에 대한 충분한 지식이 없으면 코드 최적화에 대한 이유를 판단하는 것이 훨씬 덜 명백합니다. – jawi

8

EJB는 선언적 보안, 트랜잭션 및 리모팅을 제공합니다. EJB 메소드 중 하나를 호출하면 위의 기능 레이어를 제공하는 인터셉터 스택을 실제로 통과합니다.

평범한 오래된 자바 객체는 그렇게하지 않을 것입니다. 물론 이 필요하지 않은 경우이 필요합니다. 그러면 EJB가 필요하지 않습니다.

관련 문제