2015-07-07 3 views
0

Мое приложение использует Struts 1.x и он работает на WAS ..Struts 1.x действие вызывается несколько раз

Все классы действий работают отлично, кроме одного, в котором я нажимаю на одну кнопку и одно действие (который, как ожидается, завершится через 1 час) вызывается, а затем начинает выполнение. Проблема возникает, когда одно и то же действие вызывается через несколько минут без какого-либо нажатия кнопки или изменения кода. Это происходит каждые несколько минут за n раз. ..

Если у кого есть идеи, сообщите мне.

+0

Используете ли вы сервер IBM HTTP или другой веб-сервер с настройкой WebSphere Plugin? – Gas

ответ

0

Запрос, который принимает 1 час для завершения не является нормальным: вы должны пересмотреть эту функциональность.

Вкратце, у вас есть эта проблема, потому что запрос занимает слишком много времени. Для технического объяснения причины вашей проблемы см Why does the user agent resubmit a request after server does a TCP reset?

Решения: создать отдельный поток (или пул параллельных потоков, если это возможно), чтобы обработать затянувшееся вычисление и отправить немедленно страничный ответ поговорку " Запрос принят ". Эта страница также может использовать JavaScript для отправки периодически «завершено ли?» запрос на сервер. Вы также должны предоставить механизм для запроса ожидающих запросов, поэтому пользователи, закрывающие браузер, не дожидаясь окончательного «Да, завершены!». ответ может получить результат, когда они захотят.

+0

Я считаю, что вы ссылаетесь на создание потока внутри метода execute ... но этот метод execute вызывается несколько раз. – androidDev

+0

Метод вызывается несколько раз, потому что он принимает слишком много (см. Ссылку в моем ответе). Если вы создаете отдельный поток для долговременного вычисления, действие Struts может завершиться очень быстро, не дожидаясь другого потока. – Pino

+0

Но его не дожидаются так долго ..execute метод вызывается через каждые 5 минут .. и этот сценарий повторяется примерно в 9-10 раз. – androidDev

Смежные вопросы