Spec-Zone.ru › OpenJDK 8

Интерфейс ORBInitializerOperations

Все известные подинтерфейсы:
ORBInitializer

public interface ORBInitializerOperations

Обеспечивает регистрацию перехватчиков и инициализацию ORB.

Перехватчики предназначены для того, чтобы сервисы ORB получали доступ к обработке ORB, фактически становясь частью ORB. Поскольку перехватчики являются частью ORB, когда ORB.init возвращает ORB, перехватчики должны быть зарегистрированы. Перехватчики не могут быть зарегистрированы в ORB после того, как он был возвращён вызовом ORB.init.

Перехватчик регистрируется путём регистрации связанного объекта ORBInitializer, реализующего интерфейс ORBInitializer. При инициализации ORB он вызывает каждый зарегистрированный ORBInitializer, передавая ему объект ORBInitInfo, используемый для регистрации его перехватчика.

Регистрация инициализаторов ORB в Java

Инициализаторы ORB регистрируются через свойства Java ORB.

Имена свойств имеют вид:

org.omg.PortableInterceptor.ORBInitializerClass.<Service>
где <Service> - строковое имя класса, реализующего
org.omg.PortableInterceptor.ORBInitializer
. Для избежания конфликтов имён следует использовать обратный DNS-формат. Например, если компания X имеет три инициализатора, она может определить следующие свойства:
  • org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init1
  • org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init2
  • org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init3
Во время ORB.init эти свойства ORB, начинающиеся с org.omg.PortableInterceptor.ORBInitializerClass, собираются, часть <Service> каждого свойства извлекается, создаётся объект с <Service> в качестве имени класса, и вызываются методы pre_init и post_init этого объекта. При возникновении исключений ORB игнорирует их и продолжает работу.

Пример

Служба логирования на стороне клиента, написанная компанией X, например, может иметь реализацию ORBInitializer:

package com.x.logging;

 import org.omg.PortableInterceptor.Interceptor;
 import org.omg.PortableInterceptor.ORBInitializer;
 import org.omg.PortableInterceptor.ORBInitInfo;

 public class LoggingService implements ORBInitializer {
     void pre_init( ORBInitInfo info ) {
         // Instantiate the Logging Service s Interceptor.
         Interceptor interceptor = new LoggingInterceptor();

         // Register the Logging Service s Interceptor.
         info.add_client_request_interceptor( interceptor );
     }

     void post_init( ORBInitInfo info ) {
         // This service does not need two init points.
     }
 }
Для запуска программы MyApp с использованием этой службы логирования пользователь может ввести:

java -Dorg.omg.PortableInterceptor.ORBInitializerClass.com.x.Logging.LoggingService MyApp

Примечания по регистрации перехватчиков

Перехватчики запросов регистрируются на основе каждого ORB.

Для достижения виртуальных перехватчиков на основе объекта, запрашивайте политики целевого объекта внутри точек перехвата, чтобы определить, должны ли они выполнять какие-либо действия.

Для достижения виртуальных перехватчиков на основе POA, инициализируйте каждый POA с помощью отдельного ORB. Хотя перехватчики могут быть упорядочены административно, концепции порядка при регистрации перехватчиков не существует. Перехватчики запросов связаны с контекстами сервисов. Контексты сервисов не упорядочены, поэтому для перехватчиков запросов нет необходимости в порядке. Перехватчики IOR связаны с помеченными компонентами. Помеченные компоненты также не упорядочены, поэтому для перехватчиков IOR нет необходимости в порядке.

Код регистрации должен избегать использования ORB (т.е. вызова ORB.init с предоставленным orb_id). Поскольку регистрация происходит во время инициализации ORB, результаты вызовов этого ORB в этом состоянии не определены.

См. также:
ORBInitInfo

Методы

Модификатор и тип Метод и описание
void post_init(ORBInitInfo info)

Вызывается во время инициализации ORB.

void pre_init(ORBInitInfo info)

Вызывается во время инициализации ORB.

Методы

pre_init

void pre_init(ORBInitInfo info)

Вызывается во время инициализации ORB. Если ожидается, что начальные сервисы, зарегистрированные перехватчиком, будут использованы другими перехватчиками, то эти начальные сервисы должны быть зарегистрированы на этом этапе через вызовы ORBInitInfo.register_initial_reference.

Параметры:
info - предоставляет атрибуты инициализации и операции, с помощью которых можно зарегистрировать перехватчики.

post_init

void post_init(ORBInitInfo info)

Вызывается во время инициализации ORB. Если сервис должен разрешить начальные ссылки в рамках своей инициализации, он может предположить, что все начальные ссылки будут доступны на этом этапе.

Вызов операций post_init не является последним этапом инициализации ORB. Последним этапом после вызовов post_init является присоединение списков зарегистрированных перехватчиков к ORB. Следовательно, ORB не содержит перехватчики во время вызовов post_init. Если изнутри post_init делается вызов посредством ORB, перехватчики запросов не будут вызваны для этого вызова. Аналогично, если выполняется операция, которая приводит к созданию IOR, перехватчики IOR не будут вызваны.

Параметры:
info - предоставляет атрибуты инициализации и операции, с помощью которых можно зарегистрировать перехватчики.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API