ActiveMQ jndi.properties java.naming.referral

发布于 2024-11-02 01:00:35 字数 2028 浏览 2 评论 0原文

ActiveMQ 的 LDAPLoginModule 不喜欢我的 AD 服务器在搜索根目录时生成的 LDAP searchResRef LDAP 树。它生成(吞咽):

NamingException javax.naming.PartialResultException:未处理的延续引用;

我需要将 java.naming.referral 属性设置为 follow。我可以通过添加以下内容来更改源:

env.put(Context.REFERRAL, "关注");

但是,有没有办法使用神秘的(对我的 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);

ActiveMQ's LDAPLoginModule doesn't like the LDAP searchResRef generated by my AD server when searching the root of the LDAP tree. It generates (a swallowed):

NamingException javax.naming.PartialResultException: Unprocessed Continuation Reference(s);

I need to set the java.naming.referral property to follow. I can change the source by adding:

env.put(Context.REFERRAL, "follow");

But, is there a way to use the mystical (to my C# brain) jndi.properties file to avoid a recompile?

More Info

The command line used to start the process:

/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

The bit of existing code I want to influence (isLoginPropertySet and getLDAPPropertyValue just read from an ActiveMQ config file - login.config in the above commandline):

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人疚 2024-11-09 01:00:35

是的,只需将 java.naming.referral=follow 放入名为 jndi.properties 的文本文件中,然后将其放置在 JAR 文件的根目录中即可。

添加到 jar 文件:

jar -uf run.jar jndi.properties

Yes, just put java.naming.referral=follow into a text file named jndi.properties and locate that in the root directory of your JAR file.

To add to a jar file:

jar -uf run.jar jndi.properties

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文