Я пишу веб-приложение, которое работает на GlassFish 2.1.1. На самом деле это приложение содержит только один сессионный компонент без сохранения состояния, который использует классы из сторонних библиотек. Экземплярами этих классов являются сервисы, которые создают много потоков с самостоятельным управлением во время выполнения. Я прочитал в EJB Restrictions, что создание потоков в EJB не является хорошей идеей.
Я довольно новичок в Java EE и EJB, но мне интересно, как можно использовать сторонние библиотеки, которые не разработаны для EJB в среде EJB. Я хотел бы знать, как я могу встроить этот сторонний сервис, который является простым одноэлементным, в мое приложение Java EE, используя EJB для сохранения.
Единственная идея, которая у меня есть, - создать экземпляр службы в сервлете и передать экземпляр с помощью вызова метода в EJB. Будет ли это лучше?
спасибо заранее
Alex
Еще несколько подробностей о моем проекте:
Библиотека, которую я должен использовать, определенно не создана для EJB-контейнера. Однако у меня нет выбора. Я также немного изменил свой дизайн, который я пытаюсь объяснить кратко.
Основной целью моего веб-приложения является обработка заданий. В основном это похоже на сервер CI Hudson. Работа - это что-то другое, а не сборка задач. Тем не менее, задания могут быть запущены через веб-интерфейс. Если пользователь нажимает кнопку запуска, в таблицу базы данных вставляется только запись с состоянием. Таблица базы данных используется в качестве очереди выполнения. Другой компонент, TimerBean, будет периодически проверять базу данных и вызывать инженера, который является моей библиотекой из трех сторон, для обработки этой работы. Обработка заданий отделена от клиента, и никакие транзакции не требуются.
- Сохраняет ли он состояние между вызовами методов?
Да, я должен сохранить текущую работу, чтобы отменить выполнение. Я решил это с помощью статической переменной. Я знаю, что это также то, что я не должен делать в EJB, но EJB никогда не будет использоваться для кластеризации.
- Доступ к файлам, открытие соединений?
Третья сторона библиотеки читает и пишет файлы.
- Синхронизирует ли потоки, используя общие ресурсы, например, класс
переменные? Я не знаю внутренностей сторонней библиотеки, но я полагаю, да!