Home | History | Annotate | Line # | Download | only in rfc
rfc2713.txt revision 1.1.1.1.2.2
      1  1.1.1.1.2.2  yamt 
      2  1.1.1.1.2.2  yamt 
      3  1.1.1.1.2.2  yamt 
      4  1.1.1.1.2.2  yamt 
      5  1.1.1.1.2.2  yamt 
      6  1.1.1.1.2.2  yamt 
      7  1.1.1.1.2.2  yamt Network Working Group                                            V. Ryan
      8  1.1.1.1.2.2  yamt Request for Comments: 2713                                   S. Seligman
      9  1.1.1.1.2.2  yamt Category: Informational                                           R. Lee
     10  1.1.1.1.2.2  yamt                                                   Sun Microsystems, Inc.
     11  1.1.1.1.2.2  yamt                                                             October 1999
     12  1.1.1.1.2.2  yamt 
     13  1.1.1.1.2.2  yamt 
     14  1.1.1.1.2.2  yamt      Schema for Representing Java(tm) Objects in an LDAP Directory
     15  1.1.1.1.2.2  yamt 
     16  1.1.1.1.2.2  yamt Status of this Memo
     17  1.1.1.1.2.2  yamt 
     18  1.1.1.1.2.2  yamt    This memo provides information for the Internet community.  It does
     19  1.1.1.1.2.2  yamt    not specify an Internet standard of any kind.  Distribution of this
     20  1.1.1.1.2.2  yamt    memo is unlimited.
     21  1.1.1.1.2.2  yamt 
     22  1.1.1.1.2.2  yamt Copyright Notice
     23  1.1.1.1.2.2  yamt 
     24  1.1.1.1.2.2  yamt    Copyright (C) The Internet Society (1999).  All Rights Reserved.
     25  1.1.1.1.2.2  yamt 
     26  1.1.1.1.2.2  yamt Abstract
     27  1.1.1.1.2.2  yamt 
     28  1.1.1.1.2.2  yamt    This document defines the schema for representing Java(tm) objects in
     29  1.1.1.1.2.2  yamt    an LDAP directory [LDAPv3].  It defines schema elements to represent
     30  1.1.1.1.2.2  yamt    a Java serialized object [Serial], a Java marshalled object [RMI], a
     31  1.1.1.1.2.2  yamt    Java remote object [RMI], and a JNDI reference [JNDI].
     32  1.1.1.1.2.2  yamt 
     33  1.1.1.1.2.2  yamt 1. Introduction
     34  1.1.1.1.2.2  yamt 
     35  1.1.1.1.2.2  yamt    This document assumes that the reader has a general knowledge of the
     36  1.1.1.1.2.2  yamt    Java programming language [Java].  For brevity we use the term "Java
     37  1.1.1.1.2.2  yamt    object" in place of "object in the Java programming language"
     38  1.1.1.1.2.2  yamt    throughout this text.
     39  1.1.1.1.2.2  yamt 
     40  1.1.1.1.2.2  yamt    Traditionally, LDAP directories have been used to store data. Users
     41  1.1.1.1.2.2  yamt    and programmers think of the directory as a hierarchy of directory
     42  1.1.1.1.2.2  yamt    entries, each containing a set of attributes.  You look up an entry
     43  1.1.1.1.2.2  yamt    from the directory and extract the attribute(s) of interest.  For
     44  1.1.1.1.2.2  yamt    example, you can look up a person's telephone number from the
     45  1.1.1.1.2.2  yamt    directory.  Alternatively, you can search the directory for entries
     46  1.1.1.1.2.2  yamt    with a particular set of attributes.  For example, you can search for
     47  1.1.1.1.2.2  yamt    all persons in the directory with the surname "Smith".
     48  1.1.1.1.2.2  yamt 
     49  1.1.1.1.2.2  yamt    For applications written in the Java programming language, a kind of
     50  1.1.1.1.2.2  yamt    data that is typically shared are Java objects themselves.  For such
     51  1.1.1.1.2.2  yamt    applications, it makes sense to be able to use the directory as a
     52  1.1.1.1.2.2  yamt    repository for Java objects.  The directory provides a centrally
     53  1.1.1.1.2.2  yamt    administered, and possibly replicated, service for use by Java
     54  1.1.1.1.2.2  yamt    applications distributed across the network.
     55  1.1.1.1.2.2  yamt 
     56  1.1.1.1.2.2  yamt 
     57  1.1.1.1.2.2  yamt 
     58  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 1]
     59  1.1.1.1.2.2  yamt 
     61  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
     62  1.1.1.1.2.2  yamt 
     63  1.1.1.1.2.2  yamt 
     64  1.1.1.1.2.2  yamt    For example, an application server might use the directory for
     65  1.1.1.1.2.2  yamt    "registering" objects representing the services that it manages, so
     66  1.1.1.1.2.2  yamt    that a client can later search the directory to locate those services
     67  1.1.1.1.2.2  yamt    as it needs.
     68  1.1.1.1.2.2  yamt 
     69  1.1.1.1.2.2  yamt    The motivation for this document is to define a common way for
     70  1.1.1.1.2.2  yamt    applications to store and retrieve Java objects from the directory.
     71  1.1.1.1.2.2  yamt    Using this common schema, any Java application that needs to read or
     72  1.1.1.1.2.2  yamt    store Java objects in the directory can do so in an interoperable
     73  1.1.1.1.2.2  yamt    way.
     74  1.1.1.1.2.2  yamt 
     75  1.1.1.1.2.2  yamt 2 Representation of Java Objects
     76  1.1.1.1.2.2  yamt 
     77  1.1.1.1.2.2  yamt    This document defines schema elements to represent three types of
     78  1.1.1.1.2.2  yamt    Java objects:  a Java serialized object, a Java marshalled object,
     79  1.1.1.1.2.2  yamt    and a JNDI reference. A Java remote object is stored as either a Java
     80  1.1.1.1.2.2  yamt    marshalled object or a JNDI reference.
     81  1.1.1.1.2.2  yamt 
     82  1.1.1.1.2.2  yamt 2.1 Common Representations
     83  1.1.1.1.2.2  yamt 
     84  1.1.1.1.2.2  yamt    A Java object is stored in the LDAP directory by using the object
     85  1.1.1.1.2.2  yamt    class javaObject. This is the base class from which other Java object
     86  1.1.1.1.2.2  yamt    related classes derive: javaSerializedObject, javaMarshalledObject,
     87  1.1.1.1.2.2  yamt    and javaNamingReference.  javaObject is an abstract object class,
     88  1.1.1.1.2.2  yamt    which means that a javaObject cannot exist by itself in the
     89  1.1.1.1.2.2  yamt    directory; only auxiliary or structural subclasses of it can exist in
     90  1.1.1.1.2.2  yamt    the directory.
     91  1.1.1.1.2.2  yamt 
     92  1.1.1.1.2.2  yamt    The object class javaContainer represents a directory entry dedicated
     93  1.1.1.1.2.2  yamt    to storing a Java object. It is a structural object class.  In cases
     94  1.1.1.1.2.2  yamt    where a subclass of javaObject is mixed in with another structural
     95  1.1.1.1.2.2  yamt    object class, javaContainer is not required.
     96  1.1.1.1.2.2  yamt 
     97  1.1.1.1.2.2  yamt    The definitions for the object classes javaObject and javaContainer
     98  1.1.1.1.2.2  yamt    are presented in Section 4.
     99  1.1.1.1.2.2  yamt 
    100  1.1.1.1.2.2  yamt    The javaObject class has one mandatory attribute (javaClassName) and
    101  1.1.1.1.2.2  yamt    four optional attributes (javaClassNames, javaCodebase, javaDoc,
    102  1.1.1.1.2.2  yamt    description).  javaClassName is a single valued attribute that is
    103  1.1.1.1.2.2  yamt    used to store the fully qualified name of the object's Java class
    104  1.1.1.1.2.2  yamt    (for example, "java.lang.String").  This may be the object's most
    105  1.1.1.1.2.2  yamt    derived class's name, but does not have to be; that of a superclass
    106  1.1.1.1.2.2  yamt    or interface in some cases might be most appropriate.  This attribute
    107  1.1.1.1.2.2  yamt    is intended for storing the name of the object's "distinguished"
    108  1.1.1.1.2.2  yamt    class, that is, the class or interface with which the object should
    109  1.1.1.1.2.2  yamt    be identified.
    110  1.1.1.1.2.2  yamt 
    111  1.1.1.1.2.2  yamt 
    112  1.1.1.1.2.2  yamt 
    113  1.1.1.1.2.2  yamt 
    114  1.1.1.1.2.2  yamt 
    115  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 2]
    116  1.1.1.1.2.2  yamt 
    118  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    119  1.1.1.1.2.2  yamt 
    120  1.1.1.1.2.2  yamt 
    121  1.1.1.1.2.2  yamt    javaClassNames is a multivalued attribute that is used to store the
    122  1.1.1.1.2.2  yamt    fully qualified names of the object's Java classes and interfaces
    123  1.1.1.1.2.2  yamt    (for example, "java.lang.Byte"). Like all multivalued attributes, the
    124  1.1.1.1.2.2  yamt    javaClassNames attribute's values are unordered and so no one value
    125  1.1.1.1.2.2  yamt    is more "distinguished" than the others. This attribute is intended
    126  1.1.1.1.2.2  yamt    for storing an object's class and interface names and those of its
    127  1.1.1.1.2.2  yamt    ancestor classes and interfaces, although the list of values does not
    128  1.1.1.1.2.2  yamt    have to be complete.  If the javaClassNames attribute is present, it
    129  1.1.1.1.2.2  yamt    should include the value of javaClassName.
    130  1.1.1.1.2.2  yamt 
    131  1.1.1.1.2.2  yamt    For example, suppose an object is stored in the directory with a
    132  1.1.1.1.2.2  yamt    javaClassName attribute of "java.io.FilePermission", and a
    133  1.1.1.1.2.2  yamt    javaClassNames attribute of {"java.security.Permission",
    134  1.1.1.1.2.2  yamt    "java.io.FilePermission", "java.security.Guard",
    135  1.1.1.1.2.2  yamt    "java.io.Serializable"}. An application searching a directory for
    136  1.1.1.1.2.2  yamt    Java objects might use javaClassName to produce a summary of the
    137  1.1.1.1.2.2  yamt    names and types of Java objects in that directory.  Another
    138  1.1.1.1.2.2  yamt    application might use the javaClassNames attribute to find, for
    139  1.1.1.1.2.2  yamt    example, all java.security.Permission objects.
    140  1.1.1.1.2.2  yamt 
    141  1.1.1.1.2.2  yamt    javaCodebase is a multivalued attribute that is used to store the
    142  1.1.1.1.2.2  yamt    location(s) of the object's class definition.  javaDoc is used to
    143  1.1.1.1.2.2  yamt    store a pointer (URL) to the Java documentation for the class.
    144  1.1.1.1.2.2  yamt    description is used to store a textual description of a Java object
    145  1.1.1.1.2.2  yamt    and is defined in [v3Schema]. The definitions of these attributes are
    146  1.1.1.1.2.2  yamt    presented in Section 3.
    147  1.1.1.1.2.2  yamt 
    148  1.1.1.1.2.2  yamt 2.2 Serialized Objects
    149  1.1.1.1.2.2  yamt 
    150  1.1.1.1.2.2  yamt    To "serialize" an object means to convert its state into a byte
    151  1.1.1.1.2.2  yamt    stream in such a way that the byte stream can be converted back into
    152  1.1.1.1.2.2  yamt    a copy of the object.  A Java object is "serializable" if its class
    153  1.1.1.1.2.2  yamt    or any of its superclasses implements either the java.io.Serializable
    154  1.1.1.1.2.2  yamt    interface or its subinterface java.io.Externalizable.
    155  1.1.1.1.2.2  yamt    "Deserialization" is the process of converting the serialized form of
    156  1.1.1.1.2.2  yamt    an object back into a copy of the object.  When an object is
    157  1.1.1.1.2.2  yamt    serialized, the entire tree of objects rooted at the object is also
    158  1.1.1.1.2.2  yamt    serialized. When it is deserialized, the tree is reconstructed. For
    159  1.1.1.1.2.2  yamt    example, suppose a serializable Book object contains (a serializable
    160  1.1.1.1.2.2  yamt    field of) an array of Page objects.  When a Book object is
    161  1.1.1.1.2.2  yamt    serialized, so is the array of Page objects.
    162  1.1.1.1.2.2  yamt 
    163  1.1.1.1.2.2  yamt    The Java platform specifies a default algorithm by which serializable
    164  1.1.1.1.2.2  yamt    objects are serialized. A Java class can also override this default
    165  1.1.1.1.2.2  yamt    serialization with its own algorithm.  [Serial] describes object
    166  1.1.1.1.2.2  yamt    serialization in detail.
    167  1.1.1.1.2.2  yamt 
    168  1.1.1.1.2.2  yamt 
    169  1.1.1.1.2.2  yamt 
    170  1.1.1.1.2.2  yamt 
    171  1.1.1.1.2.2  yamt 
    172  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 3]
    173  1.1.1.1.2.2  yamt 
    175  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    176  1.1.1.1.2.2  yamt 
    177  1.1.1.1.2.2  yamt 
    178  1.1.1.1.2.2  yamt    When an object is serialized, information that identifies its class
    179  1.1.1.1.2.2  yamt    is recorded in the serialized stream. However, the class's definition
    180  1.1.1.1.2.2  yamt    ("class file") itself is not recorded. It is the responsibility of
    181  1.1.1.1.2.2  yamt    the system that is deserializing the object to determine the
    182  1.1.1.1.2.2  yamt    mechanism to use for locating and loading the associated class
    183  1.1.1.1.2.2  yamt    definitions. For example, the Java application might include in its
    184  1.1.1.1.2.2  yamt    classpath a JAR file containing the class definitions of the
    185  1.1.1.1.2.2  yamt    serialized object, or load the class definitions using information
    186  1.1.1.1.2.2  yamt    from the directory, as explained below.
    187  1.1.1.1.2.2  yamt 
    188  1.1.1.1.2.2  yamt 2.2.1 Representation in the Directory
    189  1.1.1.1.2.2  yamt 
    190  1.1.1.1.2.2  yamt    A serialized object is represented in the directory by the attributes
    191  1.1.1.1.2.2  yamt    javaClassName, javaClassNames, javaCodebase, and javaSerializedData,
    192  1.1.1.1.2.2  yamt    as defined in Section 3.  The mandatory attribute,
    193  1.1.1.1.2.2  yamt    javaSerializedData, contains the serialized form of the object.
    194  1.1.1.1.2.2  yamt    Although the serialized form already contains the class name, the
    195  1.1.1.1.2.2  yamt    mandatory javaClassName attribute also records the class name of the
    196  1.1.1.1.2.2  yamt    serialized object so that applications can determined class
    197  1.1.1.1.2.2  yamt    information without having to first deserialize the object.  The
    198  1.1.1.1.2.2  yamt    optional javaClassNames attribute is used to record additional class
    199  1.1.1.1.2.2  yamt    information about the serialized object.  The optional javaCodebase
    200  1.1.1.1.2.2  yamt    attribute is used to record the locations of the class definitions
    201  1.1.1.1.2.2  yamt    needed to deserialize the serialized object.
    202  1.1.1.1.2.2  yamt 
    203  1.1.1.1.2.2  yamt    A directory entry that contains a serialized object is represented by
    204  1.1.1.1.2.2  yamt    the object class javaSerializedObject, which is a subclass of
    205  1.1.1.1.2.2  yamt    javaObject.  javaSerializedObject is an auxiliary object class, which
    206  1.1.1.1.2.2  yamt    means that it needs to be mixed in with a structural object class.
    207  1.1.1.1.2.2  yamt    javaSerializedObject's definition is given in Section 4.
    208  1.1.1.1.2.2  yamt 
    209  1.1.1.1.2.2  yamt 2.3 Marshalled Objects
    210  1.1.1.1.2.2  yamt 
    211  1.1.1.1.2.2  yamt    To "marshal" an object means to record its state and codebase(s) in
    212  1.1.1.1.2.2  yamt    such a way that when the marshalled object is "unmarshalled," a copy
    213  1.1.1.1.2.2  yamt    of the original object is obtained, possibly by automatically loading
    214  1.1.1.1.2.2  yamt    the class definitions of the object.  You can marshal any object that
    215  1.1.1.1.2.2  yamt    is serializable or remote (that is, implements the java.rmi.Remote
    216  1.1.1.1.2.2  yamt    interface).  Marshalling is like serialization, except marshalling
    217  1.1.1.1.2.2  yamt    also records codebases. Marshalling is different from serialization
    218  1.1.1.1.2.2  yamt    in that marshalling treats remote objects specially. If an object is
    219  1.1.1.1.2.2  yamt    a java.rmi.Remote object, marshalling records the remote object's
    220  1.1.1.1.2.2  yamt    "stub" (see Section 2.5), instead of the remote object itself.  Like
    221  1.1.1.1.2.2  yamt    serialization, when an object is marshalled, the entire tree of
    222  1.1.1.1.2.2  yamt    objects rooted at the object is marshalled. When it is unmarshalled,
    223  1.1.1.1.2.2  yamt    the tree is reconstructed.
    224  1.1.1.1.2.2  yamt 
    225  1.1.1.1.2.2  yamt 
    226  1.1.1.1.2.2  yamt 
    227  1.1.1.1.2.2  yamt 
    228  1.1.1.1.2.2  yamt 
    229  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 4]
    230  1.1.1.1.2.2  yamt 
    232  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    233  1.1.1.1.2.2  yamt 
    234  1.1.1.1.2.2  yamt 
    235  1.1.1.1.2.2  yamt    A "marshalled" object is the represented by the
    236  1.1.1.1.2.2  yamt    java.rmi.MarshalledObject class. Here's an example of how to create
    237  1.1.1.1.2.2  yamt    MarshalledObjects for serializable and remote objects:
    238  1.1.1.1.2.2  yamt 
    239  1.1.1.1.2.2  yamt        java.io.Serializable sobj = ...;
    240  1.1.1.1.2.2  yamt        java.rmi.MarshalledObject mobj1 =
    241  1.1.1.1.2.2  yamt            new java.rmi.MarshalledObject(sobj);
    242  1.1.1.1.2.2  yamt 
    243  1.1.1.1.2.2  yamt        java.rmi.Remote robj = ...;
    244  1.1.1.1.2.2  yamt        java.rmi.MarshalledObject mobj2 =
    245  1.1.1.1.2.2  yamt            new java.rmi.MarshalledObject(robj);
    246  1.1.1.1.2.2  yamt 
    247  1.1.1.1.2.2  yamt    Then, to retrieve the original objects from the MarshalledObjects, do
    248  1.1.1.1.2.2  yamt    as follows:
    249  1.1.1.1.2.2  yamt 
    250  1.1.1.1.2.2  yamt        java.io.Serializable sobj = (java.io.Serializable) mobj1.get();
    251  1.1.1.1.2.2  yamt        java.io.Remote rstub = (java.io.Remote) mobj2.get();
    252  1.1.1.1.2.2  yamt 
    253  1.1.1.1.2.2  yamt    MarshalledObject is available only on the Java 2 Platform, Standard
    254  1.1.1.1.2.2  yamt    Edition, v1.2, and higher releases.
    255  1.1.1.1.2.2  yamt 
    256  1.1.1.1.2.2  yamt 2.3.1 Representation in the Directory
    257  1.1.1.1.2.2  yamt 
    258  1.1.1.1.2.2  yamt    A marshalled object is represented in the directory by the attributes
    259  1.1.1.1.2.2  yamt    javaClassName, javaClassNames, and javaSerializedData, as defined in
    260  1.1.1.1.2.2  yamt    Section 3.  The mandatory attribute, javaSerializedData, contains the
    261  1.1.1.1.2.2  yamt    serialized form of the marshalled object (that is, the serialized
    262  1.1.1.1.2.2  yamt    form of a MarshalledObject instance).  The mandatory javaClassName
    263  1.1.1.1.2.2  yamt    attribute records the distinguished class name of the object before
    264  1.1.1.1.2.2  yamt    it has been marshalled.  The optional javaClassNames attribute is
    265  1.1.1.1.2.2  yamt    used to record additional class information about the object before
    266  1.1.1.1.2.2  yamt    it has been marshalled.
    267  1.1.1.1.2.2  yamt 
    268  1.1.1.1.2.2  yamt    A directory entry that contains a marshalled object is represented by
    269  1.1.1.1.2.2  yamt    the object class javaMarshalledObject, which is a subclass of
    270  1.1.1.1.2.2  yamt    javaObject.  javaMarshalledObject is an auxiliary object class, which
    271  1.1.1.1.2.2  yamt    means that it needs to be mixed in with a structural object class.
    272  1.1.1.1.2.2  yamt    javaMarshalledObject's definition is given in Section 4.
    273  1.1.1.1.2.2  yamt 
    274  1.1.1.1.2.2  yamt    As evident in this description, a javaMarshalledObject differs from a
    275  1.1.1.1.2.2  yamt    javaSerializedObject only in the interpretation of the javaClassName
    276  1.1.1.1.2.2  yamt    and javaClassNames attributes.
    277  1.1.1.1.2.2  yamt 
    278  1.1.1.1.2.2  yamt 
    279  1.1.1.1.2.2  yamt 
    280  1.1.1.1.2.2  yamt 
    281  1.1.1.1.2.2  yamt 
    282  1.1.1.1.2.2  yamt 
    283  1.1.1.1.2.2  yamt 
    284  1.1.1.1.2.2  yamt 
    285  1.1.1.1.2.2  yamt 
    286  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 5]
    287  1.1.1.1.2.2  yamt 
    289  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    290  1.1.1.1.2.2  yamt 
    291  1.1.1.1.2.2  yamt 
    292  1.1.1.1.2.2  yamt 2.4 JNDI References
    293  1.1.1.1.2.2  yamt 
    294  1.1.1.1.2.2  yamt    Java Naming and Directory Interface(tm) (JNDI) is a directory access
    295  1.1.1.1.2.2  yamt    API specified in the Java programming language [JNDI].  It provides
    296  1.1.1.1.2.2  yamt    an object-oriented view of the directory, allowing Java objects to be
    297  1.1.1.1.2.2  yamt    added to and retrieved from the directory without requiring the
    298  1.1.1.1.2.2  yamt    client to manage data representation issues.
    299  1.1.1.1.2.2  yamt 
    300  1.1.1.1.2.2  yamt    JNDI defines the notion of a "reference" for use when an object
    301  1.1.1.1.2.2  yamt    cannot be stored in the directory directly, or when it is
    302  1.1.1.1.2.2  yamt    inappropriate or undesirable to do so.  An object with an associated
    303  1.1.1.1.2.2  yamt    reference is stored in the directory indirectly, by storing its
    304  1.1.1.1.2.2  yamt    reference instead.
    305  1.1.1.1.2.2  yamt 
    306  1.1.1.1.2.2  yamt 2.4.1 Contents of a Reference
    307  1.1.1.1.2.2  yamt 
    308  1.1.1.1.2.2  yamt    A JNDI reference is a Java object of class javax.naming.Reference.
    309  1.1.1.1.2.2  yamt    It consists of class information about the object being referenced
    310  1.1.1.1.2.2  yamt    and an ordered list of addresses.  An address is a Java object of
    311  1.1.1.1.2.2  yamt    class javax.naming.RefAddr.  Each address contains information on how
    312  1.1.1.1.2.2  yamt    to construct the object.
    313  1.1.1.1.2.2  yamt 
    314  1.1.1.1.2.2  yamt    A common use for JNDI references is to represent connections to a
    315  1.1.1.1.2.2  yamt    network service such as a database, directory, or file system.  Each
    316  1.1.1.1.2.2  yamt    address may then identify a "communications endpoint" for that
    317  1.1.1.1.2.2  yamt    service, containing information on how to contact the service.
    318  1.1.1.1.2.2  yamt    Multiple addresses may arise for various reasons, such as replication
    319  1.1.1.1.2.2  yamt    or the object offering interfaces over more than one communication
    320  1.1.1.1.2.2  yamt    mechanism.
    321  1.1.1.1.2.2  yamt 
    322  1.1.1.1.2.2  yamt    A reference also contains information to assist in the creation of an
    323  1.1.1.1.2.2  yamt    instance of the object to which the reference refers.  It contains
    324  1.1.1.1.2.2  yamt    the Java class name of that object, and the class name and location
    325  1.1.1.1.2.2  yamt    of the object factory to be used to create the object.  The
    326  1.1.1.1.2.2  yamt    procedures for creating an object given its reference and the reverse
    327  1.1.1.1.2.2  yamt    are described in [JNDI].
    328  1.1.1.1.2.2  yamt 
    329  1.1.1.1.2.2  yamt 2.4.2 Representation in the Directory
    330  1.1.1.1.2.2  yamt 
    331  1.1.1.1.2.2  yamt    A JNDI reference is stored in the directory by using the attributes
    332  1.1.1.1.2.2  yamt    javaClassName, javaClassNames, javaCodebase, javaReferenceAddress,
    333  1.1.1.1.2.2  yamt    and javaFactory, defined in Section 3.  These attributes store
    334  1.1.1.1.2.2  yamt    information corresponding to the contents of a reference described
    335  1.1.1.1.2.2  yamt    above.  javaReferenceAddress is a multivalued optional attribute for
    336  1.1.1.1.2.2  yamt    storing reference addresses.  javaFactory is the optional attribute
    337  1.1.1.1.2.2  yamt    for storing the object factory's fully qualified class name.  The
    338  1.1.1.1.2.2  yamt    mandatory javaClassName attribute is used to store the name of the
    339  1.1.1.1.2.2  yamt    distinguished class of the object.  The optional javaClassNames
    340  1.1.1.1.2.2  yamt 
    341  1.1.1.1.2.2  yamt 
    342  1.1.1.1.2.2  yamt 
    343  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 6]
    344  1.1.1.1.2.2  yamt 
    346  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    347  1.1.1.1.2.2  yamt 
    348  1.1.1.1.2.2  yamt 
    349  1.1.1.1.2.2  yamt    attribute is used to record additional class and interface names.
    350  1.1.1.1.2.2  yamt    The optional javaCodebase attribute is used to store the locations of
    351  1.1.1.1.2.2  yamt    the object factory's and the object's class definitions.
    352  1.1.1.1.2.2  yamt 
    353  1.1.1.1.2.2  yamt    A directory entry containing a JNDI reference is represented by the
    354  1.1.1.1.2.2  yamt    object class javaNamingReference, which is a subclass of javaObject.
    355  1.1.1.1.2.2  yamt    javaNamingReference is an auxiliary object class, which means that it
    356  1.1.1.1.2.2  yamt    needs to be mixed in with a structural object class.
    357  1.1.1.1.2.2  yamt    javaNamingReference's definition is given in Section 4.
    358  1.1.1.1.2.2  yamt 
    359  1.1.1.1.2.2  yamt 2.5 Remote Objects
    360  1.1.1.1.2.2  yamt 
    361  1.1.1.1.2.2  yamt    The Java Remote Method Invocation (RMI) system [RMI] is a mechanism
    362  1.1.1.1.2.2  yamt    that enables an object on one Java virtual machine to invoke methods
    363  1.1.1.1.2.2  yamt    on an object in another Java virtual machine. Any object whose
    364  1.1.1.1.2.2  yamt    methods can be invoked in this way must implement the java.rmi.Remote
    365  1.1.1.1.2.2  yamt    interface.  When such an object is invoked, its arguments are
    366  1.1.1.1.2.2  yamt    marshalled and sent from the local virtual machine to the remote one,
    367  1.1.1.1.2.2  yamt    where the arguments are unmarshalled and used.  When the method
    368  1.1.1.1.2.2  yamt    terminates, the results are marshalled from the remote machine and
    369  1.1.1.1.2.2  yamt    sent to the caller's virtual machine.
    370  1.1.1.1.2.2  yamt 
    371  1.1.1.1.2.2  yamt    To make a remote object accessible to other virtual machines, a
    372  1.1.1.1.2.2  yamt    program typically registers it with the RMI registry.  The program
    373  1.1.1.1.2.2  yamt    supplies to the RMI registry the string name of the remote object and
    374  1.1.1.1.2.2  yamt    the remote object itself.  When a program wants to access a remote
    375  1.1.1.1.2.2  yamt    object, it supplies the object's string name to the RMI registry on
    376  1.1.1.1.2.2  yamt    the same machine as the remote object.  The RMI registry returns to
    377  1.1.1.1.2.2  yamt    the caller a reference (called "stub") to the remote object.  When
    378  1.1.1.1.2.2  yamt    the program receives the stub for the remote object, it can invoke
    379  1.1.1.1.2.2  yamt    methods on the remote object (through the stub).  A program can also
    380  1.1.1.1.2.2  yamt    obtain references to remote objects as a result of remote calls to
    381  1.1.1.1.2.2  yamt    other remote objects or from other naming services.  For example, the
    382  1.1.1.1.2.2  yamt    program can look up a reference to a remote object from an LDAP
    383  1.1.1.1.2.2  yamt    server that supports the schema defined in this document.
    384  1.1.1.1.2.2  yamt 
    385  1.1.1.1.2.2  yamt    The string name accepted by the RMI registry has the syntax
    386  1.1.1.1.2.2  yamt    "rmi://hostname:port/remoteObjectName", where "hostname" and "port"
    387  1.1.1.1.2.2  yamt    identify the machine and port on which the RMI registry is running,
    388  1.1.1.1.2.2  yamt    respectively, and "remoteObjectName" is the string name of the remote
    389  1.1.1.1.2.2  yamt    object.  "hostname", "port", and the prefix, "rmi:", are optional. If
    390  1.1.1.1.2.2  yamt    "hostname" is not specified, it defaults to the local host.  If
    391  1.1.1.1.2.2  yamt    "port" is not specified, it defaults to 1099.  If "remoteObjectName"
    392  1.1.1.1.2.2  yamt    is not specified, then the object being named is the RMI registry
    393  1.1.1.1.2.2  yamt    itself.  See [RMI] for details.
    394  1.1.1.1.2.2  yamt 
    395  1.1.1.1.2.2  yamt 
    396  1.1.1.1.2.2  yamt 
    397  1.1.1.1.2.2  yamt 
    398  1.1.1.1.2.2  yamt 
    399  1.1.1.1.2.2  yamt 
    400  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 7]
    401  1.1.1.1.2.2  yamt 
    403  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    404  1.1.1.1.2.2  yamt 
    405  1.1.1.1.2.2  yamt 
    406  1.1.1.1.2.2  yamt    RMI can be supported using different protocols: the Java Remote
    407  1.1.1.1.2.2  yamt    Method Protocol (JRMP) and the Internet Inter-ORB Protocol (IIOP).
    408  1.1.1.1.2.2  yamt    The JRMP is a specialized protocol designed for RMI; the IIOP is the
    409  1.1.1.1.2.2  yamt    standard protocol for communication between CORBA objects [CORBA].
    410  1.1.1.1.2.2  yamt    RMI over IIOP allows Java remote objects to communicate with CORBA
    411  1.1.1.1.2.2  yamt    objects which might be written in a non-Java programming language
    412  1.1.1.1.2.2  yamt    [RMI-IIOP].
    413  1.1.1.1.2.2  yamt 
    414  1.1.1.1.2.2  yamt 2.5.1 Representation in the Directory
    415  1.1.1.1.2.2  yamt 
    416  1.1.1.1.2.2  yamt    Remote objects that use the IIOP are represented in the directory as
    417  1.1.1.1.2.2  yamt    CORBA object references [CORBA-LDAP].  Remote objects that use the
    418  1.1.1.1.2.2  yamt    JRMP are represented in the directory in one of two ways: as a
    419  1.1.1.1.2.2  yamt    marshalled object, or as a JNDI reference.
    420  1.1.1.1.2.2  yamt 
    421  1.1.1.1.2.2  yamt    A marshalled object records the codebases of the remote object's stub
    422  1.1.1.1.2.2  yamt    and any serializable or remote objects that it references, and
    423  1.1.1.1.2.2  yamt    replaces remote objects with their stubs.  To store a Remote object
    424  1.1.1.1.2.2  yamt    as a marshalled object (java.rmi.MarshalledObject), you first create
    425  1.1.1.1.2.2  yamt    a java.rmi.MarshalledObject instance for it.
    426  1.1.1.1.2.2  yamt 
    427  1.1.1.1.2.2  yamt        java.rmi.Remote robj = ...;
    428  1.1.1.1.2.2  yamt        java.rmi.MarshalledObject mobj =
    429  1.1.1.1.2.2  yamt            new java.rmi.MarshalledObject(robj);
    430  1.1.1.1.2.2  yamt 
    431  1.1.1.1.2.2  yamt    You can then store the MarshalledObject instance as a
    432  1.1.1.1.2.2  yamt    javaMarshalledObject.  The javaClassName attribute should contain the
    433  1.1.1.1.2.2  yamt    fully qualified name of the distinguished class of the remote object.
    434  1.1.1.1.2.2  yamt    The javaClassNames attribute should contain the names of the classes
    435  1.1.1.1.2.2  yamt    and interfaces of the remote object.  To read the remote object back
    436  1.1.1.1.2.2  yamt    from the directory, first deserialize the contents of the
    437  1.1.1.1.2.2  yamt    javaSerializedData to get a MarshalledObject (mobj), then retrieve it
    438  1.1.1.1.2.2  yamt    from the MarshalledObject as follows:
    439  1.1.1.1.2.2  yamt 
    440  1.1.1.1.2.2  yamt        java.rmi.Remote robj = (java.rmi.Remote)mobj.get();
    441  1.1.1.1.2.2  yamt 
    442  1.1.1.1.2.2  yamt    This returns the remote stub, which you can then use to invoke remote
    443  1.1.1.1.2.2  yamt    methods.
    444  1.1.1.1.2.2  yamt 
    445  1.1.1.1.2.2  yamt    MarshalledObject is available only on the Java 2 Platform, Standard
    446  1.1.1.1.2.2  yamt    Edition, v1.2 and higher releases. Therefore, a remote object stored
    447  1.1.1.1.2.2  yamt    as a MarshalledObject can only be read by clients using the the Java
    448  1.1.1.1.2.2  yamt    2 Platform, Standard Edition, v1.2 or higher releases.
    449  1.1.1.1.2.2  yamt 
    450  1.1.1.1.2.2  yamt 
    451  1.1.1.1.2.2  yamt 
    452  1.1.1.1.2.2  yamt 
    453  1.1.1.1.2.2  yamt 
    454  1.1.1.1.2.2  yamt 
    455  1.1.1.1.2.2  yamt 
    456  1.1.1.1.2.2  yamt 
    457  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 8]
    458  1.1.1.1.2.2  yamt 
    460  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    461  1.1.1.1.2.2  yamt 
    462  1.1.1.1.2.2  yamt 
    463  1.1.1.1.2.2  yamt    To store a remote object as a JNDI reference, you first create a
    464  1.1.1.1.2.2  yamt    javax.naming.Reference object instance for it using the remote
    465  1.1.1.1.2.2  yamt    object's string name as it has been, or will be, recorded with the
    466  1.1.1.1.2.2  yamt    RMI registry, with the additional restriction that the "rmi:" prefix
    467  1.1.1.1.2.2  yamt    must be present. Here's an example:
    468  1.1.1.1.2.2  yamt 
    469  1.1.1.1.2.2  yamt        javax.naming.Reference ref = new javax.naming.Reference(
    470  1.1.1.1.2.2  yamt          obj.getClass().getName(),
    471  1.1.1.1.2.2  yamt          new javax.naming.StringRefAddr("URL",
    472  1.1.1.1.2.2  yamt              "rmi://rserver/AppRemoteObjectX"));
    473  1.1.1.1.2.2  yamt 
    474  1.1.1.1.2.2  yamt    You then store the javax.naming.Reference instance as a
    475  1.1.1.1.2.2  yamt    javaNamingReference.  The advantage of using a JNDI reference is that
    476  1.1.1.1.2.2  yamt    this can be done without a reference to the remote object. In fact,
    477  1.1.1.1.2.2  yamt    the remote object does not have to exist at the time that this
    478  1.1.1.1.2.2  yamt    recording in the directory is made.  The remote object needs to exist
    479  1.1.1.1.2.2  yamt    and be bound with the RMI registry when the object is looked up from
    480  1.1.1.1.2.2  yamt    the directory.
    481  1.1.1.1.2.2  yamt 
    482  1.1.1.1.2.2  yamt 2.6  Serialized Objects Vs. Marshalled Objects Vs. References
    483  1.1.1.1.2.2  yamt 
    484  1.1.1.1.2.2  yamt    The object classes defined in this document store different aspects
    485  1.1.1.1.2.2  yamt    of the Java objects.
    486  1.1.1.1.2.2  yamt 
    487  1.1.1.1.2.2  yamt    A javaSerializedObject or a serializable object stored as a
    488  1.1.1.1.2.2  yamt    javaMarshalledObject represents the object itself, while a
    489  1.1.1.1.2.2  yamt    javaNamingReference or a remote object stored as a
    490  1.1.1.1.2.2  yamt    javaMarshalledObject represents a "pointer" to the object.
    491  1.1.1.1.2.2  yamt 
    492  1.1.1.1.2.2  yamt    When storing a serializable object in the directory, you have a
    493  1.1.1.1.2.2  yamt    choice of storing it as a javaSerializedObject or a
    494  1.1.1.1.2.2  yamt    javaMarshalledObject.  The javaSerializedObject object class provides
    495  1.1.1.1.2.2  yamt    the basic way in which to store serializable objects. When you create
    496  1.1.1.1.2.2  yamt    an LDAP entry using the javaSerializableObject object class, you must
    497  1.1.1.1.2.2  yamt    explicitly set the javaCodebase attribute if you want readers of that
    498  1.1.1.1.2.2  yamt    entry to know where to load the class definitions of the object. When
    499  1.1.1.1.2.2  yamt    you create an LDAP entry using the javaMarshalledObject object class,
    500  1.1.1.1.2.2  yamt    you use the MarshalledObject class.  The MarshalledObject class uses
    501  1.1.1.1.2.2  yamt    the RMI infrastructure available on the Java platform to automate how
    502  1.1.1.1.2.2  yamt    codebase information is gathered and recorded, thus freeing you from
    503  1.1.1.1.2.2  yamt    having to set the javaCodebase attribute. On the other hand, the
    504  1.1.1.1.2.2  yamt    javaCodebase attribute is human-readable and can be updated easily by
    505  1.1.1.1.2.2  yamt    using text-based tools without having to change other parts of the
    506  1.1.1.1.2.2  yamt    entry.  This allows you, for instance, to move the class definitions
    507  1.1.1.1.2.2  yamt    to another location and then update the javaCodebase attribute to
    508  1.1.1.1.2.2  yamt    reflect the move without having to update the serialized object
    509  1.1.1.1.2.2  yamt    itself.
    510  1.1.1.1.2.2  yamt 
    511  1.1.1.1.2.2  yamt 
    512  1.1.1.1.2.2  yamt 
    513  1.1.1.1.2.2  yamt 
    514  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                      [Page 9]
    515  1.1.1.1.2.2  yamt 
    517  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    518  1.1.1.1.2.2  yamt 
    519  1.1.1.1.2.2  yamt 
    520  1.1.1.1.2.2  yamt    A javaNamingReference provides a way of recording address information
    521  1.1.1.1.2.2  yamt    about an object which itself is not directly stored in the directory.
    522  1.1.1.1.2.2  yamt    A remote object stored as a javaMarshalledObject also records address
    523  1.1.1.1.2.2  yamt    information (the object's "stub") of an object which itself is not
    524  1.1.1.1.2.2  yamt    directory stored in the directory.  In other words, you can think of
    525  1.1.1.1.2.2  yamt    these as compact representations of the information required to
    526  1.1.1.1.2.2  yamt    access the object.
    527  1.1.1.1.2.2  yamt 
    528  1.1.1.1.2.2  yamt    A javaNamingReference typically consists of a small number of human-
    529  1.1.1.1.2.2  yamt    readable strings.  Standard text-based tools for directory
    530  1.1.1.1.2.2  yamt    administration may therefore be used to add, read, or modify
    531  1.1.1.1.2.2  yamt    reference entries -- if so desired -- quite easily.  Serialized and
    532  1.1.1.1.2.2  yamt    marshalled objects are not intended to be read or manipulated
    533  1.1.1.1.2.2  yamt    directly by humans.
    534  1.1.1.1.2.2  yamt 
    535  1.1.1.1.2.2  yamt 3 Attribute Type Definitions
    536  1.1.1.1.2.2  yamt 
    537  1.1.1.1.2.2  yamt    The following attribute types are defined in this document:
    538  1.1.1.1.2.2  yamt 
    539  1.1.1.1.2.2  yamt        javaClassName
    540  1.1.1.1.2.2  yamt        javaClassNames
    541  1.1.1.1.2.2  yamt        javaCodebase
    542  1.1.1.1.2.2  yamt        javaSerializedData
    543  1.1.1.1.2.2  yamt        javaFactory
    544  1.1.1.1.2.2  yamt        javaReferenceAddress
    545  1.1.1.1.2.2  yamt        javaDoc
    546  1.1.1.1.2.2  yamt 
    547  1.1.1.1.2.2  yamt 3.1 javaClassName
    548  1.1.1.1.2.2  yamt 
    549  1.1.1.1.2.2  yamt    This attribute stores the fully qualified name of the Java object's
    550  1.1.1.1.2.2  yamt    "distinguished" class or interface (for example, "java.lang.String").
    551  1.1.1.1.2.2  yamt    It is a single-valued attribute. This attribute's syntax is '
    552  1.1.1.1.2.2  yamt    Directory String' and its case is significant.
    553  1.1.1.1.2.2  yamt 
    554  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.6
    555  1.1.1.1.2.2  yamt          NAME 'javaClassName'
    556  1.1.1.1.2.2  yamt          DESC 'Fully qualified name of distinguished Java class or
    557  1.1.1.1.2.2  yamt                interface'
    558  1.1.1.1.2.2  yamt          EQUALITY caseExactMatch
    559  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    560  1.1.1.1.2.2  yamt          SINGLE-VALUE
    561  1.1.1.1.2.2  yamt        )
    562  1.1.1.1.2.2  yamt 
    563  1.1.1.1.2.2  yamt 
    564  1.1.1.1.2.2  yamt 
    565  1.1.1.1.2.2  yamt 
    566  1.1.1.1.2.2  yamt 
    567  1.1.1.1.2.2  yamt 
    568  1.1.1.1.2.2  yamt 
    569  1.1.1.1.2.2  yamt 
    570  1.1.1.1.2.2  yamt 
    571  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 10]
    572  1.1.1.1.2.2  yamt 
    574  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    575  1.1.1.1.2.2  yamt 
    576  1.1.1.1.2.2  yamt 
    577  1.1.1.1.2.2  yamt 3.2 javaCodebase
    578  1.1.1.1.2.2  yamt 
    579  1.1.1.1.2.2  yamt    This attribute stores the Java class definition's locations.  It
    580  1.1.1.1.2.2  yamt    specifies the locations from which to load the class definition for
    581  1.1.1.1.2.2  yamt    the class specified by the javaClassName attribute.  Each value of
    582  1.1.1.1.2.2  yamt    the attribute contains an ordered list of URLs, separated by spaces.
    583  1.1.1.1.2.2  yamt    For example, a value of "url1 url2 url3" means that the three
    584  1.1.1.1.2.2  yamt    (possibly interdependent) URLs (url1, url2, and url3) form the
    585  1.1.1.1.2.2  yamt    codebase for loading in the Java class definition.
    586  1.1.1.1.2.2  yamt 
    587  1.1.1.1.2.2  yamt    If the javaCodebase attribute contains more than one value, each
    588  1.1.1.1.2.2  yamt    value is an independent codebase. That is, there is no relationship
    589  1.1.1.1.2.2  yamt    between the URLs in one value and those in another; each value can be
    590  1.1.1.1.2.2  yamt    viewed as an alternate source for loading the Java class definition.
    591  1.1.1.1.2.2  yamt    See [Java] for information regarding class loading.
    592  1.1.1.1.2.2  yamt 
    593  1.1.1.1.2.2  yamt    This attribute's syntax is 'IA5 String' and its case is significant.
    594  1.1.1.1.2.2  yamt 
    595  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.7
    596  1.1.1.1.2.2  yamt          NAME 'javaCodebase'
    597  1.1.1.1.2.2  yamt          DESC 'URL(s) specifying the location of class definition'
    598  1.1.1.1.2.2  yamt          EQUALITY caseExactIA5Match
    599  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
    600  1.1.1.1.2.2  yamt        )
    601  1.1.1.1.2.2  yamt 
    602  1.1.1.1.2.2  yamt 3.3 javaClassNames
    603  1.1.1.1.2.2  yamt 
    604  1.1.1.1.2.2  yamt    This attribute stores the Java object's fully qualified class or
    605  1.1.1.1.2.2  yamt    interface names (for example, "java.lang.String").  It is a
    606  1.1.1.1.2.2  yamt    multivalued attribute. When more than one value is present, each is
    607  1.1.1.1.2.2  yamt    the name of a class or interface, or ancestor class or interface, of
    608  1.1.1.1.2.2  yamt    this object.
    609  1.1.1.1.2.2  yamt 
    610  1.1.1.1.2.2  yamt    This attribute's syntax is 'Directory String' and its case is
    611  1.1.1.1.2.2  yamt    significant.
    612  1.1.1.1.2.2  yamt 
    613  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.13
    614  1.1.1.1.2.2  yamt          NAME 'javaClassNames'
    615  1.1.1.1.2.2  yamt          DESC 'Fully qualified Java class or interface name'
    616  1.1.1.1.2.2  yamt          EQUALITY caseExactMatch
    617  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    618  1.1.1.1.2.2  yamt        )
    619  1.1.1.1.2.2  yamt 
    620  1.1.1.1.2.2  yamt 
    621  1.1.1.1.2.2  yamt 
    622  1.1.1.1.2.2  yamt 
    623  1.1.1.1.2.2  yamt 
    624  1.1.1.1.2.2  yamt 
    625  1.1.1.1.2.2  yamt 
    626  1.1.1.1.2.2  yamt 
    627  1.1.1.1.2.2  yamt 
    628  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 11]
    629  1.1.1.1.2.2  yamt 
    631  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    632  1.1.1.1.2.2  yamt 
    633  1.1.1.1.2.2  yamt 
    634  1.1.1.1.2.2  yamt 3.4 javaSerializedData
    635  1.1.1.1.2.2  yamt 
    636  1.1.1.1.2.2  yamt    This attribute stores the serialized form of a Java object.  The
    637  1.1.1.1.2.2  yamt    serialized form is described in [Serial].
    638  1.1.1.1.2.2  yamt 
    639  1.1.1.1.2.2  yamt    This attribute's syntax is 'Octet String'.
    640  1.1.1.1.2.2  yamt 
    641  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.8
    642  1.1.1.1.2.2  yamt          NAME 'javaSerializedData
    643  1.1.1.1.2.2  yamt          DESC 'Serialized form of a Java object'
    644  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
    645  1.1.1.1.2.2  yamt          SINGLE-VALUE
    646  1.1.1.1.2.2  yamt        )
    647  1.1.1.1.2.2  yamt 
    648  1.1.1.1.2.2  yamt 3.5 javaFactory
    649  1.1.1.1.2.2  yamt 
    650  1.1.1.1.2.2  yamt    This attribute stores the fully qualified class name of the object
    651  1.1.1.1.2.2  yamt    factory (for example, "com.wiz.jndi.WizObjectFactory") that can be
    652  1.1.1.1.2.2  yamt    used to create an instance of the object identified by the
    653  1.1.1.1.2.2  yamt    javaClassName attribute.
    654  1.1.1.1.2.2  yamt 
    655  1.1.1.1.2.2  yamt    This attribute's syntax is 'Directory String' and its case is
    656  1.1.1.1.2.2  yamt    significant.
    657  1.1.1.1.2.2  yamt 
    658  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.10
    659  1.1.1.1.2.2  yamt          NAME 'javaFactory'
    660  1.1.1.1.2.2  yamt          DESC 'Fully qualified Java class name of a JNDI object factory'
    661  1.1.1.1.2.2  yamt          EQUALITY caseExactMatch
    662  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    663  1.1.1.1.2.2  yamt          SINGLE-VALUE
    664  1.1.1.1.2.2  yamt        )
    665  1.1.1.1.2.2  yamt 
    666  1.1.1.1.2.2  yamt 3.6 javaReferenceAddress
    667  1.1.1.1.2.2  yamt 
    668  1.1.1.1.2.2  yamt    This attribute represents the sequence of addresses of a JNDI
    669  1.1.1.1.2.2  yamt    reference.  Each of its values represents one address, a Java object
    670  1.1.1.1.2.2  yamt    of type javax.naming.RefAddr.  Its value is a concatenation of the
    671  1.1.1.1.2.2  yamt    address type and address contents, preceded by a sequence number (the
    672  1.1.1.1.2.2  yamt    order of addresses in a JNDI reference is significant).  For example:
    673  1.1.1.1.2.2  yamt 
    674  1.1.1.1.2.2  yamt        #0#TypeA#ValA
    675  1.1.1.1.2.2  yamt        #1#TypeB#ValB
    676  1.1.1.1.2.2  yamt        #2#TypeC##rO0ABXNyABpq...
    677  1.1.1.1.2.2  yamt 
    678  1.1.1.1.2.2  yamt    In more detail, the value is encoded as follows:
    679  1.1.1.1.2.2  yamt 
    680  1.1.1.1.2.2  yamt 
    681  1.1.1.1.2.2  yamt 
    682  1.1.1.1.2.2  yamt 
    683  1.1.1.1.2.2  yamt 
    684  1.1.1.1.2.2  yamt 
    685  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 12]
    686  1.1.1.1.2.2  yamt 
    688  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    689  1.1.1.1.2.2  yamt 
    690  1.1.1.1.2.2  yamt 
    691  1.1.1.1.2.2  yamt    The delimiter is the first character of the value.  For readability
    692  1.1.1.1.2.2  yamt    the character '#' is recommended when it is not otherwise used
    693  1.1.1.1.2.2  yamt    anywhere in the value, but any character may be used subject to
    694  1.1.1.1.2.2  yamt    restrictions given below.
    695  1.1.1.1.2.2  yamt 
    696  1.1.1.1.2.2  yamt    The first delimiter is followed by the sequence number.  The sequence
    697  1.1.1.1.2.2  yamt    number of an address is its position in the JNDI reference, with the
    698  1.1.1.1.2.2  yamt    first address being numbered 0.  It is represented by its shortest
    699  1.1.1.1.2.2  yamt    string form, in decimal notation.
    700  1.1.1.1.2.2  yamt 
    701  1.1.1.1.2.2  yamt    The sequence number is followed by a delimiter, then by the address
    702  1.1.1.1.2.2  yamt    type, and then by another delimiter.  If the address is of Java class
    703  1.1.1.1.2.2  yamt    javax.naming.StringRefAddr, then this delimiter is followed by the
    704  1.1.1.1.2.2  yamt    value of the address contents (which is a string).  Otherwise, this
    705  1.1.1.1.2.2  yamt    delimiter is followed immediately by another delimiter, and then by
    706  1.1.1.1.2.2  yamt    the Base64 encoding of the serialized form of the entire address.
    707  1.1.1.1.2.2  yamt 
    708  1.1.1.1.2.2  yamt    The delimiter may be any character other than a digit or a character
    709  1.1.1.1.2.2  yamt    contained in the address type.  In addition, if the address contents
    710  1.1.1.1.2.2  yamt    is a string, the delimiter may not be the first character of that
    711  1.1.1.1.2.2  yamt    string.
    712  1.1.1.1.2.2  yamt 
    713  1.1.1.1.2.2  yamt    This attribute's syntax is 'Directory String' and its case is
    714  1.1.1.1.2.2  yamt    significant.  It can contain multiple values.
    715  1.1.1.1.2.2  yamt 
    716  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.11
    717  1.1.1.1.2.2  yamt          NAME 'javaReferenceAddress'
    718  1.1.1.1.2.2  yamt          DESC 'Addresses associated with a JNDI Reference'
    719  1.1.1.1.2.2  yamt          EQUALITY caseExactMatch
    720  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    721  1.1.1.1.2.2  yamt        )
    722  1.1.1.1.2.2  yamt 
    723  1.1.1.1.2.2  yamt 3.7 javaDoc
    724  1.1.1.1.2.2  yamt 
    725  1.1.1.1.2.2  yamt    This attribute stores a pointer to the Java documentation for the
    726  1.1.1.1.2.2  yamt    class.  It's value is a URL. For example, the following URL points to
    727  1.1.1.1.2.2  yamt    the specification of the java.lang.String class:
    728  1.1.1.1.2.2  yamt    http://java.sun.com/products/jdk/1.2/docs/api/java/lang/String.html
    729  1.1.1.1.2.2  yamt 
    730  1.1.1.1.2.2  yamt    This attribute's syntax is 'IA5 String' and its case is significant.
    731  1.1.1.1.2.2  yamt 
    732  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.1.12
    733  1.1.1.1.2.2  yamt          NAME 'javaDoc'
    734  1.1.1.1.2.2  yamt          DESC 'The Java documentation for the class'
    735  1.1.1.1.2.2  yamt          EQUALITY caseExactIA5Match
    736  1.1.1.1.2.2  yamt          SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
    737  1.1.1.1.2.2  yamt        )
    738  1.1.1.1.2.2  yamt 
    739  1.1.1.1.2.2  yamt 
    740  1.1.1.1.2.2  yamt 
    741  1.1.1.1.2.2  yamt 
    742  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 13]
    743  1.1.1.1.2.2  yamt 
    745  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    746  1.1.1.1.2.2  yamt 
    747  1.1.1.1.2.2  yamt 
    748  1.1.1.1.2.2  yamt 4 Object Class Definitions
    749  1.1.1.1.2.2  yamt 
    750  1.1.1.1.2.2  yamt    The following object classes are defined in this document:
    751  1.1.1.1.2.2  yamt 
    752  1.1.1.1.2.2  yamt        javaContainer
    753  1.1.1.1.2.2  yamt        javaObject
    754  1.1.1.1.2.2  yamt        javaSerializedObject
    755  1.1.1.1.2.2  yamt        javaMarshalledObject
    756  1.1.1.1.2.2  yamt        javaNamingReference
    757  1.1.1.1.2.2  yamt 
    758  1.1.1.1.2.2  yamt 4.1 javaContainer
    759  1.1.1.1.2.2  yamt 
    760  1.1.1.1.2.2  yamt    This structural object class represents a container for a Java
    761  1.1.1.1.2.2  yamt    object.
    762  1.1.1.1.2.2  yamt 
    763  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.2.1
    764  1.1.1.1.2.2  yamt          NAME 'javaContainer'
    765  1.1.1.1.2.2  yamt          DESC 'Container for a Java object'
    766  1.1.1.1.2.2  yamt          SUP top
    767  1.1.1.1.2.2  yamt          STRUCTURAL
    768  1.1.1.1.2.2  yamt          MUST ( cn )
    769  1.1.1.1.2.2  yamt        )
    770  1.1.1.1.2.2  yamt 
    771  1.1.1.1.2.2  yamt 4.2 javaObject
    772  1.1.1.1.2.2  yamt 
    773  1.1.1.1.2.2  yamt    This abstract object class represents a Java object.  A javaObject
    774  1.1.1.1.2.2  yamt    cannot exist in the directory; only auxiliary or structural
    775  1.1.1.1.2.2  yamt    subclasses of it can exist in the directory.
    776  1.1.1.1.2.2  yamt 
    777  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.2.4
    778  1.1.1.1.2.2  yamt          NAME 'javaObject'
    779  1.1.1.1.2.2  yamt          DESC 'Java object representation'
    780  1.1.1.1.2.2  yamt          SUP top
    781  1.1.1.1.2.2  yamt          ABSTRACT
    782  1.1.1.1.2.2  yamt          MUST ( javaClassName )
    783  1.1.1.1.2.2  yamt          MAY ( javaClassNames $
    784  1.1.1.1.2.2  yamt                javaCodebase $
    785  1.1.1.1.2.2  yamt                javaDoc $
    786  1.1.1.1.2.2  yamt                description )
    787  1.1.1.1.2.2  yamt        )
    788  1.1.1.1.2.2  yamt 
    789  1.1.1.1.2.2  yamt 
    790  1.1.1.1.2.2  yamt 
    791  1.1.1.1.2.2  yamt 
    792  1.1.1.1.2.2  yamt 
    793  1.1.1.1.2.2  yamt 
    794  1.1.1.1.2.2  yamt 
    795  1.1.1.1.2.2  yamt 
    796  1.1.1.1.2.2  yamt 
    797  1.1.1.1.2.2  yamt 
    798  1.1.1.1.2.2  yamt 
    799  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 14]
    800  1.1.1.1.2.2  yamt 
    802  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    803  1.1.1.1.2.2  yamt 
    804  1.1.1.1.2.2  yamt 
    805  1.1.1.1.2.2  yamt 4.3 javaSerializedObject
    806  1.1.1.1.2.2  yamt 
    807  1.1.1.1.2.2  yamt    This auxiliary object class represents a Java serialized object.  It
    808  1.1.1.1.2.2  yamt    must be mixed in with a structural object class.
    809  1.1.1.1.2.2  yamt 
    810  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.2.5
    811  1.1.1.1.2.2  yamt          NAME 'javaSerializedObject'
    812  1.1.1.1.2.2  yamt          DESC 'Java serialized object'
    813  1.1.1.1.2.2  yamt          SUP javaObject
    814  1.1.1.1.2.2  yamt          AUXILIARY
    815  1.1.1.1.2.2  yamt          MUST ( javaSerializedData )
    816  1.1.1.1.2.2  yamt        )
    817  1.1.1.1.2.2  yamt 
    818  1.1.1.1.2.2  yamt 4.4 javaMarshalledObject
    819  1.1.1.1.2.2  yamt 
    820  1.1.1.1.2.2  yamt    This auxiliary object class represents a Java marshalled object.  It
    821  1.1.1.1.2.2  yamt    must be mixed in with a structural object class.
    822  1.1.1.1.2.2  yamt 
    823  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.2.8
    824  1.1.1.1.2.2  yamt          NAME 'javaMarshalledObject'
    825  1.1.1.1.2.2  yamt          DESC 'Java marshalled object'
    826  1.1.1.1.2.2  yamt          SUP javaObject
    827  1.1.1.1.2.2  yamt          AUXILIARY
    828  1.1.1.1.2.2  yamt          MUST ( javaSerializedData )
    829  1.1.1.1.2.2  yamt        )
    830  1.1.1.1.2.2  yamt 
    831  1.1.1.1.2.2  yamt 4.5 javaNamingReference
    832  1.1.1.1.2.2  yamt 
    833  1.1.1.1.2.2  yamt    This auxiliary object class represents a JNDI reference.  It must be
    834  1.1.1.1.2.2  yamt    mixed in with a structural object class.
    835  1.1.1.1.2.2  yamt 
    836  1.1.1.1.2.2  yamt        ( 1.3.6.1.4.1.42.2.27.4.2.7
    837  1.1.1.1.2.2  yamt          NAME 'javaNamingReference'
    838  1.1.1.1.2.2  yamt          DESC 'JNDI reference'
    839  1.1.1.1.2.2  yamt          SUP javaObject
    840  1.1.1.1.2.2  yamt          AUXILIARY
    841  1.1.1.1.2.2  yamt          MAY ( javaReferenceAddress $
    842  1.1.1.1.2.2  yamt                javaFactory )
    843  1.1.1.1.2.2  yamt        )
    844  1.1.1.1.2.2  yamt 
    845  1.1.1.1.2.2  yamt 
    846  1.1.1.1.2.2  yamt 
    847  1.1.1.1.2.2  yamt 
    848  1.1.1.1.2.2  yamt 
    849  1.1.1.1.2.2  yamt 
    850  1.1.1.1.2.2  yamt 
    851  1.1.1.1.2.2  yamt 
    852  1.1.1.1.2.2  yamt 
    853  1.1.1.1.2.2  yamt 
    854  1.1.1.1.2.2  yamt 
    855  1.1.1.1.2.2  yamt 
    856  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 15]
    857  1.1.1.1.2.2  yamt 
    859  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    860  1.1.1.1.2.2  yamt 
    861  1.1.1.1.2.2  yamt 
    862  1.1.1.1.2.2  yamt 5. Security Considerations
    863  1.1.1.1.2.2  yamt 
    864  1.1.1.1.2.2  yamt    Serializing an object and storing it into the directory enables (a
    865  1.1.1.1.2.2  yamt    copy of) the object to be examined and used outside the environment
    866  1.1.1.1.2.2  yamt    in which it was originally created.  The directory entry containing
    867  1.1.1.1.2.2  yamt    the serialized object could be read and modified within the
    868  1.1.1.1.2.2  yamt    constraints imposed by the access control mechanisms of the
    869  1.1.1.1.2.2  yamt    directory.  If an object contains sensitive information or
    870  1.1.1.1.2.2  yamt    information that could be misused outside of the context in which it
    871  1.1.1.1.2.2  yamt    was created, the object should not be stored in the directory.  For
    872  1.1.1.1.2.2  yamt    more details on security issues relating to serialization in general,
    873  1.1.1.1.2.2  yamt    see [Serial].
    874  1.1.1.1.2.2  yamt 
    875  1.1.1.1.2.2  yamt 6. Acknowledgements
    876  1.1.1.1.2.2  yamt 
    877  1.1.1.1.2.2  yamt    We would like to thank Joseph Fialli, Peter Jones, Roger Riggs, Bob
    878  1.1.1.1.2.2  yamt    Scheifler, and Ann Wollrath of Sun Microsystems for their comments
    879  1.1.1.1.2.2  yamt    and suggestions.
    880  1.1.1.1.2.2  yamt 
    881  1.1.1.1.2.2  yamt 7. References
    882  1.1.1.1.2.2  yamt 
    883  1.1.1.1.2.2  yamt    [CORBA]      The Object Management Group, "Common Object Request
    884  1.1.1.1.2.2  yamt                 Broker Architecture Specification 2.0,"
    885  1.1.1.1.2.2  yamt                 http://www.omg.org
    886  1.1.1.1.2.2  yamt 
    887  1.1.1.1.2.2  yamt    [CORBA-LDAP] Ryan, V., Lee, R. and S. Seligman, "Schema for
    888  1.1.1.1.2.2  yamt                 Representing CORBA Object References in an LDAP
    889  1.1.1.1.2.2  yamt                 Directory", RFC 2714, October 1999.
    890  1.1.1.1.2.2  yamt 
    891  1.1.1.1.2.2  yamt    [Java]       Ken Arnold and James Gosling, "The Java(tm) Programming
    892  1.1.1.1.2.2  yamt                 Language," Second Edition, ISBN 0-201-31006-6.
    893  1.1.1.1.2.2  yamt 
    894  1.1.1.1.2.2  yamt    [JNDI]       Java Software, Sun Microsystems, Inc., "The Java(tm)
    895  1.1.1.1.2.2  yamt                 Naming and Directory Interface (tm) Specification,"
    896  1.1.1.1.2.2  yamt                 February 1998.  http://java.sun.com/products/jndi/
    897  1.1.1.1.2.2  yamt 
    898  1.1.1.1.2.2  yamt    [LDAPv3]     Wahl, M., Howes, T. and  S. Kille, "Lightweight
    899  1.1.1.1.2.2  yamt                 Directory Access Protocol (v3)", RFC 2251, December
    900  1.1.1.1.2.2  yamt                 1997.
    901  1.1.1.1.2.2  yamt 
    902  1.1.1.1.2.2  yamt    [RMI]        Java Software, Sun Microsystems, Inc., "Remote Method
    903  1.1.1.1.2.2  yamt                 Invocation," November 1998.
    904  1.1.1.1.2.2  yamt                 http://java.sun.com/products/jdk/1.2/docs/guide/rmi
    905  1.1.1.1.2.2  yamt 
    906  1.1.1.1.2.2  yamt 
    907  1.1.1.1.2.2  yamt 
    908  1.1.1.1.2.2  yamt 
    909  1.1.1.1.2.2  yamt 
    910  1.1.1.1.2.2  yamt 
    911  1.1.1.1.2.2  yamt 
    912  1.1.1.1.2.2  yamt 
    913  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 16]
    914  1.1.1.1.2.2  yamt 
    916  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    917  1.1.1.1.2.2  yamt 
    918  1.1.1.1.2.2  yamt 
    919  1.1.1.1.2.2  yamt    [RMI-IIOP]   IBM and Java Software, Sun Microsystems, Inc., "RMI over
    920  1.1.1.1.2.2  yamt                 IIOP", June 1999.
    921  1.1.1.1.2.2  yamt                 http://java.sun.com/products/rmi-iiop/
    922  1.1.1.1.2.2  yamt 
    923  1.1.1.1.2.2  yamt    [Serial]     Java Software, Sun Microsystems, Inc., "Object
    924  1.1.1.1.2.2  yamt                 Serialization Specification," November 1998.
    925  1.1.1.1.2.2  yamt                 http://java.sun.com/products/jdk/1.2/docs/guide/
    926  1.1.1.1.2.2  yamt                 serialization
    927  1.1.1.1.2.2  yamt 
    928  1.1.1.1.2.2  yamt    [v3Schema]   Wahl, M., "A Summary of the X.500(96) User Schema for
    929  1.1.1.1.2.2  yamt                 use with LDAPv3", RFC 2256, December 1997.
    930  1.1.1.1.2.2  yamt 
    931  1.1.1.1.2.2  yamt 8. Authors' Addresses
    932  1.1.1.1.2.2  yamt 
    933  1.1.1.1.2.2  yamt    Vincent Ryan
    934  1.1.1.1.2.2  yamt    Sun Microsystems, Inc.
    935  1.1.1.1.2.2  yamt    Mail Stop EDUB03
    936  1.1.1.1.2.2  yamt    901 San Antonio Road
    937  1.1.1.1.2.2  yamt    Palo Alto, CA 94303
    938  1.1.1.1.2.2  yamt    USA
    939  1.1.1.1.2.2  yamt 
    940  1.1.1.1.2.2  yamt    Phone: +353 1 819 9151
    941  1.1.1.1.2.2  yamt    EMail: vincent.ryan (a] ireland.sun.com
    942  1.1.1.1.2.2  yamt 
    943  1.1.1.1.2.2  yamt 
    944  1.1.1.1.2.2  yamt    Scott Seligman
    945  1.1.1.1.2.2  yamt    Sun Microsystems, Inc.
    946  1.1.1.1.2.2  yamt    Mail Stop UCUP02-209
    947  1.1.1.1.2.2  yamt    901 San Antonio Road
    948  1.1.1.1.2.2  yamt    Palo Alto, CA 94303
    949  1.1.1.1.2.2  yamt    USA
    950  1.1.1.1.2.2  yamt 
    951  1.1.1.1.2.2  yamt    Phone: +1 408 863 3222
    952  1.1.1.1.2.2  yamt    EMail: scott.seligman (a] eng.sun.com
    953  1.1.1.1.2.2  yamt 
    954  1.1.1.1.2.2  yamt 
    955  1.1.1.1.2.2  yamt    Rosanna Lee
    956  1.1.1.1.2.2  yamt    Sun Microsystems, Inc.
    957  1.1.1.1.2.2  yamt    Mail Stop UCUP02-206
    958  1.1.1.1.2.2  yamt    901 San Antonio Road
    959  1.1.1.1.2.2  yamt    Palo Alto, CA 94303
    960  1.1.1.1.2.2  yamt    USA
    961  1.1.1.1.2.2  yamt 
    962  1.1.1.1.2.2  yamt    Phone: +1 408 863 3221
    963  1.1.1.1.2.2  yamt    EMail: rosanna.lee (a] eng.sun.com
    964  1.1.1.1.2.2  yamt 
    965  1.1.1.1.2.2  yamt 
    966  1.1.1.1.2.2  yamt 
    967  1.1.1.1.2.2  yamt 
    968  1.1.1.1.2.2  yamt 
    969  1.1.1.1.2.2  yamt 
    970  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 17]
    971  1.1.1.1.2.2  yamt 
    973  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
    974  1.1.1.1.2.2  yamt 
    975  1.1.1.1.2.2  yamt 
    976  1.1.1.1.2.2  yamt Appendix - LDAP Schema
    977  1.1.1.1.2.2  yamt 
    978  1.1.1.1.2.2  yamt   -- Attribute types --
    979  1.1.1.1.2.2  yamt 
    980  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.6
    981  1.1.1.1.2.2  yamt     NAME 'javaClassName'
    982  1.1.1.1.2.2  yamt     DESC 'Fully qualified name of distinguished Java class or interface'
    983  1.1.1.1.2.2  yamt     EQUALITY caseExactMatch
    984  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    985  1.1.1.1.2.2  yamt     SINGLE-VALUE
    986  1.1.1.1.2.2  yamt   )
    987  1.1.1.1.2.2  yamt 
    988  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.7
    989  1.1.1.1.2.2  yamt     NAME 'javaCodebase'
    990  1.1.1.1.2.2  yamt     DESC 'URL(s) specifying the location of class definition'
    991  1.1.1.1.2.2  yamt     EQUALITY caseExactIA5Match
    992  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
    993  1.1.1.1.2.2  yamt   )
    994  1.1.1.1.2.2  yamt 
    995  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.8
    996  1.1.1.1.2.2  yamt     NAME 'javaSerializedData'
    997  1.1.1.1.2.2  yamt     DESC 'Serialized form of a Java object'
    998  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
    999  1.1.1.1.2.2  yamt     SINGLE-VALUE
   1000  1.1.1.1.2.2  yamt   )
   1001  1.1.1.1.2.2  yamt 
   1002  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.10
   1003  1.1.1.1.2.2  yamt     NAME 'javaFactory'
   1004  1.1.1.1.2.2  yamt     DESC 'Fully qualified Java class name of a JNDI object factory'
   1005  1.1.1.1.2.2  yamt     EQUALITY caseExactMatch
   1006  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
   1007  1.1.1.1.2.2  yamt     SINGLE-VALUE
   1008  1.1.1.1.2.2  yamt   )
   1009  1.1.1.1.2.2  yamt 
   1010  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.11
   1011  1.1.1.1.2.2  yamt     NAME 'javaReferenceAddress'
   1012  1.1.1.1.2.2  yamt     DESC 'Addresses associated with a JNDI Reference'
   1013  1.1.1.1.2.2  yamt     EQUALITY caseExactMatch
   1014  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
   1015  1.1.1.1.2.2  yamt   )
   1016  1.1.1.1.2.2  yamt 
   1017  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.12
   1018  1.1.1.1.2.2  yamt     NAME 'javaDoc'
   1019  1.1.1.1.2.2  yamt     DESC 'The Java documentation for the class'
   1020  1.1.1.1.2.2  yamt     EQUALITY caseExactIA5Match
   1021  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
   1022  1.1.1.1.2.2  yamt   )
   1023  1.1.1.1.2.2  yamt 
   1024  1.1.1.1.2.2  yamt 
   1025  1.1.1.1.2.2  yamt 
   1026  1.1.1.1.2.2  yamt 
   1027  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 18]
   1028  1.1.1.1.2.2  yamt 
   1030  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
   1031  1.1.1.1.2.2  yamt 
   1032  1.1.1.1.2.2  yamt 
   1033  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.1.13
   1034  1.1.1.1.2.2  yamt     NAME 'javaClassNames'
   1035  1.1.1.1.2.2  yamt     DESC 'Fully qualified Java class or interface name'
   1036  1.1.1.1.2.2  yamt     EQUALITY caseExactMatch
   1037  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
   1038  1.1.1.1.2.2  yamt   )
   1039  1.1.1.1.2.2  yamt 
   1040  1.1.1.1.2.2  yamt   -- from RFC-2256 --
   1041  1.1.1.1.2.2  yamt 
   1042  1.1.1.1.2.2  yamt   ( 2.5.4.13
   1043  1.1.1.1.2.2  yamt     NAME 'description'
   1044  1.1.1.1.2.2  yamt     EQUALITY caseIgnoreMatch
   1045  1.1.1.1.2.2  yamt     SUBSTR caseIgnoreSubstringsMatch
   1046  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
   1047  1.1.1.1.2.2  yamt   )
   1048  1.1.1.1.2.2  yamt 
   1049  1.1.1.1.2.2  yamt   -- Object classes --
   1050  1.1.1.1.2.2  yamt 
   1051  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.2.1
   1052  1.1.1.1.2.2  yamt     NAME 'javaContainer'
   1053  1.1.1.1.2.2  yamt     DESC 'Container for a Java object'
   1054  1.1.1.1.2.2  yamt     SUP top
   1055  1.1.1.1.2.2  yamt     STRUCTURAL
   1056  1.1.1.1.2.2  yamt     MUST ( cn )
   1057  1.1.1.1.2.2  yamt   )
   1058  1.1.1.1.2.2  yamt 
   1059  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.2.4
   1060  1.1.1.1.2.2  yamt     NAME 'javaObject'
   1061  1.1.1.1.2.2  yamt     DESC 'Java object representation'
   1062  1.1.1.1.2.2  yamt     SUP top
   1063  1.1.1.1.2.2  yamt     ABSTRACT
   1064  1.1.1.1.2.2  yamt     MUST ( javaClassName )
   1065  1.1.1.1.2.2  yamt     MAY ( javaClassNames $ javaCodebase $ javaDoc $ description )
   1066  1.1.1.1.2.2  yamt   )
   1067  1.1.1.1.2.2  yamt 
   1068  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.2.5
   1069  1.1.1.1.2.2  yamt     NAME 'javaSerializedObject'
   1070  1.1.1.1.2.2  yamt     DESC 'Java serialized object'
   1071  1.1.1.1.2.2  yamt     SUP javaObject
   1072  1.1.1.1.2.2  yamt     AUXILIARY
   1073  1.1.1.1.2.2  yamt     MUST ( javaSerializedData )
   1074  1.1.1.1.2.2  yamt   )
   1075  1.1.1.1.2.2  yamt 
   1076  1.1.1.1.2.2  yamt 
   1077  1.1.1.1.2.2  yamt 
   1078  1.1.1.1.2.2  yamt 
   1079  1.1.1.1.2.2  yamt 
   1080  1.1.1.1.2.2  yamt 
   1081  1.1.1.1.2.2  yamt 
   1082  1.1.1.1.2.2  yamt 
   1083  1.1.1.1.2.2  yamt 
   1084  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 19]
   1085  1.1.1.1.2.2  yamt 
   1087  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
   1088  1.1.1.1.2.2  yamt 
   1089  1.1.1.1.2.2  yamt 
   1090  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.2.7
   1091  1.1.1.1.2.2  yamt     NAME 'javaNamingReference'
   1092  1.1.1.1.2.2  yamt     DESC 'JNDI reference'
   1093  1.1.1.1.2.2  yamt     SUP javaObject
   1094  1.1.1.1.2.2  yamt     AUXILIARY
   1095  1.1.1.1.2.2  yamt     MAY ( javaReferenceAddress $ javaFactory )
   1096  1.1.1.1.2.2  yamt   )
   1097  1.1.1.1.2.2  yamt 
   1098  1.1.1.1.2.2  yamt   ( 1.3.6.1.4.1.42.2.27.4.2.8
   1099  1.1.1.1.2.2  yamt     NAME 'javaMarshalledObject'
   1100  1.1.1.1.2.2  yamt     DESC 'Java marshalled object'
   1101  1.1.1.1.2.2  yamt     SUP javaObject
   1102  1.1.1.1.2.2  yamt     AUXILIARY
   1103  1.1.1.1.2.2  yamt     MUST ( javaSerializedData )
   1104  1.1.1.1.2.2  yamt   )
   1105  1.1.1.1.2.2  yamt 
   1106  1.1.1.1.2.2  yamt   -- Matching rule from ISO X.520 --
   1107  1.1.1.1.2.2  yamt 
   1108  1.1.1.1.2.2  yamt   ( 2.5.13.5
   1109  1.1.1.1.2.2  yamt     NAME 'caseExactMatch'
   1110  1.1.1.1.2.2  yamt     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
   1111  1.1.1.1.2.2  yamt   )
   1112  1.1.1.1.2.2  yamt 
   1113  1.1.1.1.2.2  yamt 
   1114  1.1.1.1.2.2  yamt 
   1115  1.1.1.1.2.2  yamt 
   1116  1.1.1.1.2.2  yamt 
   1117  1.1.1.1.2.2  yamt 
   1118  1.1.1.1.2.2  yamt 
   1119  1.1.1.1.2.2  yamt 
   1120  1.1.1.1.2.2  yamt 
   1121  1.1.1.1.2.2  yamt 
   1122  1.1.1.1.2.2  yamt 
   1123  1.1.1.1.2.2  yamt 
   1124  1.1.1.1.2.2  yamt 
   1125  1.1.1.1.2.2  yamt 
   1126  1.1.1.1.2.2  yamt 
   1127  1.1.1.1.2.2  yamt 
   1128  1.1.1.1.2.2  yamt 
   1129  1.1.1.1.2.2  yamt 
   1130  1.1.1.1.2.2  yamt 
   1131  1.1.1.1.2.2  yamt 
   1132  1.1.1.1.2.2  yamt 
   1133  1.1.1.1.2.2  yamt 
   1134  1.1.1.1.2.2  yamt 
   1135  1.1.1.1.2.2  yamt 
   1136  1.1.1.1.2.2  yamt 
   1137  1.1.1.1.2.2  yamt 
   1138  1.1.1.1.2.2  yamt 
   1139  1.1.1.1.2.2  yamt 
   1140  1.1.1.1.2.2  yamt 
   1141  1.1.1.1.2.2  yamt Ryan, et al.                 Informational                     [Page 20]
   1142  1.1.1.1.2.2  yamt 
   1144  1.1.1.1.2.2  yamt RFC 2713                Schema for Java Objects             October 1999
   1145  1.1.1.1.2.2  yamt 
   1146  1.1.1.1.2.2  yamt 
   1147  1.1.1.1.2.2  yamt Full Copyright Statement
   1148  1.1.1.1.2.2  yamt 
   1149  1.1.1.1.2.2  yamt    Copyright (C) The Internet Society (1999).  All Rights Reserved.
   1150  1.1.1.1.2.2  yamt 
   1151  1.1.1.1.2.2  yamt    This document and translations of it may be copied and furnished to
   1152  1.1.1.1.2.2  yamt    others, and derivative works that comment on or otherwise explain it
   1153  1.1.1.1.2.2  yamt    or assist in its implementation may be prepared, copied, published
   1154  1.1.1.1.2.2  yamt    and distributed, in whole or in part, without restriction of any
   1155  1.1.1.1.2.2  yamt    kind, provided that the above copyright notice and this paragraph are
   1156  1.1.1.1.2.2  yamt    included on all such copies and derivative works.  However, this
   1157  1.1.1.1.2.2  yamt    document itself may not be modified in any way, such as by removing
   1158  1.1.1.1.2.2  yamt    the copyright notice or references to the Internet Society or other
   1159  1.1.1.1.2.2  yamt    Internet organizations, except as needed for the purpose of
   1160  1.1.1.1.2.2  yamt    developing Internet standards in which case the procedures for
   1161  1.1.1.1.2.2  yamt    copyrights defined in the Internet Standards process must be
   1162  1.1.1.1.2.2  yamt    followed, or as required to translate it into languages other than
   1163  1.1.1.1.2.2  yamt    English.
   1164  1.1.1.1.2.2  yamt 
   1165  1.1.1.1.2.2  yamt    The limited permissions granted above are perpetual and will not be
   1166  1.1.1.1.2.2  yamt    revoked by the Internet Society or its successors or assigns.
   1167  1.1.1.1.2.2  yamt 
   1168  1.1.1.1.2.2  yamt    This document and the information contained herein is provided on an
   1169  1.1.1.1.2.2  yamt    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   1170  1.1.1.1.2.2  yamt    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   1171  1.1.1.1.2.2  yamt    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   1172  1.1.1.1.2.2  yamt    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   1173  1.1.1.1.2.2  yamt    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
   1174  1.1.1.1.2.2  yamt 
   1175  1.1.1.1.2.2  yamt Acknowledgement
   1176  1.1.1.1.2.2  yamt 
   1177  1.1.1.1.2.2  yamt    Funding for the RFC Editor function is currently provided by the
   1178  1.1.1.1.2.2  yamt    Internet Society.
   1179  1.1.1.1.2.2  yamt 
   1180                    
   1181                    
   1182                    
   1183                    
   1184                    
   1185                    
   1186                    
   1187                    
   1188                    
   1189                    
   1190                    
   1191                    
   1192                    
   1193                    
   1194                    
   1195                    
   1196                    
   1197                    
   1198                    Ryan, et al.                 Informational                     [Page 21]
   1199                    
   1201