1 # java.schema -- Java Object Schema 2 # $OpenLDAP$ 3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4 ## 5 ## Copyright 1998-2024 The OpenLDAP Foundation. 6 ## All rights reserved. 7 ## 8 ## Redistribution and use in source and binary forms, with or without 9 ## modification, are permitted only as authorized by the OpenLDAP 10 ## Public License. 11 ## 12 ## A copy of this license is available in the file LICENSE in the 13 ## top-level directory of the distribution or, alternatively, at 14 ## <http://www.OpenLDAP.org/license.html>. 15 # 16 # Java Object Schema (defined in RFC 2713) 17 # depends upon core.schema 18 # 19 20 # Network Working Group V. Ryan 21 # Request for Comments: 2713 S. Seligman 22 # Category: Informational R. Lee 23 # Sun Microsystems, Inc. 24 # October 1999 25 # 26 # 27 # Schema for Representing Java(tm) Objects in an LDAP Directory 28 # 29 # Status of this Memo 30 # 31 # This memo provides information for the Internet community. It does 32 # not specify an Internet standard of any kind. Distribution of this 33 # memo is unlimited. 34 # 35 # Copyright Notice 36 # 37 # Copyright (C) The Internet Society (1999). All Rights Reserved. 38 # 39 # Abstract 40 # 41 # This document defines the schema for representing Java(tm) objects in 42 # an LDAP directory [LDAPv3]. It defines schema elements to represent 43 # a Java serialized object [Serial], a Java marshalled object [RMI], a 44 # Java remote object [RMI], and a JNDI reference [JNDI]. 45 # 46 47 # [trimmed] 48 49 # 3 Attribute Type Definitions 50 # 51 # The following attribute types are defined in this document: 52 # 53 # javaClassName 54 # javaClassNames 55 # javaCodebase 56 # javaSerializedData 57 # javaFactory 58 # javaReferenceAddress 59 # javaDoc 60 # 61 # 3.1 javaClassName 62 # 63 # This attribute stores the fully qualified name of the Java object's 64 # "distinguished" class or interface (for example, "java.lang.String"). 65 # It is a single-valued attribute. This attribute's syntax is ' 66 # Directory String' and its case is significant. 67 # 68 # ( 1.3.6.1.4.1.42.2.27.4.1.6 69 # NAME 'javaClassName' 70 # DESC 'Fully qualified name of distinguished Java class or 71 # interface' 72 # EQUALITY caseExactMatch 73 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 74 # SINGLE-VALUE 75 # ) 76 # 77 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6 78 NAME 'javaClassName' 79 DESC 'Fully qualified name of distinguished Java class or interface' 80 EQUALITY caseExactMatch 81 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 82 SINGLE-VALUE ) 83 84 # 3.2 javaCodebase 85 # 86 # This attribute stores the Java class definition's locations. It 87 # specifies the locations from which to load the class definition for 88 # the class specified by the javaClassName attribute. Each value of 89 # the attribute contains an ordered list of URLs, separated by spaces. 90 # For example, a value of "url1 url2 url3" means that the three 91 # (possibly interdependent) URLs (url1, url2, and url3) form the 92 # codebase for loading in the Java class definition. 93 # 94 # If the javaCodebase attribute contains more than one value, each 95 # value is an independent codebase. That is, there is no relationship 96 # between the URLs in one value and those in another; each value can be 97 # viewed as an alternate source for loading the Java class definition. 98 # See [Java] for information regarding class loading. 99 # 100 # This attribute's syntax is 'IA5 String' and its case is significant. 101 # 102 # ( 1.3.6.1.4.1.42.2.27.4.1.7 103 # NAME 'javaCodebase' 104 # DESC 'URL(s) specifying the location of class definition' 105 # EQUALITY caseExactIA5Match 106 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 107 # ) 108 # 109 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.7 110 NAME 'javaCodebase' 111 DESC 'URL(s) specifying the location of class definition' 112 EQUALITY caseExactIA5Match 113 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) 114 115 # 3.3 javaClassNames 116 # 117 # This attribute stores the Java object's fully qualified class or 118 # interface names (for example, "java.lang.String"). It is a 119 # multivalued attribute. When more than one value is present, each is 120 # the name of a class or interface, or ancestor class or interface, of 121 # this object. 122 # 123 # This attribute's syntax is 'Directory String' and its case is 124 # significant. 125 # 126 # ( 1.3.6.1.4.1.42.2.27.4.1.13 127 # NAME 'javaClassNames' 128 # DESC 'Fully qualified Java class or interface name' 129 # EQUALITY caseExactMatch 130 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 131 # ) 132 # 133 # 134 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.13 135 NAME 'javaClassNames' 136 DESC 'Fully qualified Java class or interface name' 137 EQUALITY caseExactMatch 138 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) 139 140 # 3.4 javaSerializedData 141 # 142 # This attribute stores the serialized form of a Java object. The 143 # serialized form is described in [Serial]. 144 # 145 # This attribute's syntax is 'Octet String'. 146 # 147 # ( 1.3.6.1.4.1.42.2.27.4.1.8 148 # NAME 'javaSerializedData 149 # DESC 'Serialized form of a Java object' 150 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 151 # SINGLE-VALUE 152 # ) 153 # 154 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.8 155 NAME 'javaSerializedData' 156 DESC 'Serialized form of a Java object' 157 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 158 SINGLE-VALUE ) 159 160 # 3.5 javaFactory 161 # 162 # This attribute stores the fully qualified class name of the object 163 # factory (for example, "com.wiz.jndi.WizObjectFactory") that can be 164 # used to create an instance of the object identified by the 165 # javaClassName attribute. 166 # 167 # This attribute's syntax is 'Directory String' and its case is 168 # significant. 169 # 170 # ( 1.3.6.1.4.1.42.2.27.4.1.10 171 # NAME 'javaFactory' 172 # DESC 'Fully qualified Java class name of a JNDI object factory' 173 # EQUALITY caseExactMatch 174 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 175 # SINGLE-VALUE 176 # ) 177 # 178 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.10 179 NAME 'javaFactory' 180 DESC 'Fully qualified Java class name of a JNDI object factory' 181 EQUALITY caseExactMatch 182 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 183 SINGLE-VALUE ) 184 185 # 3.6 javaReferenceAddress 186 # 187 # This attribute represents the sequence of addresses of a JNDI 188 # reference. Each of its values represents one address, a Java object 189 # of type javax.naming.RefAddr. Its value is a concatenation of the 190 # address type and address contents, preceded by a sequence number (the 191 # order of addresses in a JNDI reference is significant). For example: 192 # 193 # #0#TypeA#ValA 194 # #1#TypeB#ValB 195 # #2#TypeC##rO0ABXNyABpq... 196 # 197 # In more detail, the value is encoded as follows: 198 # 199 # The delimiter is the first character of the value. For readability 200 # the character '#' is recommended when it is not otherwise used 201 # anywhere in the value, but any character may be used subject to 202 # restrictions given below. 203 # 204 # The first delimiter is followed by the sequence number. The sequence 205 # number of an address is its position in the JNDI reference, with the 206 # first address being numbered 0. It is represented by its shortest 207 # string form, in decimal notation. 208 # 209 # The sequence number is followed by a delimiter, then by the address 210 # type, and then by another delimiter. If the address is of Java class 211 # javax.naming.StringRefAddr, then this delimiter is followed by the 212 # value of the address contents (which is a string). Otherwise, this 213 # delimiter is followed immediately by another delimiter, and then by 214 # the Base64 encoding of the serialized form of the entire address. 215 # 216 # The delimiter may be any character other than a digit or a character 217 # contained in the address type. In addition, if the address contents 218 # is a string, the delimiter may not be the first character of that 219 # string. 220 # 221 # This attribute's syntax is 'Directory String' and its case is 222 # significant. It can contain multiple values. 223 # 224 # ( 1.3.6.1.4.1.42.2.27.4.1.11 225 # NAME 'javaReferenceAddress' 226 # DESC 'Addresses associated with a JNDI Reference' 227 # EQUALITY caseExactMatch 228 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 229 # ) 230 # 231 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.11 232 NAME 'javaReferenceAddress' 233 DESC 'Addresses associated with a JNDI Reference' 234 EQUALITY caseExactMatch 235 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) 236 237 # 3.7 javaDoc 238 # 239 # This attribute stores a pointer to the Java documentation for the 240 # class. It's value is a URL. For example, the following URL points to 241 # the specification of the java.lang.String class: 242 # http://java.sun.com/products/jdk/1.2/docs/api/java/lang/String.html 243 # 244 # This attribute's syntax is 'IA5 String' and its case is significant. 245 # 246 # ( 1.3.6.1.4.1.42.2.27.4.1.12 247 # NAME 'javaDoc' 248 # DESC 'The Java documentation for the class' 249 # EQUALITY caseExactIA5Match 250 # SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 251 # ) 252 # 253 attributetype ( 1.3.6.1.4.1.42.2.27.4.1.12 254 NAME 'javaDoc' 255 DESC 'The Java documentation for the class' 256 EQUALITY caseExactIA5Match 257 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) 258 259 # 4 Object Class Definitions 260 # 261 # The following object classes are defined in this document: 262 # 263 # javaContainer 264 # javaObject 265 # javaSerializedObject 266 # javaMarshalledObject 267 # javaNamingReference 268 # 269 # 4.1 javaContainer 270 # 271 # This structural object class represents a container for a Java 272 # object. 273 # 274 # ( 1.3.6.1.4.1.42.2.27.4.2.1 275 # NAME 'javaContainer' 276 # DESC 'Container for a Java object' 277 # SUP top 278 # STRUCTURAL 279 # MUST ( cn ) 280 # ) 281 # 282 objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1 283 NAME 'javaContainer' 284 DESC 'Container for a Java object' 285 SUP top 286 STRUCTURAL 287 MUST cn ) 288 289 # 4.2 javaObject 290 # 291 # This abstract object class represents a Java object. A javaObject 292 # cannot exist in the directory; only auxiliary or structural 293 # subclasses of it can exist in the directory. 294 # 295 # ( 1.3.6.1.4.1.42.2.27.4.2.4 296 # NAME 'javaObject' 297 # DESC 'Java object representation' 298 # SUP top 299 # ABSTRACT 300 # MUST ( javaClassName ) 301 # MAY ( javaClassNames $ 302 # javaCodebase $ 303 # javaDoc $ 304 # description ) 305 # ) 306 # 307 objectclass ( 1.3.6.1.4.1.42.2.27.4.2.4 308 NAME 'javaObject' 309 DESC 'Java object representation' 310 SUP top 311 ABSTRACT 312 MUST javaClassName 313 MAY ( javaClassNames $ javaCodebase $ 314 javaDoc $ description ) ) 315 316 # 4.3 javaSerializedObject 317 # 318 # This auxiliary object class represents a Java serialized object. It 319 # must be mixed in with a structural object class. 320 # 321 # ( 1.3.6.1.4.1.42.2.27.4.2.5 322 # NAME 'javaSerializedObject' 323 # DESC 'Java serialized object' 324 # SUP javaObject 325 # AUXILIARY 326 # MUST ( javaSerializedData ) 327 # ) 328 # 329 objectclass ( 1.3.6.1.4.1.42.2.27.4.2.5 330 NAME 'javaSerializedObject' 331 DESC 'Java serialized object' 332 SUP javaObject 333 AUXILIARY 334 MUST javaSerializedData ) 335 336 # 4.4 javaMarshalledObject 337 # 338 # This auxiliary object class represents a Java marshalled object. It 339 # must be mixed in with a structural object class. 340 # 341 # ( 1.3.6.1.4.1.42.2.27.4.2.8 342 # NAME 'javaMarshalledObject' 343 # DESC 'Java marshalled object' 344 # SUP javaObject 345 # AUXILIARY 346 # MUST ( javaSerializedData ) 347 # ) 348 # 349 objectclass ( 1.3.6.1.4.1.42.2.27.4.2.8 350 NAME 'javaMarshalledObject' 351 DESC 'Java marshalled object' 352 SUP javaObject 353 AUXILIARY 354 MUST javaSerializedData ) 355 356 # 4.5 javaNamingReference 357 # 358 # This auxiliary object class represents a JNDI reference. It must be 359 # mixed in with a structural object class. 360 # 361 # ( 1.3.6.1.4.1.42.2.27.4.2.7 362 # NAME 'javaNamingReference' 363 # DESC 'JNDI reference' 364 # SUP javaObject 365 # AUXILIARY 366 # MAY ( javaReferenceAddress $ 367 # javaFactory ) 368 # ) 369 # 370 objectclass ( 1.3.6.1.4.1.42.2.27.4.2.7 371 NAME 'javaNamingReference' 372 DESC 'JNDI reference' 373 SUP javaObject 374 AUXILIARY 375 MAY ( javaReferenceAddress $ javaFactory ) ) 376 377 # Full Copyright Statement 378 # 379 # Copyright (C) The Internet Society (1999). All Rights Reserved. 380 # 381 # This document and translations of it may be copied and furnished to 382 # others, and derivative works that comment on or otherwise explain it 383 # or assist in its implementation may be prepared, copied, published 384 # and distributed, in whole or in part, without restriction of any 385 # kind, provided that the above copyright notice and this paragraph are 386 # included on all such copies and derivative works. However, this 387 # document itself may not be modified in any way, such as by removing 388 # the copyright notice or references to the Internet Society or other 389 # Internet organizations, except as needed for the purpose of 390 # developing Internet standards in which case the procedures for 391 # copyrights defined in the Internet Standards process must be 392 # followed, or as required to translate it into languages other than 393 # English. 394 # 395 # The limited permissions granted above are perpetual and will not be 396 # revoked by the Internet Society or its successors or assigns. 397 # 398 # This document and the information contained herein is provided on an 399 # "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 400 # TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 401 # BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 402 # HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 403 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 404