Получение потока из контейнера?
На большинстве серверов приложений спецификация J2EE Ejb запрещает создавать потоки "вручную", поскольку эти ресурсы должны управляться сервером.
Но есть ли способ получить темы от Tomcat, Glassfish, Jboss и т. Д.; таким образом получить доступ к их ThreadPool?
3 ответа
Вы можете использовать commonj WorkManager. IBM и BEA предложили предоставить стандартные средства для выполнения этой задачи (доступ к потокам, управляемым контейнером).
Хотя это не было включено в фактическую спецификацию, для большинства контейнеров доступны реализации.
Легальный способ получения потоков из контейнера - использование JCA (Java Connector Architecture). Компонент, который вы реализуете с использованием этой технологии, называется "адаптером ресурсов" и упакован в файл rar.
Реализация довольно многословна, но не слишком сложна в простых случаях. Удачи.
Я видел по крайней мере один служебный класс для того, чтобы овладеть пулом потоков Tomcat, но не стоит идти по этому пути. Эти потоки создаются для обслуживания запросов вашего EJB или сервлета, а не для поддержки EJB или сервлета. Каждый, который вы берете, является просто еще одним потоком, который не будет доступен для запросов на обслуживание контейнера.
Вероятно, вы могли бы просто добавить статический ThreadPool и использовать статический инициализатор, чтобы обойти спецификацию EJB на этом, но вам, очевидно, нужно убедиться, что код потока работает хорошо, иначе он действительно может испортить ваш EJB.