Home | History | Annotate | Line # | Download | only in schema
java.schema revision 1.1.1.2
      1      1.1  lukem # java.schema -- Java Object Schema
      2  1.1.1.2  lukem # OpenLDAP: pkg/ldap/servers/slapd/schema/java.schema,v 1.7.2.4 2009/01/22 00:01:14 kurt Exp
      3      1.1  lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4      1.1  lukem ##
      5  1.1.1.2  lukem ## Copyright 1998-2009 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