Замените com.sun.jndi.dns.DnsContextFactory Wildfly23 JDK17.JAVA

Программисты JAVA общаются здесь
Anonymous
Замените com.sun.jndi.dns.DnsContextFactory Wildfly23 JDK17.

Сообщение Anonymous »

Наш сервер приложений — Jboss 7.4 (Wildfly 23), и когда я переключился с JDK11 на JDK17, я получил исключение во время выполнения:
Вызвано: java.lang.IllegalAccessException: class org.jboss.as.naming.InitialContext не могу получить доступ к классу com.sun.jndi.dns.DnsContextFactory (в модуле jdk.naming.dns), поскольку модуль jdk.naming.dns не экспортирует com.sun.jndi.dns в безымянный модуль @500cd973
Мы используем DnsContextFactory потому, что хотим выполнить поиск (из Java) доменов ldap в записях SRV, код в приложении:

Код: Выделить всё

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory"); // replace?
env.put("java.naming.provider.url", "dns:");
DirContext ctx = new InitialDirContext(env); // throws exception
Attributes attributes = ctx.getAttributes("_ldap._tcp.mydomain.com", new String[]{"SRV"});
Attribute a = attributes.get("SRV");
for (int i = 0; i < a.size(); i++) {
.
.
.
}
Я могу решить эту проблему, добавив аргумент виртуальной машины во время запуска:
JAVA_OPTS="$JAVA_OPTS --add-exports=jdk.naming.dns/com.sun.jndi .dns=ALL-UNNAMED"
но я бы предпочел этого не делать, насколько я понимаю, в будущем добавление-экспорт не удастся (JDK21?), и я ищу лучшее долгосрочное решение.
Редактировать:
Если я запускаю Jboss 7.4 с JDK11, все работает нормально, но если я запускаю его с JDK17, модуль теперь «скрыт» и недоступен. Есть ли другой способ поиска в SRV-записях, кроме использования DnsContextFactory от com.sun?

Подробнее здесь: https://stackoverflow.com/questions/781 ... ly23-jdk17

Вернуться в «JAVA»