JavaTM Platform
Standard Ed. 6

패키지 org.omg.CORBA

OMG CORBA API 의 JavaTM 프로그램 언어 (ORB 클래스를 포함한다)에의 매핑을 제공합니다.

참조처:
          설명

인터페이스의 개요
ARG_IN 호출에 대한 입력 인수를 나타냅니다.
ARG_INOUT 호출로 입력과 출력의 양쪽 모두에 사용되는 인수를 나타냅니다.
ARG_OUT 호출에 대한 출력 인수를 나타내는 정수입니다.
BAD_POLICY PolicyError 예외로 기입해지는 PolicyErrorCode 입니다.
BAD_POLICY_TYPE PolicyError 예외로 기입해지는 PolicyErrorCode 입니다.
BAD_POLICY_VALUE ORB 클래스에서 정의되는 create_policy 메소드에의 호출로, 유효한 정책형에 대해서 부정확한 정책치를 나타내기 위해서(때문에) 사용되는 값을 포함합니다.
CTX_RESTRICT_SCOPE Context.get_values 메소드에의 2 번째의 파라미터로서 사용할 수 있는 플래그로, 검색 범위를 제한합니다.
Current Current 인터페이스로부터 파생한 인터페이스입니다.
CurrentOperations Current 의 인터페이스입니다.
CustomMarshal 사용자는 아니고 ORB 에 의해 사용되는 것을 나타내는 추상치형입니다.
DataInputStream 비정렬화 커스텀치형의 입력 스트림로부터 프리미티브(primitive) 데이터형을 읽어들이는데 사용되는 메소드를 정의합니다.
DataOutputStream 정렬화 커스텀치형의 출력 스트림에 프리미티브(primitive) 데이터형을 기입하는데 사용되는 메소드를 정의합니다.
DomainManager 상위 도메인과 하위 도메인간의 관계 확립과 안내, 및 정책의 작성과 액세스용의 기구를 제공합니다.
DomainManagerOperations DomainManager 에 대해, 정책에 액세스 하는 수단을 제공합니다.
DynAny 추천 되고 있지 않습니다.  대신에 새로운 DynAny 를 사용해 주세요.
DynArray 추천 되고 있지 않습니다.  대신에 새로운 DynArray 를 사용해 주세요.
DynEnum 추천 되고 있지 않습니다.  대신에 새로운 DynEnum 를 사용해 주세요.
DynFixed 추천 되고 있지 않습니다.  대신에 새로운 DynFixed 를 사용해 주세요.
DynSequence 추천 되고 있지 않습니다.  대신에 새로운 DynSequence 를 사용해 주세요.
DynStruct 추천 되고 있지 않습니다.  대신에 새로운 DynStruct 를 사용해 주세요.
DynUnion 추천 되고 있지 않습니다.  대신에 새로운 DynUnion 를 사용해 주세요.
DynValue 추천 되고 있지 않습니다.  대신에 새로운 DynValue 를 사용해 주세요.
IDLType OMG 의 IDL 의 타입을 나타내는 모든 인터페이스 리포지터리(repository) (IR) 객체가 상속하는 abstract 인터페이스입니다.
IDLTypeOperations 이 인터페이스는, IDLType 객체에 의해 구현될 필요가 있습니다.
IRObject IRObject IDL 인터페이스는, 다른 모든 인터페이스 리포지터리(repository) 인터페이스의 파생원이다, 가장 포괄적인 인터페이스를 나타냅니다.
IRObjectOperations IRObject 로부터의 매핑에 사용하는 오퍼레이션 인터페이스입니다.
Object CORBA 객체 참조의 정의입니다.
OMGVMCID OMG 를 위해서(때문에) 예약된 벤더 마이너 코드 ID 입니다.
Policy Policy 인터페이스로부터 파생한 인터페이스입니다.
PolicyOperations Policy 객체의 오퍼레이션을 제공합니다.
PRIVATE_MEMBER ValueMember 클래스의 private 멤버를 정의하는 정수입니다.
PUBLIC_MEMBER ValueMember 클래스의 public 멤버를 정의하는 정수입니다.
UNSUPPORTED_POLICY 요구된 Policy 가 ORB 에 의해 유효라고 인식되지만, 현재 지원되어 있지 않은 경우에 기입해지는 PolicyErrorCode 의 1 개입니다.
UNSUPPORTED_POLICY_VALUE Policy 에 요구된 값이 유효한 형태로 그 형태의 유효 범위내에 있지만, 현재 이 유효한 값이 지원되어 있지 않은 경우에 기입해지는 PolicyErrorCode 입니다.
VM_ABSTRACT 형태 코드의 추상 인터페이스를 나타내는데 사용되는 코드를 정의합니다.
VM_CUSTOM 형태 코드의 커스텀 정렬화치형을 나타내는데 사용되는 코드를 정의합니다.
VM_NONE 형태 코드의 치 형의 값의 1 개를 나타내는데 사용되는 코드를 정의합니다.
VM_TRUNCATABLE 형태 코드의 잘라서 버림 가능한 치 형을 나타내는데 사용되는 코드를 정의합니다.
 

클래스의 개요
_IDLTypeStub IDLType 의 Stub입니다.
_PolicyStub Policy 의 Stub입니다.
Any IDL 로 기술할 수 있는 모든 데이터의 컨테이너, 또는 IDL 의 원시형의 컨테이너로서 기능합니다.
AnyHolder Any 의 홀더입니다.
AnySeqHelper AnySeq 의 헬퍼입니다.
AnySeqHolder AnySeq 의 홀더입니다.
BooleanHolder Boolean 의 홀더입니다.
BooleanSeqHelper BooleanSeq 의 헬퍼입니다.
BooleanSeqHolder BooleanSeq 의 홀더입니다.
ByteHolder Byte 의 홀더입니다.
CharHolder Char 의 홀더입니다.
CharSeqHelper CharSeq 의 헬퍼입니다.
CharSeqHolder CharSeq 의 홀더입니다.
CompletionStatus SystemException 가 throw 되었을 때에 메소드가 동작을 완료하고 있었는지의 여부를 나타내는 객체입니다.
CompletionStatusHelper CompletionStatus 의 헬퍼입니다.
Context Request 오퍼레이션으로, 이 호출과 함께 송출되기 전에 문맥 캐릭터 라인을 해결할 필요가 있는 문맥 객체의 지정으로 사용되는 객체입니다.
ContextList 프로퍼티명을 나타내는 String 객체의 수정 가능한 리스트를 포함하는 객체입니다.
CurrentHelper Current 의 헬퍼입니다.
CurrentHolder Current 의 홀더입니다.
DefinitionKind 인터페이스 리포지터리(repository) 객체의 형태를 지정할 경우에 사용하는 정수를 제공하는 클래스입니다.
DefinitionKindHelper DefinitionKind 의 헬퍼입니다.
DoubleHolder Double 의 홀더입니다.
DoubleSeqHelper DoubleSeq 의 헬퍼입니다.
DoubleSeqHolder DoubleSeq 의 홀더입니다.
DynamicImplementation 추천 되고 있지 않습니다.  org.omg.CORBA.DynamicImplementation
Environment 클라이언트로 예외를 사용할 수 있도록(듯이) 하기 위해서 Request 조작으로 사용되는 예외의 컨테이너 (홀더)입니다.
ExceptionList 메소드에 의해 throw 할 수가 있는 예외를 기술하기 위해서,Request 조작으로 사용되는 객체입니다.
FieldNameHelper FieldName 의 헬퍼입니다.
FixedHolder Fixed 의 홀더입니다.
FloatHolder Float 의 홀더입니다.
FloatSeqHelper FloatSeq 의 헬퍼입니다.
FloatSeqHolder FloatSeq 의 홀더입니다.
IdentifierHelper Identifier 의 헬퍼입니다.
IDLTypeHelper IDLType 의 헬퍼입니다.
IntHolder Int 의 홀더입니다.
LocalObject Java 언어 매핑으로, 로컬 IDL 인터페이스의 구현 base class로서 사용됩니다.
LongHolder Long 의 홀더입니다.
LongLongSeqHelper LongLongSeq 의 헬퍼입니다.
LongLongSeqHolder LongLongSeq 의 홀더입니다.
LongSeqHelper LongSeqHelper 의 헬퍼입니다.
LongSeqHolder LongSeq 의 홀더입니다.
NamedValue DII 와 DSI 로 사용되는 객체로, 인수와 반환값을 기술합니다.
NameValuePair 이름과 IDL 구조체의 속성인 값을 관련짓습니다.
NameValuePairHelper NameValuePair 의 헬퍼입니다.
NVList NamedValue 객체가 포함된 변경 가능 리스트입니다.
ObjectHelper  
ObjectHolder Object 의 홀더입니다.
OctetSeqHelper OctetSeq 의 헬퍼입니다.
OctetSeqHolder OctetSeq 의 홀더입니다.
ORB CORBA Object Request Broker 기능을 위한 API 를 제공하는 클래스입니다.
ParameterMode Parameter 의 파라미터 모드의 열거입니다.
ParameterModeHelper Parameter 의 파라미터 모드의 열거입니다.
ParameterModeHolder Parameter 의 파라미터 모드의 열거입니다.
PolicyErrorCodeHelper 정책가 무효가 될 가능성이 있는 이유를 캡슐화합니다.
PolicyErrorHelper ORB.create_policy 오퍼레이션에게 건네진 파라미터치의 문제를 나타내기 위해서(때문에) throw 됩니다.
PolicyErrorHolder ORB.create_policy 오퍼레이션에게 건네진 파라미터치의 문제를 나타내기 위해서(때문에) throw 됩니다.
PolicyHelper Policy 의 헬퍼입니다.
PolicyHolder Policy 의 홀더입니다.
PolicyListHelper PolicyList 의 헬퍼입니다.
PolicyListHolder PolicyList 의 홀더입니다.
PolicyTypeHelper PolicyType 의 헬퍼입니다.
Principal 추천 되고 있지 않습니다.  CORBA 2.2 에서는 추천 되지 않습니다.
PrincipalHolder 추천 되고 있지 않습니다.  CORBA 2.2 에서는 추천 되지 않습니다.
RepositoryIdHelper RepositoryId 의 헬퍼입니다.
Request 메소드를 호출하기 위해서(때문에) 필요한 정보를 포함한 객체입니다.
ServerRequest Dynamic Skeleton Interface (DSI)의 명시적인 상태를 수중에 넣는 객체입니다.
ServiceDetail ORB 서비스를 나타내는 객체입니다.
ServiceDetailHelper  
ServiceInformation CORBA 모듈내의 IDL 구조체입니다.
ServiceInformationHelper  
ServiceInformationHolder ServiceInformation 의 홀더입니다.
SetOverrideType SET_OVERRIDEADD_OVERRIDE 를 태그 붙이고 하는 CORBA enum 의 매핑입니다.
SetOverrideTypeHelper SetOverrideType 의 헬퍼입니다.
ShortHolder Short 의 홀더입니다.
ShortSeqHelper ShortSeqHelper 의 헬퍼입니다.
ShortSeqHolder ShortSeq 의 홀더입니다.
StringHolder String 의 홀더입니다.
StringSeqHelper String 의 배열입니다.
StringSeqHolder String 의 배열입니다.
StringValueHelper StringValue 의 헬퍼입니다.
StructMember 인터페이스 리포지터리(repository)의 IDL struct 멤버를 기술합니다.
StructMemberHelper StructMember 의 헬퍼입니다.
TCKind TypeCode 객체의 종류를 지정하는, IDL 의 열거형 TCKind 의 Java 매핑입니다.
TypeCode 특정의 CORBA 데이터형에 대한 정보를 포함하는 컨테이너입니다.
TypeCodeHolder TypeCode 의 홀더입니다.
ULongLongSeqHelper ULongLongSeq 의 헬퍼입니다.
ULongLongSeqHolder ULongLongSeq 의 홀더입니다.
ULongSeqHelper ULongSeq 의 헬퍼입니다.
ULongSeqHolder ULongSeq 의 홀더입니다.
UnionMember IDL 공용체의 멤버의 인터페이스 리포지터리(repository)내의 설명입니다.
UnionMemberHelper UnionMember 의 헬퍼입니다.
UnknownUserExceptionHelper UnknownUserException 의 헬퍼입니다.
UnknownUserExceptionHolder UnknownUserException 의 홀더입니다.
UShortSeqHelper UShortSeq 의 헬퍼입니다.
UShortSeqHolder UShortSeq 의 홀더입니다.
ValueBaseHelper  
ValueBaseHolder ValueBase 의 홀더입니다.
ValueMember value 객체의 멤버의 인터페이스 리포지터리(repository)내의 설명입니다.
ValueMemberHelper ValueMember 의 헬퍼입니다.
VersionSpecHelper VersionSpec 의 헬퍼입니다.
VisibilityHelper Visibility 의 헬퍼입니다.
WCharSeqHelper WCharSeq 의 헬퍼입니다.
WCharSeqHolder WCharSeq 의 홀더입니다.
WrongTransactionHelper WrongTransaction 의 헬퍼입니다.
WrongTransactionHolder WrongTransaction 의 홀더입니다.
WStringSeqHelper WString 의 배열입니다.
WStringSeqHolder WString 의 배열입니다.
WStringValueHelper IDL-to-Java 컴파일러 (휴대용) 버젼 "3.0" 에 의해 orb.idl 로부터 생성된 org/omg/CORBA/WStringValueHelper.java.
 

예외의 개요
ACTIVITY_COMPLETED ACTIVITY_COMPLETED 시스템 예외는 Activity 문맥에 액세스 하는 메소드로 발생하는 경우가 있습니다.
ACTIVITY_REQUIRED ACTIVITY_REQUIRED 시스템 예외는 Activity 문맥을 필요로 하는 메소드로 발생하는 경우가 있습니다.
BAD_CONTEXT 클라이언트가 오퍼레이션을 호출했지만, 오퍼레이션에 필요한 문맥치가 콘테키트에 포함되지 않은 경우, 예외가 throw 됩니다.
BAD_INV_ORDER 이 예외는, 호출측이 잘못한 순서로 오퍼레이션을 호출한 것을 나타냅니다.
BAD_OPERATION 객체 참조가 기존의 객체를 가리키지만, 그 객체가 불려 간 오퍼레이션을 지원하지 않는 경우에 throw 되는 예외입니다.
BAD_PARAM 호출 측에 건네받은 파라미터가 범위외, 혹은 부정이라고 보여지는 경우에 throw 되는 예외입니다.
BAD_QOS 객체가, 관련한 서비스 시멘틱스의 QoS 를 가지는 호출 파라미터로 필요한 QoS 를 지원할 수 없는 경우,BAD_QOS 예외가 발생합니다.
BAD_TYPECODE ORB 가 무효인 형태 코드 (예를 들어, 무효인 TCKind 치의 형태 코드)를 검출했을 때에 throw 되는 예외입니다.
Bounds 메소드가 액세스 하려고 하고 있는 객체에 대해서, 파라미터가 유효한 범위내에 없는 경우에 throw 되는 사용자 예외입니다.
CODESET_INCOMPATIBLE 이 예외는, 클라이언트의 native code 세트와 서버의 native code 세트와의 사이에 유효한 통신을 할 수 없는 경우에 발생합니다.
COMM_FAILURE 이 예외는, 클라이언트로부터 요구가 송신된 다음에, 서버로부터의 응답이 클라이언트에 돌아가기 전, 처리의 실행중에 통신이 없어졌을 경우에 throw 됩니다.
DATA_CONVERSION 이 예외는, ORB 가, 정렬화 된 데이터 표현과 네이티브 표현과의 사이의 변환을 할 수 없는 경우에 throw 됩니다.
FREE_MEM heap의 파괴나 메모리 세그먼트(segment)의 락등이 원인으로, ORB 가 동적 메모리의 해제에 실패했을 경우에 throw 되는 예외입니다.
IMP_LIMIT 이 예외는, ORB 실행시에 구현 한계를 넘은 것을 나타냅니다.
INITIALIZE ORB 가 초기화시에 에러를 검출했을 (네트워크 자원의 취득시에 장해가 발생한, 구성 에러를 검출했다는 등) 경우에 throw 되는 예외입니다.
INTERNAL 이 예외는, ORB 의 내부 에러를 나타냅니다.
INTF_REPOS ORB 가 인터페이스 리포지터리(repository)에 도달할 수 없는 경우, 또는 인터페이스 리포지터리(repository)에 관계하는 그 외의 에러를 검출했을 경우에 throw 되는 예외입니다.
INV_FLAG 무효인 플래그가 오퍼레이션에게 건네졌을 경우 (DII 요구의 작성시등)에 throw 되는 예외입니다.
INV_IDENT 이 예외는, IDL 식별자가 구문적으로 무효라는 점을 나타냅니다.
INV_OBJREF 이 예외는, 객체 참조가 내부적으로 부정한 것을 나타냅니다.
INV_POLICY 특정의 호출에 적용되는 Policy 오버라이드(override)간의 호환성이 없기 때문에, 호출할 수 없는 경우에 throw 되는 표준 예외입니다.
INVALID_ACTIVITY 트랜잭션(transaction) 또는 Activity 가 중단된 문맥과는 다른 문맥으로 재개되는 경우, Activity 또는 Transaction 서비스의 재개 메소드로 INVALID_ACTIVITY 시스템 예외가 발생하는 일이 있습니다.
INVALID_TRANSACTION 요구에 의해 무효인 트랜잭션(transaction) 문맥이 송신되었을 경우에 throw 되는 예외입니다.
MARSHAL 네트워크로부터의 요구 또는 응답이 구조적으로 무효입니다.
NO_IMPLEMENT 이 예외는, 불려 간 오퍼레이션은 존재하지만 (IDL 정의 있어) 그 오퍼레이션이 구현되어 있지 않은 것을 나타냅니다.
NO_MEMORY ORB 런타임이 메모리 부족하게 되었을 경우에 throw 되는 예외입니다.
NO_PERMISSION 호출 바탕으로 충분한 특권이 없기 때문에, 호출이 실패했을 경우에 throw 되는 예외입니다.
NO_RESOURCES ORB 가 일반적인 자원 한계를 검출했을 경우에 throw 되는 예외입니다.
NO_RESPONSE 이 예외는, 클라이언트가 지연 동기 호출의 결과를 취득하려고 했지만, 요구의 응답이 아직 사용할 수 없는 경우에 throw 됩니다.
OBJ_ADAPTER 이 예외는 일반적으로, 관리상의 불일치를 나타냅니다.
OBJECT_NOT_EXIST 삭제된 객체의 호출이 실행될 때마다 throw 되는 예외입니다.
PERSIST_STORE 이 예외는, 데이타베이스 접속의 확립 실패나 데이타베이스의 파괴적 , 지속적인 기억 영역의 장해를 나타냅니다.
PolicyError 정책 에러가 발생했을 경우에 throw 되는 사용자 예외입니다.
REBIND 현재 유효한 RebindPolicy 가 NO_REBIND 또는 NO_RECONNECT 의 값과 바인드 된 객체 참조의 호출을 가지는 것에 의해, LocateReply 메세지 상태가 OBJECT_FORWARD 에, 또는 Reply 메세지 상태가 LOCATION_FORWARD가 되어,REBIND 가 발생합니다.
SystemException 모든 CORBA 표준 예외의 루트 클래스입니다.
TIMEOUT TIMEOUT 는, 전달되지 않고 로 지정된 유효기간을 초과했을 경우에 발생합니다.
TRANSACTION_MODE CORBA TRANSACTION_MODE 예외는, IOR 의 InvocationPolicy 와 선택한 호출 패스 (직접 호출해 또는 회송된 호출)의 사이에 불일치가 있는 경우에, 클라이언트 ORB 에 의해 throw 됩니다.
TRANSACTION_REQUIRED 요구로 null 트랜잭션(transaction) 문맥이 보내졌지만, 액티브한 트랜잭션(transaction)가 필요한 일을 나타내는 예외입니다.
TRANSACTION_ROLLEDBACK 요구에 관련지을 수 있고 있는 트랜잭션(transaction)가 롤백(rollback) 된, 또는 롤백(rollback) 하도록(듯이) 마크 되었을 경우에 throw 되는 예외입니다.
TRANSACTION_UNAVAILABLE Transaction Service 에의 접속이 이상종료(ABEND) 해 트랜잭션(transaction) 서비스 문맥을 처리할 수 없는 경우, CORBA TRANSACTION_UNAVAILABLE 예외가 ORB 에 의해 throw 됩니다.
TRANSIENT ORB 가 객체에 도달하려고 해 실패했을 경우에 throw 되는 예외입니다.
UNKNOWN 오퍼레이션 구현이 CORBA 이외의 예외 (구현의 프로그램 언어에 고유의 예외등)를 throw 하는지, 오퍼레이션의 발생식으로 지정되어 있지 않은 사용자 예외를 오퍼레이션이 throw 하는 경우에, 발생하는 예외입니다.
UnknownUserException 서버로부터 반환된 사용자 예외를 포함하는 클래스입니다.
UserException CORBA IDL 정의의 사용자 예외의 루트 클래스입니다.
WrongTransaction CORBA 의 WrongTransaction 사용자 정의 예외입니다.
 

패키지 org.omg.CORBA 의 설명

OMG CORBA API 의 JavaTM 프로그램 언어 (ORB 클래스를 포함한다)에의 매핑을 제공합니다. ORB 클래스는, 프로그래머가 풀 기능의 Object Request Broker (ORB)로서 사용할 수 있도록(듯이) 구현되고 있습니다.

Java(TM) Platform, Standard Edition 6 이 준거하는 공식의 CORBA 스펙의 지원 섹션의 정확한 리스트는,「Java(TM) SE 6 에서의 정식적 CORBA 지원 스펙」 을 참조해 주세요.

일반적인 정보

이 섹션에서는, Interface Definition Language (IDL) 파일을 컴파일 해, ORB 를 사용해 클라이언트 및 서버를 기술하는 사용자에 관계하는 정보를 제공합니다.

이 섹션으로 설명하는 클래스와 인터페이스는,ORB 클래스, 예외,Helper 클래스, 및 Holder 클래스의 4 개에 그룹화 할 수 있습니다.

ORB 클래스

ORB 는, 클라이언트와 서버상의 메소드의 구현간에서의, 메소드 호출을 처리 (중개)합니다. 클라이언트와 서버는 네트워크상의 어디에 있어도 자주(잘), 호출과 구현은 다른 프로그램 언어로 기술되고 있을 가능성이 있기 (위해)때문에, ORB 는 이 통신을 실현하기 위해서(때문에) 내부에서 다양한 처리를 실시합니다.

ORB 의 기능의 대부분은 사용자에 대해서 완전하게 투명하고,CORBA 패키지의 주요 부분은, ORB 에 의해 내부에서 사용되는 클래스로 구성되어 있습니다. 그 때문에, 대부분의 프로그래머는, 이 패키지의 일부분 밖에 직접은 사용하지 않습니다. 실제로는,ORB 클래스, 일부의 예외, 및 경우에 의해 홀더 클래스의 일부의 메소드만을 사용합니다.

ORB 메소드

어플리케이션을 CORBA 환경에서 사용하려면 , 최초로 다음을 실행할 필요가 있습니다.

어플리케이션을 초기화해 적절한 객체 참조를 취득하기 위해서, 다음의 오퍼레이션이 준비되어 있습니다.  

어플리케이션이 CORBA 환경을 필요로 하는 경우, ORB 객체 참조 및 루트 POA 등의 OA 객체 참조 (가능한 경우)를 취득하는 기구가 필요합니다. 이것에는, 어플리케이션을 ORB 와 OA 환경에 초기화하는, 및 ORB 객체 참조와 OA 객체 참조를 어플리케이션에 돌려주어, 이후의 ORB 및 OA 조작으로 사용한다, 라고 하는 2 개의 목적이 있습니다.

ORB 객체 참조를 가져오려면 , 어플리케이션으로 ORB.init 조작을 호출합니다. 호출 파라미터는, 객체 참조를 필요로 하는 ORB 의 식별자, 및 환경 고유의 데이터를 호출해 먼저 건네주기 위해서(때문에) 사용하는 arg_list 로 구성할 수 있습니다.

다음에 나타내는 것은, ORB 에의 액세스를 제공하는 ORB 메소드입니다.

파라미터없이 init() 메소드를 사용하면(자), 단체 ORB 가 기동합니다. 단체 ORB 는,idlj 가 Helper 클래스내에서 생성하는 코드에 필요한 any 를, 형태 코드 작성에 제공합니다.

어플리케이션에는, 그 초기의 객체 참조를 취득하기 위한 이식성 있는 수단이 필요합니다. 루트 POA, POA Current, 인터페이스 리포지터리(repository), 및 각종의 객체 서비스 인스턴스의 참조가 필요합니다. 어플리케이션이 필요로 하는 기능은, 네임 서비스가 제공되는 기능과 같습니다. 다만, 어플리케이션을 이식성의 높은 방법으로 초기화하기 위해서, 모든 어플리케이션으로 네임 서비스를 사용 가능하게 하도록 지시하는 것을, OMG 는 바라고 있지 않습니다. 따라서, 이 섹션으로 설명하는 조작은, 네임 서비스의 단순한 로컬 버젼이며, 어플리케이션은 이것을 사용해, 조작에 불가결한 소규모의 정의가 끝난 객체 참조 세트를 취득할 수 있습니다. 이 기구에서는 명확하게 정의된 소규모의 객체 세트만을 대상으로 생각하고 있기 (위해)때문에, 네이밍 문맥은 단일 레벨의 이름 공간에 평판화할 수 있습니다. 이 단순화에 의해, 2 개의 조작을 정의하는 것만으로 필요한 기능을 실현할 수 있습니다.

초기 참조는, ORB 객체 인터페이스로 제공되는 2 개의 조작에 의해 취득되어 초기 객체 참조의 리스트 및 해결 기능을 제공합니다. 다음에 초기 참조를 나타냅니다.

이러한 메소드의 사용예는,「Java IDL 입문」을 참조해 주세요.

예외

Java IDL 의 예외는, Java 프로그램 언어로 기술된 코드의 예외와 닮아 있습니다. 메소드가 예외를 throw 하도록(듯이) 정의되고 있는 경우, 그 메소드를 사용하는 코드에는,try/catch 블록을 기술해, 예외가 throw 되었을 때에 그 예외를 처리하지 않으면 안됩니다.

자세한 것은,「Java IDL 예외」 를 참조해 주세요. 시스템 예외와 사용자 정의 예외의 차이를 설명하고 있습니다.

다음에, 시스템 예외의 리스트를 나타냅니다. 이것들은,org.omg.CORBA 패키지로 정의되고 있는 java.lang.RuntimeException 로부터 org.omg.CORBA.SystemException 를 개입시켜 상속하는, 체크되어 있지 않은 예외입니다.


        BAD_CONTEXT
        BAD_INV_ORDER
        BAD_OPERATION
        BAD_PARAM
        BAD_TYPECODE
        COMM_FAILURE
        DATA_CONVERSION
        FREE_MEM
        IMP_LIMIT
        INITIALIZE
        INTERNAL
        INTF_REPOS
        INVALID_TRANSACTION
        INV_FLAG
        INV_IDENT
        INV_OBJREF
        INV_POLICY
        MARSHAL
        NO_IMPLEMENT 
        NO_MEMORY
        NO_PERMISSION
        NO_RESOURCES
        NO_RESPONSE
        OBJECT_NOT_EXIST
        OBJ_ADAPTER
        PERSIST_STORE
        TRANSACTION_REQUIRED
        TRANSACTION_ROLLEDBACK
        TRANSIENT
        UNKNOWN

다음에,org.omg.CORBA 로 정의되고 있는 사용자 정의 예외의 리스트를 나타냅니다.


        Bounds
        UnknownUserException
        WrongTransaction 
        PolicyError

서브 패키지

CORBA 패키지안에는, 이름의 일부에 「Package」가 붙어 있는 패키지가 몇개인가 있습니다. 이러한 패키지는,CORBA 패키지의 인터페이스 및 클래스에 의해 사용되는 예외 또는 클래스를 제공할 뿐(만큼)이므로, 일반적으로 꽤 작은 것입니다.

예를 들어,org.omg.CORBA.TypeCodePackage 패키지에는,TypeCode 클래스의 메소드에 의해 throw 되는 예외가 2 개 있습니다. 그러한 예외는 다음과 같습니다.

org.omg.CORBA.ORBPackage 패키지에는, 다음의 2 개의 예외가 있습니다.

CORBA 의 서브 패키지인 다른 패키지는,「portable」 패키지입니다. 이것은, 어느 벤더의 IDL 컴파일러로 생성된 코드를 다른 벤더의 ORB 로 실행 가능하게 하는 ORB API 세트를 제공합니다.

홀더 클래스

out 및 inout 파라미터의 인도 모드를 지원하려면 , 추가의홀더 클래스가 필요합니다. Java 프로그램 언어는 out 또는 inout 파라미터를 지원하지 않기 때문에, 변경 가능한 파라미터를 건네주는 수단으로서 홀더 클래스가 필요하게 됩니다. 휴대용 Stub 및 스켈리턴을 지원하기 위해(때문에), 홀더 클래스는 org.omg.CORBA.portable.Streamable 인터페이스도 구현합니다.

홀더 클래스의 이름은, 형태의 이름에 「Holder」가 추가되어 붙일 수 있고 있습니다. 형태의 이름에 의해, Java 프로그램 언어에서의 이름이 참조됩니다. 예를 들어, Java 프로그램 언어로 Account 라는 이름의 인터페이스의 홀더 클래스는,AccountHolder 라는 이름이 됩니다.

홀더 클래스는 org.omg.CORBA 패키지내의 모든 기본 IDL 데이터형에 사용할 수 있습니다. 예를 들어,LongHolder,ShortHolder,FloatHolder 등에는, 정의 끝난 클래스가 존재합니다. typedefs 로 정의된 것을 제외하는 모든 이름 첨부 사용자 정의 IDL 형에 대해서도 클래스가 생성됩니다. 이 경우, 사용자 정의에는, 인터페이스 리포지터리(repository)용등의 OMG 스펙, 및 그 외의 OMG 서비스로 정의되는 형태가 포함됩니다.

각 홀더 클래스에는, 이하가 포함됩니다.

디폴트의 생성자 은, 값필드를 Java 언어로 정의된 형태의 디폴트 값로 설정합니다.

예를 들어, OMG IDL 로 정의된 인터페이스 Account 가 Java 프로그램 언어에 매핑 되고 있는 경우는, 다음의 홀더 클래스가 생성됩니다.

public final class AccountHolder implements 
org.omg.CORBA.portable.Streamable
{
// field that holds an Account object
public Account value = null;

// default constructor
public AccountHolder ()
  {
  }
  
// creates a new AccountHolder from initialValue
public AccountHolder (Account initialValue)
  {
value = initialValue;
  }
  
// reads the contents of i and assigns the contents to value
public void _read (org.omg.CORBA.portable.InputStream i)
  {
value = AccountHelper.read (i);
  }

// writes value to o
public void _write (org.omg.CORBA.portable.OutputStream o)
  {
AccountHelper.write (o, value);
  }
 
// returns the typecode for Account
public org.omg.CORBA.TypeCode _type ()
  {
return AccountHelper.type ();
  }

}

Holder 클래스의 자세한 것은,「OMG IDL 로부터 Java 언어에의 매핑」의 제 1.4 장 「기본형의 매핑」을 참조해 주세요. 다음에,org.omg.CORBA 패키지로 정의되고 있는 Holder 클래스를 나타냅니다.

     AnyHolder
     AnySeqHolder
     BooleanHolder
     BooleanSeqHolder
     ByteHolder
     CharHolder
     CharSeqHolder
     CurrentHolder
     DoubleHolder
     DoubleSeqHolder
     FixedHolder
     FloatHolder
     FloatSeqHolder
     IntHolder
     LongHolder
     LongLongSeqHolder
     LongSeqHolder
     ObjectHolder
     OctetSeqHolder
     ParameterModeHolder
     PolicyErrorHolder
     PolicyListHolder
     PrincipalHolder
     ServiceInformationHolder
     ShortHolder
     ShortSeqHolder
     StringHolder
     StringSeqHolder
     TypeCodeHolder
     ULongLongSeqHolder
     ULongSeqHolder
     UnknownUserExceptionHolder
     UShortSeqHolder
     ValueBaseHolder
     WCharSeqHolder
     WrongTransactionHolder
     WStringSeqHolder

헬퍼 클래스

헬퍼 파일은, 형태의 조작에 필요한 복수의 static 메소드를 제공합니다. 예를 들어, 이하와 같은 경우가 있습니다.  

맵 된 IDL 인터페이스 또는 추상 인터페이스의 헬퍼 클래스에는 네로우 조작도 포함됩니다. static 네로우 메소드에 의해,org.omg.CORBA.Object 가 한층 더 특정의 형태의 객체 참조에 네로우 변환됩니다. 객체 참조가 요구된 형태를 지원하지 않기 위해(때문에) 네로우 변환에 실패했을 경우는, IDL 예외 CORBA.BAD_PARAM 이 throw 됩니다. 그 외의 종류의 에러를 나타내는 경우는, 다른 시스템 예외가 throw 됩니다. null 의 네로우 변환은 항상 성공해,null 치가 돌려주어집니다. 일반적으로, 어플리케이션 프로그래머가 사용하는 헬퍼 메소드는 narrow 메소드만입니다. 그 외의 메소드는, 일반적으로은 내부에서 사용되어 프로그래머는 의식할 필요가 없습니다.

헬퍼 클래스는,치 형의 헬퍼치 형 이외의 헬퍼의 2 개에 크게 분류됩니다. 1 개의 카테고리의 헬퍼 클래스 모든 것이 같은 메소드를 제공하기 위해(때문에), 여기에서는 헬퍼 클래스의 각 카테고리의 범용적인 설명을 실시합니다.

OMG IDL 가 Java 프로그램 언어에 매핑 되면(자), 각 사용자 정의형에 대해서 「헬퍼」클래스가 생성됩니다. 이 생성된 클래스에는, 접미사(suffix) Helper 가 추가되어 사용자 정의형의 이름을 붙일 수 있습니다. 예를 들어, OMG IDL 로 인터페이스 Account 가 정의되면(자),idlj 컴파일러에 의해 AccountHelper 라는 이름의 클래스가 자동적으로 생성됩니다. AccountHelper 클래스에는, 형태의 인스턴스 (이 경우는 Account 객체)의 조작에 필요한 static 메소드가 포함됩니다.

narrow 메소드

객체가 메소드의 반환값의 경우는, 총칭 객체인 org.omg.CORBA.Object 객체 또는 java.lang.Object 객체의 어느 쪽인가의 형식에서 돌려주어집니다. 이 객체는, 조작되기 전에 특정의 형태에 캐스트 될 필요가 있습니다. 예를 들어,Account 객체는 총칭 객체로서 돌려주어져Account 메소드가 불려 가도록(듯이),Account 객체에 네로우 변환될 필요가 있습니다.

narrow 메소드에는 2 개의 형식이 있습니다. 1 개(살)은 org.omg.CORBA.Object 객체를 사용해, 이제(벌써) 1 개(살)은 java.lang.Object 객체를 사용합니다. 인터페이스가 abstract 화도인가는, 헬퍼 클래스에서 제공되는 narrow 메소드에 의해 정해집니다. abstract 가 아닌 인터페이스의 헬퍼 클래스에는, CORBA 객체를 사용하는 narrow 메소드가 있습니다. 한편, abstract 인터페이스의 narrow 메소드에서는, Java 프로그램 언어의 객체가 사용됩니다. 적어도 1 개의 abstract 기저 인터페이스를 가지는, abstract 이외의 인터페이스의 헬퍼 클래스에서는, 2 개의 버젼의 narrow 메소드가 제공됩니다.

「Hello World」 튜토리얼에서는, 다음과 같이 narrow 메소드를 사용합니다.

// create and initialize the ORB
        ORB orb = ORB.init(args, null);

// get the root naming context
org.omg.CORBA.Object objRef = 
            orb.resolve_initial_references("NameService");
// Use NamingContextExt instead of NamingContext.This is 
// part of latest Inter-Operable naming Service.   
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
 
// resolve the Object Reference in Naming
String name = "Hello";
helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));

기본 헬퍼 클래스의 예

여기서 설명하는 기본 헬퍼 클래스는, 모든 헬퍼 클래스, 및 OMG IDL 로 정의된 형태가 Java 프로그램 언어의 인터페이스에 매핑 되는 경우에 narrow 메소드로 지정되는 메소드를 포함한 클래스입니다. 치 형이 아닌 형태에는, 그에 대한 생성된 기본 헬퍼 클래스가 있습니다.

예를 들어, 인터페이스 Account 가 치 형의 IDL 형 또는 추상 인터페이스는 아니고, 추상 기저 인터페이스가 없는 경우,AccountHelper 클래스는 다음과 같이 됩니다.

abstract public class AccountHelper
{
private static String  _id = "IDL:Account:1. 0";

// inserts an Account object into an Any object
public static void insert (org.omg.CORBA.Any a, Account that)
  {
org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
a.type (type ());
write (out, that);
a.read_value (out.create_input_stream (), type ());
  }

// extracts an Account object from an Any object
public static Account extract (org.omg.CORBA.Any a)
  {
return read (a.create_input_stream ());
  }

  
private static org.omg.CORBA.TypeCode __typeCode = null;
// gets the typecode for this type
synchronized public static org.omg.CORBA.TypeCode type ()
  {
if (__typeCode == null)
    {
__typeCode = org.omg.CORBA.ORB.init (). create_interface_tc (AccountHelper.id (), "Account");
    }
return __typeCode;
  }

// gets the repository id for this type
public static String id ()
  {
return _id;
  }

// reads an Account object from an input stream
public static Account read (org.omg.CORBA.portable.InputStream istream)
  {
return narrow (istream.read_Object (_AccountStub.class));
  }

// writes an Account object to an outputstream
public static void write (org.omg.CORBA.portable.OutputStream ostream, Account value)
  {
ostream.write_Object ((org.omg.CORBA.Object) value);
  }

// converts (narrows) an Object to an Account object
public static Account narrow (org.omg.CORBA.Object obj)
  {
if (obj == null)
return null;
else if (obj instanceof Account)
return (Account) obj;
else if (! obj. _is_a (id ()))
throw new org.omg.CORBA.BAD_PARAM ();
else
    {
org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl) obj). _get_delegate ();
_AccountStub stub = new _AccountStub ();
stub. _set_delegate(delegate);
return stub;
    }
  }

}

치 형의 헬퍼 클래스

치 형의 헬퍼 클래스에는, 치 형 이외의 메소드용으로 생성된 같은 메소드가 다른 표현이 포함됩니다. 주된 차이는, 치 형은, 메소드의 파라미터 또는 반환값으로서 값을 건네주는 것이 가능하기 때문에, 직렬화 가능하지 않으면 안 되는 것입니다.

Address 가 치 형의 경우,AddressHelper 클래스는 다음과 같이 됩니다.

abstract public class AddressHelper
{
  private static String  _id = "IDL:Address:1. 0";

  // same as for non-value type
  public static void insert (org.omg.CORBA.Any a, Address that)
  {
    org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
    a.type (type ());
    write (out, that);
    a.read_value (out.create_input_stream (), type ());
  }

  // same as for non-value type
  public static Address extract (org.omg.CORBA.Any a)
  {
    return read (a.create_input_stream ());
  }

  private static org.omg.CORBA.TypeCode __typeCode = null;
  private static boolean __active = false;
  
  // getting the typecode for the type
  synchronized public static org.omg.CORBA.TypeCode type ()
  {
    if (__typeCode == null)
    {
      synchronized (org.omg.CORBA.TypeCode.class)
      {
        if (__typeCode == null)
        {
          if (__active)
          {
            return org.omg.CORBA.ORB.init(). create_recursive_tc ( _id );
          }
          __active = true;
          org.omg.CORBA.ValueMember[] _members0 = new org.omg.CORBA.ValueMember[0];
          org.omg.CORBA.TypeCode _tcOf_members0 = null;
          __typeCode = org.omg.CORBA.ORB.init (). create_value_tc (_id, "Address", org.omg.CORBA.VM_NONE.value, null, _members0);
          __active = false;
        }
      }
    }
    return __typeCode;
  }

  // same as for non-value type
  public static String id ()
  {
    return _id;
  }

  // reads a serializable instance of Address from the given input stream
  public static Address read (org.omg.CORBA.portable.InputStream istream)
  {
    return (Address)((org.omg.CORBA_2_3.portable.InputStream) istream). read_value (id ());
  }

  // writes a serializable instance of Address to the given output stream
  public static void write (org.omg.CORBA.portable.OutputStream ostream, Address value)
  {
    ((org.omg.CORBA_2_3.portable.OutputStream) ostream). write_value (value, id ());
  }


}

다음에,org.omg.CORBA 패키지로 정의되고 있는 헬퍼 클래스를 나타냅니다.


     AnySeqHelper
     BooleanSeqHelper
     CharSeqHelper
     CompletionStatusHelper
     CurrentHelper
     DefinitionKindHelper
     DoubleSeqHelper
     FieldNameHelper
     FloatSeqHelper
     IdentifierHelper
     IDLTypeHelper
     LongLongSeqHelper
     LongSeqHelper
     NameValuePairHelper
     ObjectHelper
     OctetSeqHelper
     ParameterModeHelper
     PolicyErrorCodeHelper
     PolicyErrorHelper
     PolicyHelper
     PolicyListHelper
     PolicyTypeHelper
     RepositoryIdHelper
     ServiceDetailHelper
     ServiceInformationHelper
     SetOverrideTypeHelper
     ShortSeqHelper
     StringSeqHelper
     StringValueHelper
     StructMemberHelper
     ULongLongSeqHelper
     ULongSeqHelper
     UnionMemberHelper
     UnknownUserExceptionHelper
     UShortSeqHelper
     ValueBaseHelper
     ValueMemberHelper
     VersionSpecHelper
     VisibilityHelper
     WCharSeqHelper
     WrongTransactionHelper
     WStringSeqHelper
     WStringValueHelper

그 외의 클래스

CORBA 패키지외의 클래스 및 인터페이스 (내부에서 사용된다)는, 4 개의 그룹으로 분류할 수 있습니다. 그 중의 3 개의 그룹은, 요구에 부수 해 사용되어 4 번째의 그룹 (인터페이스 리포지터리(repository)에 관련)은, 그것 자신이 카테고리가 됩니다.

ORB 에 의해 작성되는 클래스

최초의 그룹에는, ORB 에 의해 작성되어 요구 오퍼레이션으로 사용되는 정보를 포함하는 클래스가 포함됩니다.

요구를 처리하는 클래스

2 번째의 그룹의 클래스는, 다음과 같이 요구를 처리합니다.

정수로서 기능하는 인터페이스

3 번째의 그룹에는, 정수로서 기능하는 인터페이스가 포함됩니다. IDL 로부터 Java 에의 매핑에서는, public static final 필드로서 나타내지는 열거치를 포함한 Java 클래스 (DefinitionKind 등)에 IDL 의 enum 형이 매핑 될 필요가 있습니다. 또, IDL 인터페이스외에서 정의된 IDL 정수는, 각 정수의 Java 인터페이스에 매핑 됩니다.

이 때문에,org.omg.CORBA 패키지의 복수의 인터페이스가 short 의 단일 필드,value 로 구성됩니다. 이 필드는, 에러 코드 또는 값수식자 등에 사용되는 정수입니다. 예를 들어, 인터페이스 BAD_POLICYvalue 필드는, 예외 PolicyError 가 throw 되는 이유의 1 개가 될 가능성이 있습니다. 이 에러 코드를 지정하려면 ,BAD_POLICY.value 를 사용합니다.

예외 PolicyError 에서는, 가능한 에러 코드로서 다음의 인터페이스의 value 필드가 사용됩니다.

메소드 TypeCode.type_modifier 는, 다음의 인터페이스의 1 개의 value 필드를 돌려줍니다. 이러한 인터페이스의 이름에 있는 VM 는, 「값수식자」를 나타냅니다. 다음의 정수는,ValueMember 객체의 액세스 메소드에 의해 돌려주어져ValueMember 객체의 가시성을 나타냅니다. NamedValue 객체로, 또는 메소드에의 파라미터로서 사용되는 이러한 플래그는, 다음의 인터페이스로 정의됩니다.

인터페이스 리포지터리(repository) 인터페이스와 클래스

4 번째의 그룹에는, OMG IDL 인터페이스 ir.idl 로부터,idlj 컴파일러에 의해 생성되는 인터페이스 리포지터리(repository) 인터페이스와 클래스가 있습니다. 인터페이스 리포지터리(repository)의 목적은, ORB 를 액세스 할 수 있도록(듯이), 거기에 포함되고 있는 인터페이스를 식별하는 것입니다. 각 모듈, 형태, 인터페이스, 속성, 조작, 파라미터, 예외, 정수 등은, 인터페이스 리포지터리(repository) API 에 의해 완전하게 기술됩니다.

ORB 에서는 인터페이스 리포지터리(repository)를 필요로 하지 않기 때문에, Java IDL 에는 인터페이스 리포지터리(repository)는 포함되지 않습니다. 이 릴리스에서는 인터페이스 리포지터리(repository)가 구현되고 있지 않습니다만, 형태 코드를 작성하기 위해서, 다음의 IR 클래스 및 인터페이스가 포함되어 있습니다 (인터페이스 org.omg.CORBA.ORB 의 create_value_tc, create_struct_tc, create_union_tc, 및 create_exception_tc 메소드를 참조).
&nbs


관련 문서

개요, 가이드, 및 튜토리얼에 대해서는,

Java IDL 로 구현되어 있지 않은 CORBA 기능

org.omg 서브 패키지에 포함되어 있는 API 는, 현재의 OMG CORBA 스펙에 준거하기 위해서 제공되는 것도 있습니다만, Sun 의 JDKTM 릴리스에서는 구현되고 있지 않습니다. 이것에 의해, 다른 JDK 의 라이센스 보관 유지자는, 표준 확장 기능 및 제품으로 이 API 의 구현을 제공할 수 있게 됩니다.

NO_IMPLEMENT 를 throw 하는 기능

org.omg 서브 패키지에 포함되는 API 에는, 다양한 이유에 의해 NO_IMPLEMENT 예외를 throw 하는 것이 있습니다. 그 이유로서 이하의 점을 들 수가 있습니다.

이 릴리스로 구현되어 있지 않은 기능 또는 API 의 개요


org.omg.CORBA 패키지로 구현되어 있지 않은 기능의 리스트

org.omg.CORBA 패키지로 구현되어 있지 않은 메소드

도입된 버젼:
JDK1. 2

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 도 참조해 주세요.