如果JNDI在lookup时没有指定初始化工厂名称,会自动根据协议类型动态查找内置的工厂类然后创建处理对应的服务请求。JNDI默认支持自动转换的协议有:
| 协议名称 | 协议URL | Context类 |
|---|---|---|
| DNS协议 | dns:// |
com.sun.jndi.url.dns.dnsURLContext |
| RMI协议 | rmi:// |
com.sun.jndi.url.rmi.rmiURLContext |
| LDAP协议 | ldap:// |
com.sun.jndi.url.ldap.ldapURLContext |
| LDAP协议 | ldaps:// |
com.sun.jndi.url.ldaps.ldapsURLContextFactory |
| IIOP对象请求代理协议 | iiop:// |
com.sun.jndi.url.iiop.iiopURLContext |
| IIOP对象请求代理协议 | iiopname:// |
com.sun.jndi.url.iiopname.iiopnameURLContextFactory |
| IIOP对象请求代理协议 | corbaname:// |
com.sun.jndi.url.corbaname.corbanameURLContextFactory |
RMI示例代码片段:**
// 创建JNDI目录服务上下文InitialContext context = new InitialContext();// 查找JNDI目录服务绑定的对象Object obj = context.lookup("rmi://127.0.0.1:9527/test");
示例代码通过lookup会自动使用rmiURLContext处理RMI请求。
