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