JDK 21 の例外処理
JDK 21では、一連のオブジェクトファクトリクラスを制御するために、javax.naming パッケージにプロパティ jdk.jndi.object.factoriesFilter および jdk.jndi.ldap.object.factoriesFilter が導入されました。これらのオブジェクトファクトリクラスは、オブジェクト参照からオブジェクトをインスタンス化できます。JDK 21 に更新後、コンテキストの検索中に、次のような例外が表示されることがあります。
Exception in thread "main" java.lang.ClassCastException: class javax.naming.Reference cannot be cast to class jakarta.resource.cci.ConnectionFactory (javax.naming.Reference is in module java.naming of loader 'bootstrap'; jakarta.resource.cci.ConnectionFactory is in unnamed module of loader 'app')
この例外を処理するには、
jdk.jndi.object.factoriesFilter および
jdk.jndi.ldap.object.factoriesFilter プロパティで適切なファクトリを設定します。たとえば、
System.setProperty("jdk.jndi.ldap.object.factoriesFilter", "com.infoengine.connector.IeConnectionFactoryFactory") などです。参照については、
「スタンドアロン Java SOAP クライアントの例」を参照してください。