为给定的 url 方案 id 创建一个上下文。
得到的上下文用于解析 scheme
方案的 url。得到的上下文没有绑定到特定 url。它能够使用指定方案处理任意 url。
创建所得上下文的工厂的类名称包含命名约定方案 id urlcontextfactory(例如,用于 "ftp" 方案 id 的 "ftpurlcontextfactory"),所在的包指定如下。context.url_pkg_prefixes 环境属性(可能包含从 applet 参数、系统属性或应用程序资源文件中获得的值)包含以冒号分隔的包前缀列表。按指定的顺序尝试该属性中的每个包前缀来加载工厂类。默认包前缀是 "com.sun.jndi.url"(如果指定的包前缀都无效,则尝试使用此默认前缀)。完整的包名称是使用包前缀构造的,并与方案 id 连接在一起。
例如,如果方案 id 为 "ldap",而 context.url_pkg_prefixes 属性包含 "com.widget:com.wiz.jndi",则命名管理器将尝试加载以下类,直到成功实例化其中的一个:
- com.widget.ldap.ldapurlcontextfactory
- com.wiz.jndi.ldap.ldapurlcontextfactory
- com.sun.jndi.url.ldap.ldapurlcontextfactory
如果没有包前缀有效,则返回 null。
如果某一工厂被实例化,则使用以下参数调用该工厂来产生结果上下文。
factory.getobjectinstance(null, environment);
例如,按上述方式对 ldap url 上下文工厂调用 getobjectinstance() 将返回一个可以解析 ldap url(例如 "ldap://ldap.wiz.com/o=wiz,c=us"、"ldap://ldap.umich.edu/o=umich,c=us" 等等)的上下文。
注意,对象工厂(实现 objectfactory 接口的对象)必须是公共的,并且必须有一个不接受任何参数的公共构造方法。
- 参数:
scheme
- 上下文支持的 url 的非 null 方案 id。environment
- 将在创建对象和对象工厂时使用的环境属性(可能为 null)。
- 返回:
- 使用方案 id
scheme
解析 url 的上下文;如果没有找到用于创建该上下文的工厂,则返回 null
。
- 抛出:
namingexception
- 如果在创建上下文时发生命名异常。- 另请参见:
getobjectinstance(java.lang.object, javax.naming.name, javax.naming.context, java.util.hashtable, ?>)
,
objectfactory.getobjectinstance(java.lang.object, javax.naming.name, javax.naming.context, java.util.hashtable, ?>)