Интерфейс ORBInitializer
- Все суперинтерфейсы:
- IDLEntity, Object, ORBInitializerOperations, Serializable
public interface ORBInitializer extends ORBInitializerOperations, Object, IDLEntity
Облегчает регистрацию обработчиков и инициализацию ORB.
Обработчики предназначены для того, чтобы службы ORB получили доступ к обработке ORB, фактически став частью ORB. Поскольку обработчики являются частью ORB, при возвращении ORB методом ORB.init обработчики должны быть зарегистрированы. Обработчики не могут быть зарегистрированы на 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.Init1org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init2org.omg.PortableInterceptor.ORBInitializerClass.com.x.Init3
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
Методы
Методы, унаследованные от интерфейса org.omg.PortableInterceptor.ORBInitializerOperations
post_init, pre_init Методы, унаследованные от интерфейса org.omg.CORBA.Object
_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _is_a, _is_equivalent, _non_existent, _release, _request, _set_policy_override
© 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.