java.schema revision 1.1.1.1 1 # java.schema -- Java Object Schema
2 # $OpenLDAP: pkg/ldap/servers/slapd/schema/java.schema,v 1.7.2.3 2008/02/11 23:26:49 kurt Exp $
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 1998-2008 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