让我们使用JNDI API。我们尝试连接到te目录服务器:

Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.PROVIDER_URL, "ldap://ldap.wiz.com:389");
env.put(Context.SECURITY_PRINCIPAL, "joeuser");
env.put(Context.SECURITY_CREDENTIALS, "joepassword");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");


应用程序执行时如何工作?什么需要SPI?据我了解,基于JNDI的客户端应用程序向目录服务器发送了请求,该服务器使用特定的SPI。此SPI解析来自客户端的请求并作出响应。因此,SPI的工作方式类似于Java EE中的servlet。我的理解正确吗?

最佳答案

应用程序执行时如何工作?


JNDI找到适合您指定的Context.PROVIDER_URL的JNDI SPI:在这种情况下,是LDAP提供程序。


  SPI需要什么?


往上看。


  据我了解,客户端基于JNDI的应用程序将请求发送到目录服务器


停在那儿。客户端将请求发送到JNDI,JNDI将请求发送到JNDI SPI,JNDI SPI将请求发送到目录服务器


  其使用特定的SPI。


否。请参见上文。目录服务器对JNDI SPI一无所知。


  此SPI解析来自客户端的请求并作出响应。


否。目录服务器执行了该操作。


  因此,SPI的工作方式类似于Java EE中的servlet。


没有。


  我的理解正确吗?


没有。

关于java - JNDI API如何运作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20211629/

10-11 08:22