The following topics are covered:
From time to time it is necessary to update the Java platform in order to incorporate newer versions of standards that are created outside of the Java Community Process (Endorsed Standards), or in order to update the version of a technology included in the platform to correspond to a later standalone version of that technology (Standalone Technologies).
The Endorsed Standards Override Mechanism provides a means whereby later versions of classes and interfaces that implement Endorsed Standards or Standalone Technologies may be incorporated into the Java Platform.
Packages to be updated through this mechanism should be placed in JAR files. The system property java.endorsed.dirs specifies one or more directories that the Java runtime environment will search for such JAR files. If more than one directory path is specified by java.endorsed.dirs, they must be separated by File.pathSeparatorChar. If no value is set for java.endorsed.dirs, then Oracle's implementation of the Java platform looks for JAR files in a default standard location:
<java-home>\lib\endorsed
<java-home>/lib/endorsed
Here <java-home> refers to the directory where the runtime software is installed (which is the top-level directory of the Java SE Runtime Environment or the jre directory in the JDK).
The Java SE runtime environment will use classes in such JAR files to override the corresponding classes provided in the Java platform as it was shipped.
The Endorsed Standards for Java SE constitute all classes and interfaces that are defined in the packages listed in this section. Classes and interfaces defined in sub-packages of listed packages are not Endorsed Standards unless those sub-packages are themselves listed. The Endorsed Standards Override Mechanism may be used to override the Java SE platform packages in this list, and these packages may be overridden only by versions of the Endorsed Standard that are newer than that provided by the Java platform as released by Sun. With the exception of packages listed here and the technologies listed in the Standalone Technologies section below, no other packages from the Java SE platform API specification may be overridden.
javax.rmi.CORBA org.omg.CORBA org.omg.CORBA.DynAnyPackage org.omg.CORBA.ORBPackage org.omg.CORBA.portable org.omg.CORBA.TypeCodePackage org.omg.CORBA_2_3 org.omg.CORBA_2_3.portable org.omg.CosNaming org.omg.CosNaming.NamingContextExtPackage org.omg.CosNaming.NamingContextPackage org.omg.Dynamic org.omg.DynamicAny org.omg.DynamicAny.DynAnyFactoryPackage org.omg.DynamicAny.DynAnyPackage org.omg.IOP org.omg.IOP.CodecFactoryPackage org.omg.IOP.CodecPackage org.omg.Messaging org.omg.PortableInterceptor org.omg.PortableInterceptor.ORBInitInfoPackage org.omg.PortableServer org.omg.PortableServer.CurrentPackage org.omg.PortableServer.POAManagerPackage org.omg.PortableServer.POAPackage org.omg.PortableServer.portable org.omg.PortableServer.ServantLocatorPackage org.omg.SendingContext org.omg.stub.java.rmi org.w3c.dom org.xml.sax org.xml.sax.ext org.xml.sax.helpers
In addition to the packages listed above, which are part of the Java SE specification, users of Sun's Java SE Reference Implementation are allowed to use the Endorsed Standards Override Mechanism to override implementation-specific classes associated with these packages, such as the org.w3c.dom sub-packages delivered in Sun's Reference Implementation.
The Standalone Technologies for Java SE constitute all classes and interfaces that are defined and implemented in the technologies listed in this section. The Endorsed Standards Override Mechanism may be used to override the Java technologies in this list, and these technologies may be overridden only by providing a complete and newer implementation of the Standalone Technology than was provided in the original implementation of the Java Platform. With the exception of the technologies in this list and the packages listed in the Endorsed Standards APIs section above, no other packages from the Java SE platform API specification may be overridden.