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