java.schema revision 1.1.1.7
1# java.schema -- Java Object Schema 2# $OpenLDAP$ 3## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4## 5## Copyright 1998-2019 The OpenLDAP Foundation. 6## All rights reserved. 7## 8## Redistribution and use in source and binary forms, with or without 9## modification, are permitted only as authorized by the OpenLDAP 10## Public License. 11## 12## A copy of this license is available in the file LICENSE in the 13## top-level directory of the distribution or, alternatively, at 14## <http://www.OpenLDAP.org/license.html>. 15# 16# Java Object Schema (defined in RFC 2713) 17# depends upon core.schema 18# 19 20# Network Working Group V. Ryan 21# Request for Comments: 2713 S. Seligman 22# Category: Informational R. Lee 23# Sun Microsystems, Inc. 24# October 1999 25# 26# 27# Schema for Representing Java(tm) Objects in an LDAP Directory 28# 29# Status of this Memo 30# 31# This memo provides information for the Internet community. It does 32# not specify an Internet standard of any kind. Distribution of this 33# memo is unlimited. 34# 35# Copyright Notice 36# 37# Copyright (C) The Internet Society (1999). All Rights Reserved. 38# 39# Abstract 40# 41# This document defines the schema for representing Java(tm) objects in 42# an LDAP directory [LDAPv3]. It defines schema elements to represent 43# a Java serialized object [Serial], a Java marshalled object [RMI], a 44# Java remote object [RMI], and a JNDI reference [JNDI]. 45# 46 47# [trimmed] 48 49# 3 Attribute Type Definitions 50# 51# The following attribute types are defined in this document: 52# 53# javaClassName 54# javaClassNames 55# javaCodebase 56# javaSerializedData 57# javaFactory 58# javaReferenceAddress 59# javaDoc 60# 61# 3.1 javaClassName 62# 63# This attribute stores the fully qualified name of the Java object's 64# "distinguished" class or interface (for example, "java.lang.String"). 65# It is a single-valued attribute. This attribute's syntax is ' 66# Directory String' and its case is significant. 67# 68# ( 1.3.6.1.4.1.42.2.27.4.1.6 69# NAME 'javaClassName' 70# DESC 'Fully qualified name of distinguished Java class or 71# interface' 72# EQUALITY caseExactMatch 73# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 74# SINGLE-VALUE 75# ) 76# 77attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6 78 NAME 'javaClassName' 79 DESC 'Fully qualified name of distinguished Java class or interface' 80 EQUALITY caseExactMatch 81 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 82 SINGLE-VALUE ) 83 84# 3.2 javaCodebase 85# 86# This attribute stores the Java class definition's locations. It 87# specifies the locations from which to load the class definition for 88# the class specified by the javaClassName attribute. Each value of 89# the attribute contains an ordered list of URLs, separated by spaces. 90# For example, a value of "url1 url2 url3" means that the three 91# (possibly interdependent) URLs (url1, url2, and url3) form the 92# codebase for loading in the Java class definition. 93# 94# If the javaCodebase attribute contains more than one value, each 95# value is an independent codebase. That is, there is no relationship 96# between the URLs in one value and those in another; each value can be 97# viewed as an alternate source for loading the Java class definition. 98# See [Java] for information regarding class loading. 99# 100# This attribute's syntax is 'IA5 String' and its case is significant. 101# 102# ( 1.3.6.1.4.1.42.2.27.4.1.7 103# NAME 'javaCodebase' 104# DESC 'URL(s) specifying the location of class definition' 105# EQUALITY caseExactIA5Match 106# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 107# ) 108# 109attributetype ( 1.3.6.1.4.1.42.2.27.4.1.7 110 NAME 'javaCodebase' 111 DESC 'URL(s) specifying the location of class definition' 112 EQUALITY caseExactIA5Match 113 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) 114 115# 3.3 javaClassNames 116# 117# This attribute stores the Java object's fully qualified class or 118# interface names (for example, "java.lang.String"). It is a 119# multivalued attribute. When more than one value is present, each is 120# the name of a class or interface, or ancestor class or interface, of 121# this object. 122# 123# This attribute's syntax is 'Directory String' and its case is 124# significant. 125# 126# ( 1.3.6.1.4.1.42.2.27.4.1.13 127# NAME 'javaClassNames' 128# DESC 'Fully qualified Java class or interface name' 129# EQUALITY caseExactMatch 130# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 131# ) 132# 133# 134attributetype ( 1.3.6.1.4.1.42.2.27.4.1.13 135 NAME 'javaClassNames' 136 DESC 'Fully qualified Java class or interface name' 137 EQUALITY caseExactMatch 138 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) 139 140# 3.4 javaSerializedData 141# 142# This attribute stores the serialized form of a Java object. The 143# serialized form is described in [Serial]. 144# 145# This attribute's syntax is 'Octet String'. 146# 147# ( 1.3.6.1.4.1.42.2.27.4.1.8 148# NAME 'javaSerializedData 149# DESC 'Serialized form of a Java object' 150# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 151# SINGLE-VALUE 152# ) 153# 154attributetype ( 1.3.6.1.4.1.42.2.27.4.1.8 155 NAME 'javaSerializedData' 156 DESC 'Serialized form of a Java object' 157 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 158 SINGLE-VALUE ) 159 160# 3.5 javaFactory 161# 162# This attribute stores the fully qualified class name of the object 163# factory (for example, "com.wiz.jndi.WizObjectFactory") that can be 164# used to create an instance of the object identified by the 165# javaClassName attribute. 166# 167# This attribute's syntax is 'Directory String' and its case is 168# significant. 169# 170# ( 1.3.6.1.4.1.42.2.27.4.1.10 171# NAME 'javaFactory' 172# DESC 'Fully qualified Java class name of a JNDI object factory' 173# EQUALITY caseExactMatch 174# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 175# SINGLE-VALUE 176# ) 177# 178attributetype ( 1.3.6.1.4.1.42.2.27.4.1.10 179 NAME 'javaFactory' 180 DESC 'Fully qualified Java class name of a JNDI object factory' 181 EQUALITY caseExactMatch 182 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 183 SINGLE-VALUE ) 184 185# 3.6 javaReferenceAddress 186# 187# This attribute represents the sequence of addresses of a JNDI 188# reference. Each of its values represents one address, a Java object 189# of type javax.naming.RefAddr. Its value is a concatenation of the 190# address type and address contents, preceded by a sequence number (the 191# order of addresses in a JNDI reference is significant). For example: 192# 193# #0#TypeA#ValA 194# #1#TypeB#ValB 195# #2#TypeC##rO0ABXNyABpq... 196# 197# In more detail, the value is encoded as follows: 198# 199# The delimiter is the first character of the value. For readability 200# the character '#' is recommended when it is not otherwise used 201# anywhere in the value, but any character may be used subject to 202# restrictions given below. 203# 204# The first delimiter is followed by the sequence number. The sequence 205# number of an address is its position in the JNDI reference, with the 206# first address being numbered 0. It is represented by its shortest 207# string form, in decimal notation. 208# 209# The sequence number is followed by a delimiter, then by the address 210# type, and then by another delimiter. If the address is of Java class 211# javax.naming.StringRefAddr, then this delimiter is followed by the 212# value of the address contents (which is a string). Otherwise, this 213# delimiter is followed immediately by another delimiter, and then by 214# the Base64 encoding of the serialized form of the entire address. 215# 216# The delimiter may be any character other than a digit or a character 217# contained in the address type. In addition, if the address contents 218# is a string, the delimiter may not be the first character of that 219# string. 220# 221# This attribute's syntax is 'Directory String' and its case is 222# significant. It can contain multiple values. 223# 224# ( 1.3.6.1.4.1.42.2.27.4.1.11 225# NAME 'javaReferenceAddress' 226# DESC 'Addresses associated with a JNDI Reference' 227# EQUALITY caseExactMatch 228# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 229# ) 230# 231attributetype ( 1.3.6.1.4.1.42.2.27.4.1.11 232 NAME 'javaReferenceAddress' 233 DESC 'Addresses associated with a JNDI Reference' 234 EQUALITY caseExactMatch 235 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) 236 237# 3.7 javaDoc 238# 239# This attribute stores a pointer to the Java documentation for the 240# class. It's value is a URL. For example, the following URL points to 241# the specification of the java.lang.String class: 242# http://java.sun.com/products/jdk/1.2/docs/api/java/lang/String.html 243# 244# This attribute's syntax is 'IA5 String' and its case is significant. 245# 246# ( 1.3.6.1.4.1.42.2.27.4.1.12 247# NAME 'javaDoc' 248# DESC 'The Java documentation for the class' 249# EQUALITY caseExactIA5Match 250# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 251# ) 252# 253attributetype ( 1.3.6.1.4.1.42.2.27.4.1.12 254 NAME 'javaDoc' 255 DESC 'The Java documentation for the class' 256 EQUALITY caseExactIA5Match 257 SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) 258 259# 4 Object Class Definitions 260# 261# The following object classes are defined in this document: 262# 263# javaContainer 264# javaObject 265# javaSerializedObject 266# javaMarshalledObject 267# javaNamingReference 268# 269# 4.1 javaContainer 270# 271# This structural object class represents a container for a Java 272# object. 273# 274# ( 1.3.6.1.4.1.42.2.27.4.2.1 275# NAME 'javaContainer' 276# DESC 'Container for a Java object' 277# SUP top 278# STRUCTURAL 279# MUST ( cn ) 280# ) 281# 282objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1 283 NAME 'javaContainer' 284 DESC 'Container for a Java object' 285 SUP top 286 STRUCTURAL 287 MUST cn ) 288 289# 4.2 javaObject 290# 291# This abstract object class represents a Java object. A javaObject 292# cannot exist in the directory; only auxiliary or structural 293# subclasses of it can exist in the directory. 294# 295# ( 1.3.6.1.4.1.42.2.27.4.2.4 296# NAME 'javaObject' 297# DESC 'Java object representation' 298# SUP top 299# ABSTRACT 300# MUST ( javaClassName ) 301# MAY ( javaClassNames $ 302# javaCodebase $ 303# javaDoc $ 304# description ) 305# ) 306# 307objectclass ( 1.3.6.1.4.1.42.2.27.4.2.4 308 NAME 'javaObject' 309 DESC 'Java object representation' 310 SUP top 311 ABSTRACT 312 MUST javaClassName 313 MAY ( javaClassNames $ javaCodebase $ 314 javaDoc $ description ) ) 315 316# 4.3 javaSerializedObject 317# 318# This auxiliary object class represents a Java serialized object. It 319# must be mixed in with a structural object class. 320# 321# ( 1.3.6.1.4.1.42.2.27.4.2.5 322# NAME 'javaSerializedObject' 323# DESC 'Java serialized object' 324# SUP javaObject 325# AUXILIARY 326# MUST ( javaSerializedData ) 327# ) 328# 329objectclass ( 1.3.6.1.4.1.42.2.27.4.2.5 330 NAME 'javaSerializedObject' 331 DESC 'Java serialized object' 332 SUP javaObject 333 AUXILIARY 334 MUST javaSerializedData ) 335 336# 4.4 javaMarshalledObject 337# 338# This auxiliary object class represents a Java marshalled object. It 339# must be mixed in with a structural object class. 340# 341# ( 1.3.6.1.4.1.42.2.27.4.2.8 342# NAME 'javaMarshalledObject' 343# DESC 'Java marshalled object' 344# SUP javaObject 345# AUXILIARY 346# MUST ( javaSerializedData ) 347# ) 348# 349objectclass ( 1.3.6.1.4.1.42.2.27.4.2.8 350 NAME 'javaMarshalledObject' 351 DESC 'Java marshalled object' 352 SUP javaObject 353 AUXILIARY 354 MUST javaSerializedData ) 355 356# 4.5 javaNamingReference 357# 358# This auxiliary object class represents a JNDI reference. It must be 359# mixed in with a structural object class. 360# 361# ( 1.3.6.1.4.1.42.2.27.4.2.7 362# NAME 'javaNamingReference' 363# DESC 'JNDI reference' 364# SUP javaObject 365# AUXILIARY 366# MAY ( javaReferenceAddress $ 367# javaFactory ) 368# ) 369# 370objectclass ( 1.3.6.1.4.1.42.2.27.4.2.7 371 NAME 'javaNamingReference' 372 DESC 'JNDI reference' 373 SUP javaObject 374 AUXILIARY 375 MAY ( javaReferenceAddress $ javaFactory ) ) 376 377# Full Copyright Statement 378# 379# Copyright (C) The Internet Society (1999). All Rights Reserved. 380# 381# This document and translations of it may be copied and furnished to 382# others, and derivative works that comment on or otherwise explain it 383# or assist in its implementation may be prepared, copied, published 384# and distributed, in whole or in part, without restriction of any 385# kind, provided that the above copyright notice and this paragraph are 386# included on all such copies and derivative works. However, this 387# document itself may not be modified in any way, such as by removing 388# the copyright notice or references to the Internet Society or other 389# Internet organizations, except as needed for the purpose of 390# developing Internet standards in which case the procedures for 391# copyrights defined in the Internet Standards process must be 392# followed, or as required to translate it into languages other than 393# English. 394# 395# The limited permissions granted above are perpetual and will not be 396# revoked by the Internet Society or its successors or assigns. 397# 398# This document and the information contained herein is provided on an 399# "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 400# TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 401# BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 402# HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 403# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 404