Latest web development tutorials

Service Locator модели

Service Locator шаблон (шаблон Service Locator) для использования в позиционировании мы хотим использовать JNDI служб поиска, когда. Принимая во внимание JNDI подстановок высокую цену за услугу, в Service Locator шаблонов в полной мере использовать технологии кэширования. В первом запросе службы, службы в локатора службы JNDI поиска, и кэширует объект службы. При повторном запросе тот же сервис, локатор службы выглядит в своем кэше, что может повысить производительность приложений в значительной степени. Следующее является объектом данного шаблона проектирования.

  • Сервис (Service) - услуги на самом деле обработку запроса.Ссылки на эти услуги можно найти на сервере JNDI.
  • Контекст / исходный контекст - контекст JNDI с услугой вы хотите найти ссылку.
  • Локатор службы (Service Locator) - служба поиска через JNDI поиск и служб кэширования , чтобы получить единую точку контакта службы.
  • Кэш (Cache) - ссылка на услуги хранения кэша, для того , чтобы повторно использовать их.
  • Клиент (Client) - клиент объект вызов службы через ServiceLocator.

реализация

Мысоздадим,InitialContext поискасервиса,кэш, Сервис как субъект представляет собой различные объекты.Service1иService2представляют услуги сущностей.

ServiceLocatorPatternDemo,наш демонстрационный класс здесь в качестве клиента, будет использоваться для демонстрацииServiceLocatorобслуживания шаблон проектирования локатор.

Service Locator модели UML диаграмма

Шаг 1

Создание сервисного интерфейса Service.

Service.java

открытый интерфейс Service {
   Строка GetName общественности ();
   общественного недействительными выполнить ();
}

Шаг 2

Создайте объект сервиса.

Service1.java

Открытый класс Service1 реализует службу {
   общественного недействительными выполнить () {
      System.out.println ( "Выполнение Service1");
   }

   @Override
   Строка GetName общественности () {
      вернуть "Service1";
   }
}

Service2.java

Открытый класс Service2 реализует службу {
   общественного недействительными выполнить () {
      System.out.println ( "Выполнение сервис2");
   }

   @Override
   Строка GetName общественности () {
      вернуть "сервис2";
   }
}

Шаг 3

Создание запроса для JNDI InitialContext.

InitialContext.java

Открытый класс InitialContext {
   поиск общественного объекта (String jndiName) {
      если (jndiName.equalsIgnoreCase ( "Service1")) {
         System.out.println ( "Глядя вверх и создания нового объекта Service1");
         вернуть новый Service1 ();
      } Иначе, если (jndiName.equalsIgnoreCase ( "сервис2")) {
         System.out.println ( "Глядя вверх и создания нового объекта сервис2");
         вернуть новый сервис2 ();
      }
      возвращать нуль;		
   }
}

Шаг 4

Создание кэша Cache.

Cache.java

импорт java.util.ArrayList;
импорт java.util.List;

Открытый класс Cache {

   частные Список <Услуги> услуги;

   общественного кэша () {
      услуги = новый ArrayList <Сервис> ();
   }

   общественная служба GetService (String ServiceName) {
      для (услуга Услуга:) {
         если (service.getName (). equalsIgnoreCase (ServiceName)) {
            System.out.println ( "Возвращение кэшируются" + ServiceName + "объект");
            обслуживание возвращения;
         }
      }
      возвращать нуль;
   }

   общественного недействительными addService (Service newService) {
      булево существует = ложь;
      для (услуга Услуга:) {
         если (service.getName (). equalsIgnoreCase (newService.getName ())) {
            существует = верно;
         }
      }
      если (! существует) {
         services.add (newService);
      }
   }
}

Шаг 5

Создать локатор сервиса.

ServiceLocator.java

Открытый класс ServiceLocator {
   собственный кэш статического кэша;

   статические {
      кэш = новый кэш ();		
   }

   общественности статической служба GetService (String jndiName) {

      Сотрудники службы = cache.getService (jndiName);

      если (услуга! = NULL) {
         обслуживание возвращения;
      }

      InitialContext контекст = новый InitialContext ();
      Услуги service1 = (Service) context.lookup (jndiName);
      cache.addService (service1);
      вернуть Service1;
   }
}

Шаг 6

Используйте для демонстрации поискасервисашаблон проектирования службы локатора.

ServiceLocatorPatternDemo.java

Открытый класс ServiceLocatorPatternDemo {
   государственной статической силы основных (String []) {агдз
      Сотрудники службы = ServiceLocator.getService ( "Service1");
      service.execute ();
      обслуживание = ServiceLocator.getService ( "Service2");
      service.execute ();
      обслуживание = ServiceLocator.getService ( "Service1");
      service.execute ();
      обслуживание = ServiceLocator.getService ( "Service2");
      service.execute ();		
   }
}

Шаг 7

Проверьте выход.

Глядя вверх и создания нового объекта Service1
Выполнение Service1
Глядя вверх и создания нового объекта сервис2
Выполнение сервис2
Возвращение кэшированный объект Service1
Выполнение Service1
Возвращение кэшированный объект сервис2
Выполнение сервис2