gpt4 book ai didi

java - ApacheDS - 自定义搜索处理程序 (Java)

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:51 25 4
gpt4 key购买 nike

这是我想要实现的目标:

一方面,我有一个 Oracle 数据库。另一方面,一个“简单”的 Java 应用程序(我们称之为“App”)。

中间是 Java 中嵌入的 ApacheDS。这个想法是通过嵌入式 LDAP 服务器访问该数据库。

目前,我可以将“App”连接到嵌入式 LDAP 服务器,向其发送参数并在 Oracle 数据库中执行一些 sql。

但问题是我无法将结果返回到“App”。显然,我应该使用自己的“SearchHandler”,但我不知道该怎么做。

我希望我的解释足够清楚。如果没有,我可以尝试提供更多细节。

server.setSearchHandler(new LdapRequestHandler<InternalSearchRequest>() {
@Override
public void handle(LdapSession ls, InternalSearchRequest t) throws Exception {
//Getting data from Oracle database
System.out.println(dataFromDatabase);
}
});

最佳答案

有点晚了,但你走在正确的道路上。

我正在做或多或少相同的事情(但使用 BindRequestHandler),使用 ApacheDS 作为 LDAP 代理。我正在使用版本 2.0.0-M23 进行此操作。

我这样扩展它:

public class LoggerBindRequestHandler extends BindRequestHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(LoggerBindRequestHandler.class);

@Override
public void handle(LdapSession session, BindRequest request) throws Exception {
LOGGER.debug(session.toString());
LOGGER.debug(request.toString());

super.handle(session, request);
}

@Override
public void handleSaslAuth(LdapSession session, BindRequest request) throws Exception {
LOGGER.debug(session.toString());
LOGGER.debug(request.toString());

super.handleSaslAuth(session, request);
}

@Override
public void handleSimpleAuth(LdapSession session, BindRequest request) throws Exception {
LOGGER.debug(session.toString());
LOGGER.debug(request.toString());

super.handleSimpleAuth(session, request);
}
}

然后我设置 ldap 服务器

ldapServer.setBindHandlers(new LoggerBindRequestHandler(), new LoggerBindResponseHandler());

就是这样。

据我所知,您缺少 ResponseHandler。这就是为什么您能够向 Oracle 发送命令,但不发送响应。

关于java - ApacheDS - 自定义搜索处理程序 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35746837/

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