Вызвано: 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