Получая нить из контейнера? - PullRequest
       36

Получая нить из контейнера?

2 голосов
/ 06 сентября 2011

На большинстве серверов приложений спецификация J2EE Ejb запрещает создавать потоки «вручную», поскольку эти ресурсы должны управляться сервером.

Но есть ли способ получить темы от Tomcat, Glassfish, Jboss и т. Д .;таким образом получить доступ к их ThreadPool?

Ответы [ 3 ]

3 голосов
/ 06 сентября 2011

Вы можете использовать commonj WorkManager .IBM и BEA предложили предоставить стандартные средства для выполнения этой задачи (доступ к потокам, управляемым контейнером).

Хотя он не был включен в фактическую спецификацию, для большинства контейнеров доступны реализации.

1 голос
/ 06 сентября 2011

Легальным способом получения потоков из контейнера является использование JCA (Java Connector Architecture).Компонент, который вы реализуете с использованием этой технологии, называется «адаптером ресурсов» и упакован в файл rar.

Реализация довольно многословна, но не слишком сложна в простых случаях.Итак, удачи.

0 голосов
/ 06 сентября 2011

Я видел по крайней мере один служебный класс для того, чтобы овладеть пулом потоков Tomcat, но не стоит идти по этому пути. Эти потоки создаются для обслуживания запросов вашего EJB или сервлета, а не для поддержки EJB или сервлета. Каждый, который вы берете, - это просто еще один поток, который не будет доступен для запросов на обслуживание контейнера.

Возможно, вы могли бы просто добавить статический ThreadPool и использовать статический инициализатор, чтобы обойти спецификацию EJB на этом, но вам, очевидно, нужно убедиться, что код потока работает хорошо, иначе он действительно может испортить ваш EJB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...