ActiveMQ jndi.свойства java.именование.направление

#java #ldap #jndi #activemq

#java #ldap #jndi #activemq

Вопрос:

LDAPLoginModule ActiveMQ не поддерживает поисковую ссылку LDAP, сгенерированную моим сервером AD при поиске в корне дерева LDAP. Он генерирует (проглоченный):

Исключение NamingException javax.именование.Исключение PartialResultException: необработанные ссылки на продолжение.;

Мне нужно присвоить java.naming.referral свойству значение follow . Я могу изменить источник, добавив:

env.put(контекст.ССЫЛКА, «следовать»);

Но есть ли способ использовать мистический (для моего мозга C #) файл jndi.properties, чтобы избежать перекомпиляции?

Подробная информация

Командная строка, используемая для запуска процесса:

 /usr/bin/java -Xms256M -Xmx256M 
-Dorg.apache.activemq.UseDedicatedTaskRunner=true 
-Djava.util.logging.config.file=logging.properties 
-Djava.security.auth.login.config=/root/apache-activemq-5.5.0/conf/login.config 
-Dcom.sun.management.jmxremote 
-Dactivemq.classpath=/root/apache-activemq-5.5.0/conf; 
-Dactivemq.home=/root/apache-activemq-5.5.0 
-Dactivemq.base=/root/apache-activemq-5.5.0 
-jar /root/apache-activemq-5.5.0/bin/run.jar start
  

Часть существующего кода, на которую я хочу повлиять (isLoginPropertySet и getLDAPPropertyValue просто считаны из конфигурационного файла ActiveMQ — login.config в приведенной выше командной строке):

 Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, getLDAPPropertyValue(INITIAL_CONTEXT_FACTORY));
if (isLoginPropertySet(CONNECTION_USERNAME)) {
    env.put(Context.SECURITY_PRINCIPAL, getLDAPPropertyValue(CONNECTION_USERNAME));
}
if (isLoginPropertySet(CONNECTION_PASSWORD)) {
    env.put(Context.SECURITY_CREDENTIALS, getLDAPPropertyValue(CONNECTION_PASSWORD));
}
env.put(Context.SECURITY_PROTOCOL, getLDAPPropertyValue(CONNECTION_PROTOCOL));
env.put(Context.PROVIDER_URL, getLDAPPropertyValue(CONNECTION_URL));
env.put(Context.SECURITY_AUTHENTICATION, getLDAPPropertyValue(AUTHENTICATION));
context = new InitialDirContext(env);
  

Ответ №1:

Да, просто поместите java.naming.referral=follow в текстовый файл с именем jndi.properties и найдите его в корневом каталоге вашего файла JAR.

Для добавления в файл jar:

jar -uf run.jar jndi.properties

Комментарии:

1. Я создал jndi.properties и поместил его в папку /bin с run.jar . Похоже, это не улавливается. Есть мысли?

2. @Mark Brackett: Нет, поместите это внутрь файла jar, в корневой каталог.