gpt4 book ai didi

java - 如何在 java servlet 中加载属性文件以设置 ldap 连接变量?

转载 作者:行者123 更新时间:2023-12-02 04:32:11 24 4
gpt4 key购买 nike

在我的 Java Web 应用程序中,我有以下 DAO 构造函数。

public DAO() throws IOException {

env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:1389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Directory Manager");
env.put(Context.SECURITY_CREDENTIALS, "secret");
}

我想设置加载以下 config.properties 文件的环境变量:

INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactory
PROVIDER_URL=ldap://localhost:1389
SECURITY_AUTHENTICATION=simple
SECURITY_PRINCIPAL=cn=Directory Manager
SECURITY_CREDENTIALS=secret

我使用以下代码加载文件:

    Properties props = new Properties();
InputStream in = this.getClass().getResourceAsStream("config.properties");
props.load(in);
in.close();

现在,我尝试设置环境变量,但它不起作用:

    env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, System.getProperty("INITIAL_CONTEXT_FACTORY"));
env.put(Context.PROVIDER_URL, System.getProperty("PROVIDER_URL"));
env.put(Context.SECURITY_AUTHENTICATION, System.getProperty("SECURITY_AUTHENTICATION"));
env.put(Context.SECURITY_PRINCIPAL, System.getProperty("SECURITY_PRINCIPAL"));
env.put(Context.SECURITY_CREDENTIALS, System.getProperty("SECURITY_CREDENTIALS"));

最佳答案

您正在将文件中的属性加载到 props 变量中,因此您必须使用此 props 变量而不是系统属性。即

env.put(Context.INITIAL_CONTEXT_FACTORY, props.getProperty("INITIAL_CONTEXT_FACTORY"));
// etc.

关于java - 如何在 java servlet 中加载属性文件以设置 ldap 连接变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com