Home | History | Annotate | Line # | Download | only in schema
java.schema revision 1.1.1.3.12.1
      1           1.1  lukem # java.schema -- Java Object Schema
      2  1.1.1.3.12.1    tls # $OpenLDAP$
      3           1.1  lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4           1.1  lukem ##
      5  1.1.1.3.12.1    tls ## Copyright 1998-2014 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