Вызов потока из сервлета Java - PullRequest
1 голос
/ 23 апреля 2011

Я работаю над приложением, которое использует сервлеты для получения и установки данных для JSP, используемых конечными пользователями. Все данные обрабатываются сервлетами в состоянии сеанса перед записью в базу данных или после извлечения из базы данных.

Но некоторые из этих операций с базами данных довольно продолжительны, когда происходит много операций ввода-вывода, связанных с динамическим созданием таблиц или вставкой данных, извлечением данных из таблиц и т. Д. Для этого процесса также требуются различные сторонние продукты, такие как Weka. и Lucene; таким образом, существует значительная загрузка процессора. Я ожидаю, что некоторые из них могут занять до минуты или двух и заблокировать сеансы в это время.

Сервлеты обычно вызывают статические методы в классах для этих операций, которые затем возвращают необходимые типы данных. Так что это мой вопрос; это разумно или было бы лучше реализовать эти операции в виде потоков Java, вызываемых непосредственно из сервлетов, или мне нужен диспетчер потоков? Я нить новичка.

Пример кода для вышеперечисленного в сервлете выглядит примерно так:

        // Create Data_Miner.
        Data_Miner dm = Data_Miner_ReaderWriter.write(activeUser.getUser(), rssfodm); 

        // Create output.
        if (rssfodm.getDataMinerOutputType() == Data_Miner_Output_Type.DECISION_TREE) {
            Decision_Tree dt = Decision_Tree_ReaderWriter.write(dm); 

Оба вызова методов относятся к статическим методам в классах, содержащих методы для чтения / записи соответствующих объектов.

Спасибо

Мистер Морган.

1 Ответ

3 голосов
/ 23 апреля 2011

Используйте асинхронную обработку и что-то вроде обработчика обратного вызова и почтового ящика, куда пользователи могут возвращаться и получать результаты, когда они будут готовы.

Поскольку вы используете Java, вы также можете рассмотреть возможность использования POJO (Spring) или EJB (стандарт EJB), управляемых сообщениями JMS, для приема запросов на более длительные транзакции.

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