JavaTM Platform
Standard Ed. 6

org.omg.PortableInterceptor
인터페이스 ORBInitializerOperations

기존의 서브 인터페이스의 일람:
ORBInitializer


public interface ORBInitializerOperations

인타세프타의 등록과 ORB 의 초기화를 용이하게 합니다.

인타세프타는, ORB 서비스가 ORB 처리에 액세스 해, 사실상 ORB 의 일부가 되기 위한 수단이 되도록(듯이) 의도되고 있습니다. 인타세프타는 ORB 의 일부이기 (위해)때문에,ORB.init 가 ORB 를 돌려줄 때는, 인타세프타의 등록이 완료하고 있습니다. ORB.init 의 호출에 의해 ORB 가 반환된 후에 인타세프타를 ORB 에 등록할 수 없습니다.

인타세프타의 등록은,ORBInitializer 인터페이스를 구현하는 관련지을 수 있었던 ORBInitializer 객체를 등록하는 방법으로 행해집니다. ORB 는, 초기화하고 있을 때, 등록되어 있는 각 ORBInitializer 를 호출해, 그 인타세프타의 등록에 사용되는 ORBInitInfo 객체를 거기에 건네줍니다.

Java 로 ORB 초기화자를 등록한다

ORBInitializers 는, Java ORB 프로퍼티을 경유해 등록됩니다.

프로퍼티명은, 이하의 형식을 취합니다.

org.omg.PortableInterceptor.ORBInitializerClass. <Service>
<Service> 는, 다음의 프로퍼티을 구현하는 클래스의 캐릭터 라인명입니다.
org.omg.PortableInterceptor.ORBInitializer
이름의 충돌을 피하기 위해서(때문에), 역의 DNS 명명 규칙이 사용됩니다. 예를 들어, X 라고 하는 회사에 이니샤라이자가 3 개 있는 경우는, 다음의 프로퍼티을 정의할 수 있습니다. ORB.init 의 실행중은,org.omg.PortableInterceptor.ORBInitializerClass 로 시작되는 이러한 ORB 프로퍼티이 수집되어 각 프로퍼티의 <Service> 부분이 꺼내져 클래스명에 <Service> 캐릭터 라인을 사용해 객체가 인스턴스화 되어 그 객체에 대해서 pre_initpost_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_id 를 지정해 ORB.init 를 호출한다) (일)것은 피해 주세요. 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 에 짜넣습니다. 따라서,post_init 의 호출시는 ORB 에 그러한 인타세프타는 포함되어 있지 않습니다. post_init 내부로부터 ORB 를 개입시켜 호출을 실시해도, 그 호출에 대해서 기동되는 요구 인타세프타는 없습니다. 같이 IOR 가 작성되는 오퍼레이션을 실행해도, 기동되는 IOR 인타세프타는 없습니다.

파라미터:
info - 인타세프타를 등록하기 위한 초기화 속성과 오퍼레이션을 제공한다

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.