2009-08-17 6 views
3

Предположим, что на сервере приложений Java есть ведомый бит (MDB). MDB получает сообщение из очереди JMS и передает его в процессор сообщений. В моем случае процессор сообщений является чрезвычайно тяжелым весовым объектом, который требует обширной инициализации, поэтому я не хочу создавать новую для обработки каждого сообщения. Вместо этого я хотел бы создать пул обработчиков сообщений заблаговременно и использовать их для обработки сообщений.Как создать пулы пользовательских объектов на сервере приложений Java

Итак, мой вопрос: что такое «правильный» способ создания этого пула на сервере приложений J2EE? У любого сервера есть встроенная поддержка для определения настраиваемых (не связанных) пулов объектов? Я хотел бы использовать любую встроенную поддержку для этого шаблона, прежде чем я просто вставлю пул в одноэлемент и надеюсь на лучшее. В частности:

  • Как определить/создать пул?
  • Как получить доступ к пулу? JNDI?
  • Какие возможности управления предоставляются сервером приложений?

Я знаю, как реализовать пул объектов в целом. Мой вопрос в основном связан с созданием пула на сервере приложений J2EE.

Я планирую использовать Glassfish, но я "м гибким, если JBoss или что-то еще сделать это проще.

Спасибо!

ответ

1

Вы можете попробовать Apache Commons Pool, это обобщенный механизм для объединения объектов приложения .

0

Java 5 поставляется с Executor API, что может это сделать.

+0

Я не уверен, как это решает мою проблему, особенно в контексте сервера приложений J2EE. –

+0

Вам просто нужно синхронизировать старт/стоп вашего приложения на сервере приложений с исполнителем, и он должен работать. –

4

EJBs сам, как правило, управляются как объединенные объекты большинства серверов приложений.

Наиболее очевидным способом реализации приложения является использование самого MDB в качестве процессора сообщений, а затем настройка пула с использованием конфигурации развертывания сервера приложений, которая, конечно же, специфична для сервера, который вы фактически используете.

+0

Я попробую. Интересно, сколько контроля я получу. Например, если есть период бездействия, будет ли AS пуст пулом MDB, требующий другого длительного процесса инициализации при следующем входе в сообщение? –

+0

Это действительно AS специфический. Мой главный опыт работы с JBoss и Weblogic, которые позволяют настраивать политики пассивации и удаления, а также размер и поведение пула. Я думаю, GlassFish не отличается, и вы можете найти соответствующую документацию здесь: http://docs.sun.com/app/docs/doc/820-7695/beaiu?a=view –