что такое одноэлементный класс?Может ли это помочь мне запустить один экземпляр класса для двух связанных служб?

StackOverflow https://stackoverflow.com/questions/1494642

Вопрос

Это может показаться сложным, но я все равно спрошу:

Я запускаю службу А который использует класс Икс.Я хочу запустить еще один сервис Б который использует классы А помимо новых классов.

Услуга А уже бежит.Я делаю горячее развертывание Сервиса Б.

Вот настоящий вопрос - Уилл Сервис Б использовать тот же экземпляр класса Икс или отдельный экземпляр.Как мне может помочь класс Singleton?

Это было полезно?

Решение

Каждая служба будет работать в собственном пространстве процессов операционной системы (ОС), и каждое пространство процессов имеет свои собственные экземпляры классов.Класс «singleton» обычно кодируется с использованием статических полей в классе, которые будут локальными для пространства процесса, в котором выполняется код, поэтому нет, они не будут совместно использовать синглтоны.Каждый получит свой экземпляр.

Однако вы можете делать то, что пытаетесь сделать, используя какой-либо внешний общий процесс синхронизации (например, предоставляя синглтон поверх любого эквивалента Java для .Net Remoting (или WCF) - открытой для сети конечной точки, которая закодирована для использования Singleton, и обе ваши службы «подключаются» и используют этот удаленно доступный Singleton)

Другие советы

Я не знаком с подробностями запуска веб-сервисов Java, но если они оба работают в одной виртуальной машине, то я думаю, что классы будут использоваться всеми приложениями в виртуальной машине, и, следовательно, статические поля будут общими.Поскольку шаблон Singleton обычно реализуется путем присоединения одного экземпляра к статическому члену, Singleton будет общим.

Это основано на: Беседы о чистом коде - «Глобальное состояние и синглтоны»

Вы сможете протестировать это, написав два простых веб-сервиса.Один, который что-то делает с синглтоном, например устанавливает флаг, а другой проверяет его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top