2012-12-21 2 views
0

AFAIK @Singleton EJB와 카운터 같은과, 페이지 뷰를 계산하기 적합 1K 페이지를 가정 해 봅시다.로드 될 때마다 각보기의 카운터를 표시하려고합니다.많은 페이지 뷰가 @Singleton

@Singleton이 충당 될 수 있습니까? 내 말은, 이것이 효율적인일까요? (많은 빈이 하나의 인스턴스를 자주 업데이트하는 빈을 가짐)

모든 웹 페이지 카운터를 관리하는 단일 인스턴스가 효율적이지 않습니다. @Singleton에 Map <ViewID, Count>를 업데이트 @RequestScoped 콩의 수천을 상상해

재배치에 지속 값을 업데이트 ... 무거운 동시성으로 이어질 것입니다, 나는 데이터베이스에 @PreDestroy (푸시 (데이터베이스에서 당겨) @PostConstruct를 사용하여 생각했다) 주석.

페이지 뷰 카운터가 각보기에 표시됩니다.

웹 페이지 수가 동적입니다.

Google 애널리틱스에서이 작업을 수행하는 것으로 알고 있지만 문제는 Java EE에서이를 확인하는 방법입니다.

응용 프로그램 서버 : 제이 보스 7.1

+0

사용중인 응용 프로그램 서버를 파악하는 데 도움이되며 일부는 통계를 수집합니다 –

+0

여전히 두 가지 해결책을 알고 싶습니다. (서버 및 싱글 톤) – jacktrades

답변

1

당신이 정말로 페이지 뷰 카운터를 구현하려면, 당신은 더 나은 다른 카운트는 응용 프로그램의 각 재배포 또는 다시 시작할 때 0부터 다시 시작됩니다, 그것은 지속 할 것입니다. 그리고 응용 프로그램이 여러 서버에 클러스터되어 있으면 숫자가 맞지 않습니다.

연습 일 경우 bean-managed concurrency을 사용하고 AtomicInteger 인스턴스를 포함하는 ConcurrentHashMap을 사용해야합니다. 이 두 클래스의 문서를 참조하여 작동 방법을 이해하십시오. 특히 putIfAbsent()에 대한 설명서 (모든 페이지를 알기 쉽고 0으로 설정된지도를 미리 채울 수없는 경우가 아니면 putIfAbsent()을 사용할 필요조차 없습니다.)).

+0

업데이트 확인, 연습이 아닙니다. – jacktrades

+0

PostConstruct는 bean 구축 후에 호출됩니다. 너 PreDestroy를 의미하는 것 같아. 나는 여전히 그렇게하지 않을 것이다. 컨테이너가 올바르게 멈추지 않으면 모든 임시 데이터가 손실되기 때문입니다. 두 번째로,이 문제를 해결할 수있는 Google 웹 로그 분석과 같은 더 나은 기능을 제공하고 훨씬 더 많은 기능을 제공하기 때문에 기성 해결 솔루션입니다. –

+0

예, 죄송합니다. 승인. Google 애널리틱스에서 방문수를 가져와 표시하려면 어떻게해야합니까? 그리고 뷰를 세는 데있어이 싱글 톤 전략/패턴 효율성에 대해 의견을 말하십시오. – jacktrades