Стратегия слияния Java-приложений в одном - PullRequest
0 голосов
/ 16 мая 2011

Ситуация: 2 небольших java-приложения, оба из которых подключаются к удаленному сервису и отправляют туда некоторые данные (первое приложение прослушивает локальный сокет, обрабатывает данные, отправляет их для проверки на удаленный сервис и обрабатывает ответ; второе приложение запускается в назначенное время, обрабатывать некоторые данные для базы данных и отправлять эти данные в удаленный сервис). Проблема в том, что удаленный сервис допускает только одно соединение (это соединение является сеансом SMPP), что означает, что если одно приложение запущено, а другое приложение запускается и пытается установить соединение, то оно плохое вещи будут происходить ...

Идея состоит в том, чтобы объединить эти 2 приложения в 1 (может быть, есть другие решения?) И создать некоторую функциональность рабочего процесса управления, которая будет отвечать за управление приложениями во избежание коллизий при подключении к удаленному сервису. Может кто-нибудь дать мне какой-нибудь совет по поводу этой идеи? Может быть, есть какой-то шаблон проектирования, который позволяет мне избежать некоторых ловушек, когда я буду это реализовывать? (было бы еще лучше, если бы было несколько приложений с открытым исходным кодом, которые решали бы подобные проблемы, чтобы я мог просматривать исходный код и собирать некоторую полезную информацию).

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Оберните данные в классы вместе с необходимыми метаданными.

Поместите ваши приложения в отдельные потоки и вместо отправки данных добавьте их в очередь .

Затем в другом потоке прочитайте очередь и отправьте данные из очереди в службу.

Я бы попробовал BlockingQueue (http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/BlockingQueue.html).

1 голос
/ 16 мая 2011

Наиболее очевидное решение - написать простой обратный прокси-сервер, который будет собирать запросы в очередь и отправлять их один за другим в вашу удаленную службу. Или прокси может запускать новый экземпляр службы для каждого запроса. http://en.wikipedia.org/wiki/Reverse_proxy

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