|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class ServiceRegistry extends Object
Служба является известным набором интерфейсов и (обычно краткий обзор) классы. Поставщик услуг является определенной реализацией службы. Классы в провайдере обычно реализуют интерфейс или разделяют на подклассы class, определенный службой непосредственно.
Поставщики услуг сохранены в одной или более категориях, каждая из которых определяется class интерфейса (описанный a Class объект), который должны реализовать все его элементы. Набор категорий может быть изменен динамически.
Только единственный экземпляр данного листа class (то есть, фактический class, возвращенный getClass(), в противоположность любым наследованным классам или интерфейсам), может быть зарегистрирован. Таким образом, предположите что com.mycompany.mypkg.GreenServiceProvider class реализует com.mycompany.mypkg.MyService интерфейс. Если a GreenServiceProvider экземпляр регистрируется, он будет сохранен в категории, определенной MyService class. Если новый экземпляр GreenServiceProvider регистрируется, это заменит предыдущий экземпляр. Практически, объекты поставщика услуг обычно являются одиночными элементами, таким образом, это поведение является соответствующим.
Объявить поставщика услуг, a services подкаталог помещается в пределах META-INF каталог, который присутствует в каждом файле JAR. Этот каталог содержит файл для каждого интерфейса поставщика услуг, у которого есть один или более классов реализации, существующих в файле JAR. Например, если файл JAR, содержавший class, называют com.mycompany.mypkg.MyServiceImpl который реализует javax.someapi.SomeService интерфейс, файл JAR содержал бы названный файл:
META-INF/services/javax.someapi.SomeServiceсодержа строку:
com.mycompany.mypkg.MyService
Классы поставщика услуг должны быть должны быть легкими и быстрыми, чтобы загрузиться. Реализации этих интерфейсов должны избежать сложных зависимостей от других классов и от собственного кода. Обычный образец для более сложных служб должен зарегистрировать легкий прокси для тяжелой службы.
Приложение может настроить содержание реестра, как оно считает целесообразным, пока у него есть соответствующее разрешение времени выполнения.
Для получения дополнительной информации при объявлении поставщиков услуг, и формата JAR вообще, см. Спецификацию Файла JAR.
RegisterableService| Модификатор и Тип | Класс и Описание |
|---|---|
static interface |
ServiceRegistry. Фильтр
Простой интерфейс фильтра, используемый
ServiceRegistry.getServiceProviders выбрать провайдеров, соответствующих произвольный критерий. |
| Конструктор и Описание |
|---|
ServiceRegistry(Iterator<Class<?>> categories)
Конструкции a
ServiceRegistry экземпляр с рядом категорий, взятых от categories параметр. |
| Модификатор и Тип | Метод и Описание |
|---|---|
boolean |
contains(Object provider)
Возвраты
true если provider в настоящий момент регистрируется. |
void |
deregisterAll()
Вычеркивает из списка всех в настоящий момент зарегистрированных поставщиков услуг от всех категорий.
|
void |
deregisterAll(Class<?> category)
Вычеркивает из списка весь объект поставщика услуг, в настоящий момент зарегистрированный под данной категорией.
|
void |
deregisterServiceProvider(Object provider)
Удаляет объект поставщика услуг из всех категорий, которые содержат его.
|
<T> boolean |
deregisterServiceProvider(T provider, Class<T> category)
Удаляет объект поставщика услуг из данной категории.
|
void |
finalize()
Завершает этот объект до сборки "мусора".
|
Iterator<Class<?>> |
getCategories()
Возвраты
Iterator из Class объекты, указывающие на текущий набор категорий. |
<T> T |
getServiceProviderByClass(Class<T> providerClass)
Возвращает в настоящий момент зарегистрированный объект поставщика услуг, который имеет данный тип class.
|
<T> Iterator<T> |
getServiceProviders(Class<T> category, boolean useOrdering)
Возвраты
Iterator содержа всех зарегистрированных поставщиков услуг в данной категории. |
<T> Iterator<T> |
getServiceProviders(Class<T> category, ServiceRegistry.Filter filter, boolean useOrdering)
Возвраты
Iterator содержа поставщика услуг возражает в пределах данной категории, которые удовлетворяют критерий, наложенный предоставленным ServiceRegistry.Filter объект filter метод. |
static <T> Iterator<T> |
lookupProviders(Class<T> providerClass)
Определяет местоположение и с приращением инстанцирует доступных провайдеров данной службы, используя контекст загрузчик class.
|
static <T> Iterator<T> |
lookupProviders(Class<T> providerClass, ClassLoader loader)
Поиски реализаций определенной службы class, используя данный загрузчик class.
|
void |
registerServiceProvider(Object provider)
Добавляет объект поставщика услуг к реестру.
|
<T> boolean |
registerServiceProvider(T provider, Class<T> category)
Добавляет объект поставщика услуг к реестру.
|
void |
registerServiceProviders(Iterator<?> providers)
Добавляет ряд объектов поставщика услуг, взятых от
Iterator к реестру. |
<T> boolean |
setOrdering(Class<T> category, T firstProvider, T secondProvider)
Устанавливает попарное упорядочивание между двумя объектами поставщика услуг в пределах данной категории.
|
<T> boolean |
unsetOrdering(Class<T> category, T firstProvider, T secondProvider)
Устанавливает попарное упорядочивание между двумя объектами поставщика услуг в пределах данной категории.
|
public ServiceRegistry(Iterator<Class<?>> categories)
ServiceRegistry экземпляр с рядом категорий, взятых от categories параметр.categories - Iterator содержа Class объекты, которые будут использоваться, чтобы определить категории.IllegalArgumentException - если categories null.public static <T> Iterator<T> lookupProviders(Class<T> providerClass, ClassLoader loader)
Этот метод преобразовывает имя данной службы class в имя файла конфигурации провайдера как описано в комментарии class и затем использует getResources метод данного загрузчика class, чтобы найти все доступные файлы с тем именем. Эти файлы тогда читаются и анализируются, чтобы произвести список имен провайдера-class. iterator, который возвращается, использует данный загрузчик class, чтобы искать и затем инстанцировать каждого элемента списка.
Поскольку для расширений возможно быть установленным в рабочую виртуальную машину Java, этот метод может возвратить различные результаты каждый раз, когда это вызывается.
providerClass - a Classобъект, указывающий на class или интерфейс обнаруживаемых поставщиков услуг.loader - загрузчик class, который будет использоваться, чтобы загрузить конфигурационные файлы провайдера и инстанцировать классов провайдера, или null если система загрузчик class (или, приводя к сбою, что начальная загрузка загрузчик class) должна использоваться.Iterator это приводит к объектам провайдера для данной службы в некотором произвольном порядке. iterator бросит Error если конфигурационный файл провайдера нарушает указанный формат или если провайдер class не может быть найден и инстанцирован.IllegalArgumentException - если providerClass null.public static <T> Iterator<T> lookupProviders(Class<T> providerClass)
ClassLoader cl = Thread.currentThread().getContextClassLoader(); return Service.providers(service, cl);
providerClass - a Classобъект, указывающий на class или интерфейс обнаруживаемых поставщиков услуг.Iterator это приводит к объектам провайдера для данной службы в некотором произвольном порядке. iterator бросит Error если конфигурационный файл провайдера нарушает указанный формат или если провайдер class не может быть найден и инстанцирован.IllegalArgumentException - если providerClass null.public Iterator<Class<?>> getCategories()
Iterator из Class объекты, указывающие на текущий набор категорий. iterator будет пуст, если никакие категории не будут существовать.Iterator содержа Classобъекты.public <T> boolean registerServiceProvider(T provider,
Class<T> category)
Если provider реализации RegisterableService интерфейс, onRegistration метод вызовут. onDeregistration метод вызовут каждый раз, когда он вычеркивается из списка от категории, например если категория удаляется, или реестр собирается "мусор".
provider - служба обеспечивает объект, который будет зарегистрирован.category - категория, под которой можно зарегистрировать провайдера.IllegalArgumentException - если provider null.IllegalArgumentException - если нет никакого соответствия категории category.ClassCastException - если провайдер не реализует Class определенный category.public void registerServiceProvider(Object provider)
Class это реализует. Если provider реализации RegisterableService интерфейс, onRegistration однажды метод вызовут для каждой категории, под которой он регистрируется. onDeregistration метод вызовут каждый раз, когда он вычеркивается из списка от категории или когда реестр завершается.
provider - объект поставщика услуг, который будет зарегистрирован.IllegalArgumentException - если provider null.public void registerServiceProviders(Iterator<?> providers)
Iterator к реестру. Каждый провайдер связывается в пределах каждой категории, существующей в реестре чей Class это реализует. Для каждой записи providers это реализует RegisterableService интерфейс, onRegistration однажды метод вызовут для каждой категории, под которой он регистрируется. onDeregistration метод вызовут каждый раз, когда он вычеркивается из списка от категории или когда реестр завершается.
providers - Iterator, содержащий поставщика услуг, возражает, чтобы быть зарегистрированным.IllegalArgumentException - если providers null или содержит a null запись.public <T> boolean deregisterServiceProvider(T provider,
Class<T> category)
false возвращается. Иначе, true возвращается. Если объект того же самого class как provider но не равный (использование ==) к provider регистрируется, это не будет вычеркнуто из списка. Если provider реализации RegisterableService интерфейс, onDeregistration метод вызовут.
provider - объект поставщика услуг, который будет вычеркнут из списка.category - категория, от которой можно вычеркнуть из списка провайдера.true если провайдер был ранее зарегистрирован в той же самой категории категории, false иначе.IllegalArgumentException - если provider null.IllegalArgumentException - если нет никакого соответствия категории category.ClassCastException - если провайдер не реализует class, определенный category.public void deregisterServiceProvider(Object provider)
provider - объект поставщика услуг, который будет вычеркнут из списка.IllegalArgumentException - если provider null.public boolean contains(Object provider)
true если provider в настоящий момент регистрируется.provider - объект поставщика услуг, который будет запрошен.true если данный провайдер был зарегистрирован.IllegalArgumentException - если provider null.public <T> Iterator<T> getServiceProviders(Class<T> category, boolean useOrdering)
Iterator содержа всех зарегистрированных поставщиков услуг в данной категории. Если useOrdering false, iterator возвратит все объекты провайдера сервера в произвольном порядке. Иначе, упорядочивание будет уважать любые попарные упорядочивания, которые были установлены. Если график попарных упорядочиваний будет содержать циклы, то любые провайдеры, которые принадлежат циклу, не будут возвращены.category - категория, которая будет получена от.useOrdering - true если попарные упорядочивания должны быть приняты во внимание в упорядочивании возвращенных объектов.Iterator содержа поставщика услуг возражает от данной категории, возможно в порядке.IllegalArgumentException - если нет никакого соответствия категории category.public <T> Iterator<T> getServiceProviders(Class<T> category, ServiceRegistry.Filter filter, boolean useOrdering)
Iterator содержа поставщика услуг возражает в пределах данной категории, которые удовлетворяют критерий, наложенный предоставленным ServiceRegistry.Filter объект filter метод. useOrdering параметр управляет упорядочиванием результатов, используя те же самые правила как getServiceProviders(Class, boolean).
category - категория, которая будет получена от.filter - экземпляр ServiceRegistry.Filter чей filter метод будет вызван.useOrdering - true если попарные упорядочивания должны быть приняты во внимание в упорядочивании возвращенных объектов.Iterator содержа поставщика услуг возражает от данной категории, возможно в порядке.IllegalArgumentException - если нет никакого соответствия категории category.public <T> T getServiceProviderByClass(Class<T> providerClass)
null возвращается.providerClass - Class из требуемого объекта поставщика услуг.Classвведите, или null не ни один, присутствует.IllegalArgumentException - если providerClass null.public <T> boolean setOrdering(Class<T> category, T firstProvider, T secondProvider)
false возвращается. Если провайдеры ранее были упорядочены в обратном направлении, то упорядочивание удаляется. Упорядочивание будет использоваться getServiceProviders методы, когда их useOrdering параметр true.
category - a Class объект, указывающий на категорию, под которой должно быть установлено предпочтение.firstProvider - привилегированный провайдер.secondProvider - провайдер тот, к который firstProvider предпочитается.true если ранее упорядочивание сброса было установлено.IllegalArgumentException - если любой провайдер null или они - тот же самый объект.IllegalArgumentException - если нет никакого соответствия категории category.public <T> boolean unsetOrdering(Class<T> category, T firstProvider, T secondProvider)
false возвращается. Упорядочивание будет использоваться getServiceProviders методы, когда их useOrdering параметр true.
category - a Class объект, указывающий на категорию, под которой должно быть отменено предпочтение.firstProvider - прежде привилегированный провайдер.secondProvider - провайдер тот, к который firstProvider был прежде предпочтен.true если ранее упорядочивание набора было отменено.IllegalArgumentException - если любой провайдер null или они - тот же самый объект.IllegalArgumentException - если нет никакого соответствия категории category.public void deregisterAll(Class<?> category)
category - категория, которая будет освобождена.IllegalArgumentException - если нет никакого соответствия категории category.public void deregisterAll()
public void finalize()
throws Throwable
deregisterAll метод вызывают, чтобы вычеркнуть из списка всех в настоящий момент зарегистрированных поставщиков услуг. Этот метод нельзя вызвать от кода программы.finalize в class ObjectThrowable - если ошибка происходит во время завершения суперкласса.WeakReference, PhantomReference
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92