Я знаю «нормальную» Java, но я новичок в мире сервлетов, контейнеров и т. Д. Из-за этого я не уверен, какой подход является наиболее разумным.
Ситуация: я создал сервлет, который получаетинформация и сохраняет ее в базе данных.Эта база данных читается другими приложениями.
Теперь мне нужно приложение, которое получает точно такую же информацию и сохраняет ее в той же базе данных.Однако это новое приложение должно получить эту информацию с другого сервера (для этого я буду использовать httpClient), а не передаваться на него.Оба приложения будут сосуществовать.
Для этих новых приложений я вижу следующие два варианта:
Создайте отдельное приложение.Для этого я могу скопировать и вставить большую часть существующего внутреннего кода, но мне нужно будет внести некоторые изменения (контейнер сервлета предлагает контекст, простое объединение в пул соединений с базой данных и т. Д.) Кроме того, мне может понадобиться использовать некоторую оболочку, чтобы это моглоработать как настоящий демон, которого я могу запустить, но также изящно останавливать / перезапускать и т. д.
Сделать новое приложение частью сервлета.То есть: просто запустите новый поток в init () сервлета, который запустит новое приложение.Это позволило бы мне повторно использовать весь имеющийся у меня бэкэнд-код без необходимости переписывать его.Мне нужно только написать код, который выполняет HTTP-GET запросы на другой сервер.При таком подходе также будет проще запускать и останавливать службу, потому что для этого я могу использовать контейнер сервлета.
Некоторая информация о проекте: внутренний код, который анализирует и записываетданные в базу данных имеют несколько потоков, но не очень сложны.Написание кода для оригинального сервлета заняло около недели работы.С существующей кодовой базой я чувствую, что это новое приложение, вероятно, должно работать не более 1, 2 дней.
На мой взгляд, вариант 2 проще.Но мне кажется, что я «злоупотребляю» сервлетами.Итак, мой вопрос: не являются ли сервлеты для приложений, которые должны обрабатывать запросы, а не для приложений, которые делают запрос?Есть ли какие-то огромные недостатки, которых я здесь не вижу?Какой вариант будет наиболее целесообразным?
tl; dr: Могу ли я написать приложение, которое не обслуживает запросы в качестве сервлета?