Stateless Session Bean이 단일 스레드 인 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/29734

  •  09-06-2019
  •  | 
  •  

문제

내 이해에 따라 상태 비 저장 세션 빈은 비즈니스 로직을 코딩하는 데 사용됩니다.인스턴스가 여러 요청에서 공유되기 때문에 인스턴스 변수에 데이터를 저장할 수 없습니다.그래서 그들은 Singleton 수업과 더 비슷해 보입니다.그러나 차이점은 모든 요청에 대해 상태 비 저장 세션 빈의 개별 인스턴스를 생성 (또는 풀에서 재사용)하는 것입니다.

인터넷 검색을 한 후 Java EE 사양이 단일 스레드라고 가정하는 이유를 찾을 수있었습니다.하지만 단일 스레드 로 지정된 이유를 알 수 없습니까?

도움이 되었습니까?

해결책

SLSB는 TX Context로 인해 단일 스레드이며, Principal은 호출 될 때 빈 인스턴스와 연결됩니다.이러한 빈은 풀링되며 최대 풀 크기에 도달하지 않는 한 별도의 스레드에서 처리됩니다 (공급 업체에 따라 다름).

SLSB가 스레드로부터 안전하게 설계 되었다면 모든 호출은 Tx Context, Security Context 정보 등을 포함하는 요청 정보가있는 서블릿 doGet / Post처럼 보였을 것입니다. 따라서 적어도 코드는 깨끗해 보입니다 (개발자에 따라 다름).

다른 팁

상태 비 저장 세션 빈이 단일 스레드 인 주된 이유는 컨테이너에 대해 확장 성을 높이기 위해서입니다.컨테이너는 런타임 환경에 대한 많은 단순화 가정을 만들 수 있습니다.두 번째 이유는 빈이 다른 스레드 컨텍스트에서 호출되지 않기 때문에 개발자가 비즈니스 로직의 동기화 또는 재진입에 대해 걱정할 필요가 없기 때문에 개발자의 삶을 더 쉽게 만드는 것입니다.

원래 EJB 1.0 사양 검토에서 논의 된 이유를 기억합니다.사양의 목표 섹션을 살펴 보겠습니다. http://java.sun.com/products/ejb/docs.html 사양 목록을 참조하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top