Home | History | Annotate | Line # | Download | only in schema
      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.10  christos ## Copyright 1998-2024 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