RFR: 8296183: jndiprovider.properties contains properties pointing to non-existing classes [v2]

Jaikiran Pai jpai at openjdk.org
Fri Feb 13 12:14:28 UTC 2026


> Can I please get a review of this change which removes the unused `src/java.naming/share/classes/com/sun/jndi/ldap/jndiprovider.properties` file? This addresses the issue noted in https://bugs.openjdk.org/browse/JDK-8296183.
> 
> This `jndiprovider.properties` file lists 3 properties `java.naming.factory.control`, `java.naming.factory.object` and `java.naming.factory.state`. The semantics of these environment properties are explained in https://docs.oracle.com/javase/jndi/tutorial/beyond/env/provider.html. The classes configured in `com/sun/jndi/ldap/jndiprovider.properties` for each of these properties are non-existent in the JDK. Looking at the version control history of the JDK, these classes haven't been around for several releases (not even in JDK 8). The `jndiprovier.properties` gets looked up by an JDK internal class in the `java.naming` module - `com.sun.naming.internal.ResourceManager`. The `ResourceManager.getFactories(...)` method is the one that gets called to load the classes configured for those 3 environment properties. The javadoc of `ResourceManager.getFactories(...)` says this:
> 
> 
> Retrieves an enumeration of factory classes/object specified by a property.
> 
> The property is gotten from the environment and the provider resource file associated with the given context and concatenated.
> ... The resulting property value is a list of class names.
> This method then loads each class using the current thread's context class loader and keeps them in a list.
> Any class that cannot be loaded is ignored.
> ...
> 
> 
> The implementation of `ResourceManager.getFactories(...)` matches that javadoc. Because the implementation ignores such missing classes, the reference to these non-existent classes in the `com/sun/jndi/ldap/jndiprovider.properties` has gone unnoticed all this while. Manual experiments of exercising this code path does indeed show that a `ClassNotFoundException` gets raised (and ignored) for the classes referenced in that `jnidprovider.properties` file.
> 
> The commit in this PR removes the `jndiprovier.properties`. It also removes a javadoc reference to one of these non-existent classes. Given the nature of the change no new tests have been introduced and the existing tests in tier1, tier2 and tier3 continue to pass.

Jaikiran Pai has updated the pull request incrementally with one additional commit since the last revision:

  add reference to DefaultResponseControlFactory in javadoc

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/29712/files
  - new: https://git.openjdk.org/jdk/pull/29712/files/1864e84a..b68385a3

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=29712&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29712&range=00-01

  Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/29712.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29712/head:pull/29712

PR: https://git.openjdk.org/jdk/pull/29712


More information about the core-libs-dev mailing list