Более общий способ ограничения количества экземпляров на одном компьютере или даже во всей сети - использование многоадресного сокета.
Использование многоадресного сокета позволяет передавать сообщения любому количеству экземпляров приложения, некоторые из которых могут находиться на физически удаленных компьютерах в корпоративной сети.
Таким образом, вы можете включить много типов конфигураций, чтобы контролировать такие вещи, как
- Один или несколько экземпляров на машину
- Один или несколько экземпляров на сеть (например, контроль установки на клиентском сайте)
Поддержка многоадресной рассылки Java осуществляется через пакет java.net с MulticastSocket & DatagramSocket , являющимся основными инструментами.
Примечание : MulticastSocket не гарантирует доставку пакетов данных, поэтому вы должны использовать инструмент, построенный поверх сокетов многоадресной рассылки, такой как JGroups . JGroups делает гарантией доставки всех данных. Это один файл jar с очень простым API.
JGroups существует уже некоторое время и имеет ряд впечатляющих применений в промышленности, например, он лежит в основе механизма кластеризации JBoss, передающего данные на все экземпляры кластера.
Чтобы использовать JGroups, ограничить количество экземпляров приложения (на компьютере или в сети, скажем, количеством лицензий, которые купил клиент) концептуально очень просто:
- При запуске вашего приложения каждый экземпляр пытается присоединиться к именованной группе, например, «My Great App Group». Вы настроите эту группу, чтобы разрешить 0, 1 или N членов
- Когда количество членов группы больше, чем настроено для него .. ваше приложение должно отказаться от запуска.