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