복붙노트

[SPRING] Stateless 세션 빈을 통해 Stateful 세션 빈을 사용할 때?

SPRING

Stateless 세션 빈을 통해 Stateful 세션 빈을 사용할 때?

상태있는 세션 빈은 다음과 같이 정의됩니다.

상태 비 저장 세션빈은 다음과 같이 정의됩니다.

Stateful Session Bean에 비해 Stateless Session Bean을 사용하면 다음과 같은 이점이 있습니다.

그래서 마음에 떠오르는 질문은 stateful session bean을 사용해야 할 때입니다. 이 문제에 대한 순진한 이해를 위해, 가능한 한 상태 비 저장 세션빈을 사용해야합니다.

Stateful Session Bean을 사용해야하는 후보는 무엇입니까? 좋은 예가 있습니까?

세션 빈

해결법

  1. ==============================

    1.먼저 bean이 서버에서 어떻게 생성되고 처리되는지 이해해야한다.

    먼저 bean이 서버에서 어떻게 생성되고 처리되는지 이해해야한다.

    상태 비 저장 세션빈의 경우 서버는 풀의 인스턴스 양을 다양하게 유지할 수 있습니다. 클라이언트가 그러한 무 상태 빈을 요청할 때마다 (예를 들어 메소드를 통해) 무작위 인스턴스가 선택되어 그 요청을 처리합니다. 즉, 클라이언트가 두 개의 후속 요청을 수행하면 상태 비 저장 빈의 두 인스턴스가 요청을 처리 할 가능성이 있습니다. 사실 두 요청 간에는 대화 상태가 없습니다. 또한 클라이언트가 사라지면 상태없는 Bean은 파괴되지 않고 다른 클라이언트의 다음 요청을 처리 할 수 ​​있습니다.

    반면에 상태있는 세션 빈은 클라이언트와 밀접하게 연결되어 있습니다. 각 인스턴스는 작성되어 단일 클라이언트에 바인드되며 해당 특정 클라이언트의 요청 만 제공합니다. 따라서 상태 유지빈에 대해 두 번 연속 요청을하면 요청은 항상 동일한 빈 인스턴스에서 제공됩니다. 즉, 요청간에 대화 상태를 유지할 수 있습니다. 라이프 사이클이 끝나면 클라이언트는 remove 메소드를 호출하고 빈은 가비지 수집을 위해 폐기 / 준비 중입니다.

    그것은 주로 대화 상태를 유지할 것인지 여부에 달려 있습니다. 예를 들어, 두 개의 숫자를 더하고 결과를 반환하는 메소드가 있다면, 한 번만 작동하기 때문에 비 상태 빈을 사용합니다. 이 메서드를 다른 숫자와 함께 두 번째 호출하면 이전 추가 결과에 더 이상 관심이 없습니다.

    그러나 예를 들어, 클라이언트가 수행 한 요청 수를 계산하려면 상태 기반 빈을 사용해야합니다. 이 시나리오에서는 클라이언트가 빈 메소드를 요청한 빈도를 알아야하기 때문에 빈 (예 : 변수)을 사용하여 대화 상태를 유지해야합니다. 여기에 상태 비 유지 빈을 사용한다면 클라이언트의 요청은 매번 다른 빈에서 제공되어 결과가 엉망이됩니다.

  2. ==============================

    2.Stateful 세션 빈을 사용하는 가장 좋은 예는 사용자가 구매하고자하는 모든 제품을 저장하는 장바구니에 대한 것입니다.

    Stateful 세션 빈을 사용하는 가장 좋은 예는 사용자가 구매하고자하는 모든 제품을 저장하는 장바구니에 대한 것입니다.

  3. from https://stackoverflow.com/questions/18000431/when-to-use-stateful-session-bean-over-stateless-session-bean by cc-by-sa and MIT license