Я работаю над проектом, где мы используем Tomcat 8 в качестве сервера приложений и, следовательно, JSP и Servlets. Каждый JSP отображает вид списка проектов. Пользователь приложения имеет возможность имитировать проект. Это не так важно. Когда пользователь нажимает «simulate' кнопки, следующий процесс будет выполняться:Сервлет связи с jsp без запроса клиента
- Via Ajax (JavaScript) сервлет будет выполнен, который производит почтовый файл и сохраняет файл на жестком диске сервера
- В базе данных для соответствующего проекта будет установлен флаг 'simulation'.
- внешняя программа java (на бэкэнд) прослушивает флаг 'simulation', и если установлен флаг для проекта, внешняя программа захватывает zip-файл, хранящийся в веб-приложении
- внешняя программа Java запускает симуляцию для этого проекта.
- При моделировании внешняя программа java хранит новый zip-файл на жестком диске сервера, устанавливает флаг «hey, I'm ready» в базе данных и вызывает сервлет веб-приложения
- этого сервлет сохраняет информацию о данных в новом почтового файла в базу данных
- закончить
Так что мой вопрос: что это лучший способ, чтобы сообщить JSP, что моделирование делается? JSP по-прежнему показывает, что проект находится в процессе моделирования. Моя текущая идея такова:
Я мог периодически отправлять запрос Ajax на сервер, чтобы проверить базу данных для флага «hey I'm ready», и если он установлен, я могу отобразить результат на JSP , Но у меня такое ощущение, что есть более разумные решения.
Возможно, я мог бы использовать последний вызов сервлета (см. Пункт 5), чтобы как-то сообщить JSP, что симуляция выполнена? Проблема в том, что этот сервлет не вызывается клиентом, а внешней программой java.
Есть ли у вас какие-либо предложения? Или есть какая-то технология, о которой я должен прочитать?
спасибо.
Спасибо за ваш ответ. Но проблема в том, что у меня есть два вызова сервлета. Первый на этапе 2. Второй и шаг 5. Первый сервлет вызывается клиентом, который использует веб-приложение. Первый сервлет просто устанавливает флаг в базе данных и возвращает «успех» клиенту. Но второй сервлет вызывается внешней java-программой (которая находится на сервере). Мне нужно как-то узнать, когда второй сервлет сделан. – David
это должен быть цепной вызов, потому что логика приложения не в порядке. подумайте об этом так. так как вы хотите выполнить задание, вам нужно нажать сервлет и позволить ему делать все, что захочет, и вернуться, когда закончится работа. назовем его «Фасад», например. Сервлет может вызывать другие сервлеты и т. Д. Существует еще один шаблон программирования publish/subscribe, который вы можете использовать, но вам нужно настроить множество материалов для push-уведомлений для клиентского приложения. – arisalexis