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