문제

EJB 2.1 SLSB로 구현 된 심하게 사용되는 서비스 객체를 상상해보십시오. 또한 상태가 없기 때문에 그 자체로는 스레드-안전한 것으로 생각됩니다. 모든 공개 방법은 거래 (CMT를 통해)이며 대부분은 단순히 거래가 필요하지만 일부는 새로운 거래가 필요합니다.

이 SLSB를 진정한 싱글 톤 포조 (예 : DI 프레임 워크 사용)로 변환하면 응용 프로그램의 확장 성에 어떤 영향을 미칩니 까? 서비스가 SLSB 일 때, EJB 컨테이너는 각 클라이언트가 자체 사본을 얻을 수있는 인스턴스 풀을 관리 할 것이므로 싱글 톤 Pojo로 전환하는 것이 단일 인스턴스에 대해 어떤 종류의 경합을 소개 할 것인지 궁금합니다.

FWIW,이 서비스의 방법 중 어느 것도 없습니다 synchronized.

설명 : SLSB를 Pojo로 변환하려는 나의 동기는 객체의 수명주기 (True Singleton vs Container-Managed)와 코드 자체 (하나의 인터페이스 및 1 개의 주석화 된 pojo, 3 개의 인터페이스, 1 개의 Bean 클래스 및 묶음의 단순성입니다. ejb-jar.xml에서 xml).

또한 FWIW, 해당 서비스는 JBoss 3.X에서 실행되는 종료 된 웹 앱의 구성 요소 중 하나입니다.

도움이 되었습니까?

해결책

Pojo가 진정으로 무국적 상태이거나 대화 상태가 없다면 (즉, 상태가 불변) 성능이 악화되지 않으며 컨테이너의 수영장이 아닌 DI 프레임 워크에서 한 인스턴스를 실제로 사용하고 있기 때문에 약간 개선 할 수도 있습니다. . (수영장조차도 높은 하중 하에서 경합으로 고통 받고 있습니다.)

디자인별로 스레드-안전한 객체에 동기화가 필요하지 않습니다. 경합이 없을 것입니다. 스레드는 동기화없이 POJO에서 메소드를 자유롭게 실행할 수 있습니다.

Pojo 만 사용하면 앱에서 무슨 일이 일어나고 있는지 알 수 있으며 무대 뒤에서 진행되는 숨겨진 "컨테이너 매직"이 없을 수 있습니다.

다른 팁

당신의 pojo는 완벽 해 보입니다.

따라서 아니요, 경합이 없을 것입니다. 확장 성은 완벽 할 것입니다.

  • 추가 비용이 없습니다.
  • 몇 가지 대신 하나의 인스턴스가 있기 때문에 더 적습니다.
  • 수영장의 한계에 도달하지 않기 때문에 확장 성이 더 좋습니다 (가지고 있지 않음).
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top