]> git.sur5r.net Git - openldap/blob - servers/slapd/schema/java.schema
72496f6e2fe3250b33d10ff5a7434ac45f9e6886
[openldap] / servers / slapd / schema / java.schema
1 # java.schema -- Java Object Schema
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 1998-2017 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.