2009-08-17 4 views
3

Java 응용 프로그램 서버에 MDB (Message Driven Bean)가 있다고 가정합니다. MDB는 JMS 대기열에서 메시지를 수신하여 메시지 처리기로 전달합니다. 필자의 경우 메시지 프로세서는 방대한 초기화를 필요로하는 매우 무거운 객체이므로 각 메시지를 처리하기 위해 새 메시지를 생성하고 싶지는 않습니다. 대신에 나는 미리 메시지 프로세서 풀을 만들어 메시지 처리에 사용하고 싶다.Java 응용 프로그램 서버에서 사용자 지정 개체 풀을 만드는 방법

내 질문은 : J2EE 응용 프로그램 서버에서이 풀을 빌드하는 '올바른'방법은 무엇입니까? 모든 서버에 사용자 정의 (비 연결) 객체 풀을 정의 할 수있는 기본 제공 지원이 있습니까? 나는 수영장을 싱글 톤 (singleton)으로 채우고 최상의 것을 희망하기 전에이 패턴에 대한 기본 제공 지원을 활용하고 싶습니다. 특히 :

  • 풀을 정의/인스턴스화하는 방법은 무엇입니까?
  • 풀에 어떻게 액세스합니까? JNDI?
  • 앱 서버는 어떤 관리 기능을 제공합니까?

일반적으로 개체 풀을 구현하는 방법을 알고 있습니다. 제 질문은 대부분 J2EE 응용 프로그램 서버에 풀을 만드는 것에 관한 것입니다.

내가 글래스 피시를 사용하여 계획입니다

하지만 보스 또는 뭔가 다른이 쉽게한다면 나는 "유연 해요.

감사합니다!

답변

1

당신은 Apache Commons Pool을 시도해 볼 수도 있습니다,이 응용 프로그램 오브젝트 풀링에 대한 일반화 된 메커니즘의 .

0

자바 5는이 작업을 수행 할 수있는 Executor API와 함께 제공됩니다. 자체는 일반적으로 대부분의 응용 프로그램 서버에서 풀링 된 개체로 관리

+0

이것이 내 문제를 어떻게 해결하는지, 특히 J2EE 응용 프로그램 서버의 컨텍스트에서 확실하지 않습니다. –

+0

앱 서버에서 애플리케이션의 시작/중지를 실행 프로그램과 동기화하면 작동합니다. –

4

EJB를.

응용 프로그램을 구현하는 가장 확실한 방법은 MDB 자체를 메시지 프로세서로 사용하고 응용 프로그램 서버 배포 구성을 사용하여 풀링을 구성하는 것입니다. 물론 실제로 사용하는 서버에만 해당됩니다.

+0

시도해 보겠습니다. 얼마나 많은 컨트롤을 얻을 지 궁금해. 예를 들어 일정 기간 동안 사용하지 않으면 AS는 MDB 풀을 비 웁니다. 다음에 메시지를 수신 할 때 또 다른 긴 초기화 프로세스가 필요합니까? –

+0

이것은 실제로 AS와 동일합니다. 저의 주요 경험은 JBoss와 Weblogic입니다. 둘 다 부동화 및 폐기 정책은 물론 풀 크기와 동작을 사용자 정의 할 수 있습니다. 저는 GlassFish가 다르지 않다고 생각합니다. http://docs.sun.com/app/docs/doc/820-7695/beaiu?a=view에서 관련 설명서를 찾을 수 있습니다. –