摘要
CORBA[CORBA]即“公共对象请求代理体系”(CommonObjectRequestBroker
Architecture),是由对象治理组集团(OMG)所定义。该文档为LDAP目录中的CORBA
对象参考方案[LDAPv3]进行定义。
1、绪论
该文档假设读者已经对CORBA有了一般性的理解。
一般地,LDAP目录被用来存储数据。用户与程序员把目录看成是具有一系列属性的目
录层次。你从目录中查寻一条记录并且抽取你所感爱好的一个或多个属性。例如:你可
以从目录中查寻某人的电话号码。或者,你可以在目录中搜索具体非凡属性的记录。比
如,你可以在目录中查找所有姓氏为Smith的人员。
CORBA应用需要访问CORBA对象。一般地,CORBA应用使用COS名字服务来存储
和读取CORBA对象参考。在有目录的环境下,CORBA应用应该能够把目录作为CORBA
对象参考的库来使用。目录提供核心治理,并且是可复制的,通过网络服务于分布式的
CORBA应用。
比如,一个应用服务器可能用目录来“注册”CORBA对象以执行它所治理的服务,所
以一个客户能随后查找目录来定位所需服务。
本文的目的是来定义应用程序从目录中存储与读取CORBA对象参考的公共方法。使用
这种公共方案,任何需要读取或存储目录中的CORBA对象参考的CORBA应用都能使
用一种能公共操作的方法。
注重本方案是为存储CORBA“对象参考”而定义的,不是一般情形下的CORBA对象。
可能还存在其它没有被本方案代替的在LDAP目录中保存CORBA对象的方法。
2、CORBA对象参考陈述
本文定义方案基础来描述LDAP目录中的一个CORBA对象参考。拥有对象的一个参考
的应用可以调用该对象有调用。这样的参考被称为“可公共操作的对象参考”或简称IOR
(InteroperableObjectReference)。依据一般的Inter-ORB协议,使用IOR访问CORBA
对象对于应用来说是透明地完成的。
一个CORBA对象参考是由corbaObjectReference对象类在目录中来扮演。它是个结构上
的对象类,当扮演一个对象参考时,corbaObjectReference对象类也应该是存在于记录中
的。当一个corbaObjet的子类(如corbaObjectReference)与其它结构上的对象类混合在
一起时,corbaContainer不是必需的。
关于对象类corbaOject,corbaObjectReference,和corbaContainer的定义在第4节中。
corbaObject类有两个可选的属性:corbaRepositoryId与description。corbaRepositoryId是
用来保存一个CORBA对象实现接口的repositoryid的多值属性。
corbaObjectReference类有一个固有属性:corbaIor。corbaIor是用来存储对象的IOR。
corbaIor与corbaRepositoryId在第3节中定义;描述在[v3Schema]中定义。
3、属性类型定义
以下属性类型在本文中定义:
corbaIor
corbaRepositoryId
3.1corbaIor
此属性保存一个CORBA对象的可公共操作的对象参考(IOR)的字符串类型陈述。IOR
是一个对于包含有定位对象必需信息的对象来说是不透明的操作。
此属性的语法是"IA5String"并且是大小写无关的。
(1.3.6.1.4.1.42.2.27.4.1.14
NAME"corbaIor"
DESC"StringifiedinteroperableobjectreferenceofaCORBAobject"
EQUALITYcaseIgnoreIA5Match
SYNTAX1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE
)
3.2corbaRepositoryId
每一个CORBA接口都有个唯一的“repositoryid”(也叫作“typeid”)用来确定接口。
一个CORBA对象有一个或多个repositoryid,每一个对应那个它实现的接口。
repositoryid的格式可是以任意字符串,然而OMG指定了四个标准的格式:
a. IDL-style
IDL:Prefix/ModuleName/InterfaceName:VersionNumber
例如,“NamingContext”以OMGCOS命名模式的repositoryid即为:
“IDL:omg.org/CosNaming/NamingContext:1.0”。
b. RMI-style
RMI:ClassName:HashCode[:SUID]
该格式为RMI-IIOP远程对象[RMI-IIOP]所使用。“ClassName”是完整的类名(如
Java.lang.String)。“HashCode”是该对象的HASH编码(简而言之,是由调用
“hashCode()”方法所得的)。“SUID”即StreamUniqueIdentifier,它是个64们数
字以唯一地识别类的连续性版本;SUID是repositoryid可选的项。
c. DCE-style
DCE:UUID
该格式用于DCE/CORBA互用性[CORBA-DCE]。UUID描述一个DCEUUID。
d. "local"
该格式由本地对象请求代理(ORB)定义。
此属性的语法是"DirecotryString",并且大小写无关。其值用UTF-8方式编码。有些值
可能需要转换自他们的本地化陈述以正确地用UTF-8方式编码。
(1.3.6.1.4.1.42.2.27.4.1.15
NAME"corbaRepositoryId"
DESC"RepositoryidsofinterfacesimplementedbyaCORBAobject"
EQUALITYcaseExactMatch
SYNTAX1.3.6.1.4.1.1466.115.121.1.15
)
4、对象类定义
以下对象类在文中定义:
corbaContainer
corbaObject
corbaObjectReference
4.1corbaContainer
该结构上的对象类描述一种CORBA对象的容器。
(1.3.6.1.4.1.42.2.27.4.2.10
NAME"corbaContainer"
DESC"ContainerforaCORBAobject"
SUPtop
STRUCTURAL
MUST(cn)
)
4.2corbaObject
该抽象对象类是描述一个CORBA对象的根类。
(1.3.6.1.4.1.42.2.27.4.2.9
NAME"corbaObject"
DESC"CORBAobjectrepresentation"
SUPtop
ABSTRACT
MAY(corbaRepositoryId$description)
)
4.3corbaObjectReference
该辅助对象类描述一个CORBA对象参考。它必须与一个结构上的对象类混合在一起。
(1.3.6.1.4.1.42.2.27.4.2.11
NAME"corbaObjectReference"
DESC"CORBAinteroperableobjectreference"
SUPcorbaObject
AUXILIARY
MUST(corbaIor)
)
5、安全考虑
获得一个对象的参考并保存到目录中可能会导致该对象在大范围内是可用的。这里可能
有安全方面的牵连。
6、鸣谢
我们要感谢SunMicorsystems的SanjeevKrishnan,IBM的SimonNash,和Oracle的Jeffrey
Spirn,感谢他们的意见和建议。
7、参考
[CORBA]TheObjectManagementGroup,"CommonObjectRequest
BrokerArchitectureSpecification2.2",
http://www.omg.org
[CORBA-DCE]DistributedSystemsTechnologyCenterandDigital
EquipmentCorporation,"DCE/CORBAInterworking
Specification",May1998.
http://www.omg.org/library/schedule/
DCE_CORBA_Interworking_RFP.Html
[LDAPv3]Wahl,M.,Howes,T.andS.Kille,"LightweightDirectory
AccessProtocol(v3)",RFC2251,December1997.
[RMI-IIOP]IBMandJavaSoftware,SunMicrosystems,Inc.,"RMIover
IIOP",June1999.http://java.sun.com/products/rmi-
iiop/index.html
[v3Schema]Wahl,M.,"ASummaryoftheX.500(96)UserSchemaforuse
withLDAPv3",RFC2256,December1997.
8、作者地址
VincentRyan
SunMicrosystems,Inc.
MailStopEDUB03
901SanAntonioRoad
PaloAlto,CA94303
USA
Phone:+35318199151
EMail:vincent.ryan@ireland.sun.com
RosannaLee
SunMicrosystems,Inc.
MailStopUCUP02-206
901SanAntonioRoad
PaloAlto,CA94303
USA
Phone:+14088633221
EMail:rosanna.lee@eng.sun.com
ScottSeligman
SunMicrosystems,Inc.
MailStopUCUP02-209
901SanAntonioRoad
PaloAlto,CA94303
USA
Phone:+14088633222
EMail:scott.seligman@eng.sun.com
9、附录-LDAP方案
--属性类型--
(1.3.6.1.4.1.42.2.27.4.1.14
NAME"corbaIor"
DESC"StringifiedinteroperableobjectreferenceofaCORBAobject"
EQUALITYcaseIgnoreIA5Match
SYNTAX1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE
)
(1.3.6.1.4.1.42.2.27.4.1.15
NAME"corbaRepositoryId"
DESC"RepositoryidsofinterfacesimplementedbyaCORBAobject"
EQUALITYcaseExactMatch
SYNTAX1.3.6.1.4.1.1466.115.121.1.15
)
--来自于RFC-2256--
(2.5.4.13
NAME"description"
EQUALITYcaseIgnoreMatch
SUBSTRcaseIgnoreSubstringsMatch
SYNTAX1.3.6.1.4.1.1466.115.121.1.15{1024}
)
--对象类--
(1.3.6.1.4.1.42.2.27.4.2.9
NAME"corbaObject"
DESC"CORBAobjectrepresentation"
SUPtop
ABSTRACT
MAY(corbaRepositoryId$description)
)
(1.3.6.1.4.1.42.2.27.4.2.10
NAME"corbaContainer"
DESC"ContainerforaCORBAobject"
SUPtop
STRUCTURAL
MUST(cn)
)
(1.3.6.1.4.1.42.2.27.4.2.11
NAME"corbaObjectReference"
DESC"CORBAinteroperableobjectreference"
SUPcorbaObject
AUXILIARY
MUST(corbaIor)
)
--自ISOX.520的匹配规则--
(2.5.13.5
NAME"caseExactMatch"
SYNTAX1.3.6.1.4.1.1466.115.121.1.15
)
10.完整的版权声明
Copyright(C)TheInternetSociety(1999).AllRightsReserved.
Thisdocumentandtranslationsofitmaybecopiedandfurnishedto
others,andderivativeworksthatcommentonorotherwiseeXPlainit
orassistinitsimplementationmaybeprepared,copied,published
anddistributed,inwholeorinpart,withoutrestrictionofany
kind,providedthattheabovecopyrightnoticeandthisparagraphare
includedonallsuchcopiesandderivativeworks.However,this
documentitselfmaynotbemodifiedinanyway,suchasbyremoving
thecopyrightnoticeorreferencestotheInternetSocietyorother
Internetorganizations,exceptasneededforthepurposeof
developingInternetstandardsinwhichcasetheproceduresfor
copyrightsdefinedintheInternetStandardsprocessmustbe
followed,orasrequiredtotranslateitintolanguagesotherthan
English.
Thelimitedpermissionsgrantedaboveareperpetualandwillnotbe
revokedbytheInternetSocietyoritssuccessorsorassigns.
Thisdocumentandtheinformationcontainedhereinisprovidedonan
"ASIS"basisandTHEINTERNETSOCIETYANDTHEINTERNETENGINEERING
TASKFORCEDISCLAIMSALLWARRANTIES,EXPRESSORIMPLIED,INCLUDING
BUTNOTLIMITEDTOANYWARRANTYTHATTHEUSEOFTHEINFORMATION
HEREINWILLNOTINFRINGEANYRIGHTSORANYIMPLIEDWARRANTIESOF
MERCHANTABILITYORFITNESSFORAPARTICULARPURPOSE.
Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...
07-05
Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...
07-05
KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...
07-05
Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...
07-05