- 浏览: 3506884 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
javax.naming
接口 Context
public interface Context
此接口表示一个命名上下文,它由一组名称到对象的绑定组成。它包含检查和更新这些绑定的一些方法。
名称
每个作为参数传递给 Context 方法的名称都是相对于该上下文的。空名称用于命名上下文本身。名称参数绝对不能为 null。
大多数方法具有重载形式,一种带有 Name
参数,另一种带有 String
参数。这些重载的方法是等效的:如果 Name
和 String
参数只是相同名称的不同表示形式,则相同方法的重载形式的行为也相同。在以下方法描述中,仅完整记录一种形式。第二种形式将链接到第一种:对两者应用相同的文档。
对于支持联合的系统,Context 方法的 String 名称参数是复合名称。是 CompositeName 实例的那些名称参数被视为复合名称,而不是 CompositeName 实例的 Name 参数被视为组合名称(可能是 CompoundName 实例或组合名称的其他实现)。这允许将 NameParser.parse() 的结果用作 Context 方法的参数。在 JNDI 1.2 之前,所有名称参数都被视为复合名称。
此外,对于支持联合的系统,NamingEnumeration 中所有从 list() 和 listBindings() 返回的名称都是表示为字符串的复合名称。有关名称的字符串语法,请参见 CompositeName 。
对于不支持联合的系统,名称参数(Name 或 String 形式)和 NamingEnumeration 中返回的名称可能是其自己的名称空间中的名称,而不是复合名称空间中的名称,这由服务提供程序决定。
异常
此接口中的所有方法都可以抛出 NamingException 或其任意子类。有关每个异常的详细信息,请参见 NamingException 及其子类。
并发访问
不保证 Context 实例与多个线程的并发访问是同步的。需要并发地访问单个 Context 实例的线程应该在它们之间实现同步并提供必需的锁定。对于每个线程都操作一个不同 Context 实例的多个线程而言,无需实现同步。注意,向 lookup
方法传递空名称将返回一个表示相同命名上下文的新 Context 实例。
为了实现并发控制,返回 NamingEnumeration 的 Context 操作在枚举仍在使用中或者仍在遵从该操作生成的所有反向链接时被认为尚未完成。
参数
传递给 Context 接口或其子接口之一中任何方法的 Name 参数不会被服务提供程序修改。服务提供程序可以在执行操作期间保留一个对它的引用,其中包括方法结果的所有枚举和生成的所有反向链接的处理。调用方在这段时间内不能修改该对象。任何这类方法返回的 Name 都归调用方所有。调用方随后可修改它,而服务提供程序则不能。
环境属性
JNDI 应用程序需要一种方式来传达定义访问命名服务和目录服务的环境的各种首选项和属性。例如,为了访问服务,某个上下文可能需要安全证书的规约。另一个上下文可能要求提供服务器的配置信息。这些被称为某一上下文的环境 。Context 接口提供一些检索和更新此环境的方法。
该环境在上下文方法从一个上下文到下一个上下文时从父上下文中继承。对某一上下文环境的更改不会直接影响其他上下文的环境。
当将环境属性用于有效性和/或验证有效性时,这些属性与实现有关。例如,一些与安全有关的属性被服务提供程序用于“登录”目录。此登录过程可能发生在创建 上下文时,或者发生在第一次对该上下文调用方法时。无论这在何时或是否发生,此环境属性都与实现有关。在将环境属性添加到上下文中或从上下文中移除时,验 证这些更改的有效性也都与实现有关。例如,验证某些属性可能发生在进行更改时,或者发生在对上下文执行下一个操作时,抑或根本不验证。
拥有对某一上下文的引用的任何对象都可以检查该上下文的环境。敏感信息(比如明文密码)不应该存储在该环境中,除非已知实现能保护这类信息。
资源文件
要简化设置 JNDI 应用程序所需环境的任务,可以将资源文件
与应用程序组件和服务提供程序一起发布。JNDI 资源文件是使用属性文件格式的文件(参见 java.util.Properties
),包括一个键/值对列表。键是属性的名称(例如 "java.naming.factory.object"),而值是使用为该属性定义的格式的字符串。以下是 JNDI 资源文件的一个示例:
java.naming.factory.object=com.sun.jndi.ldap.AttrsToCorba:com.wiz.from.Person java.naming.factory.state=com.sun.jndi.ldap.CorbaToAttrs:com.wiz.from.Person java.naming.factory.control=com.sun.jndi.ldap.ResponseControlFactory
JNDI 类库读取资源文件,并使属性值随意可用。因此应该认为 JNDI 资源文件是“所有人可读的”,敏感信息(比如明文密码)不应该存储在那里。
有两种 JNDI 资源文件:提供程序 和应用程序 。
提供程序资源文件
每个服务提供程序都有一个可选的资源,该资源列出了特定于该提供程序的属性。此资源的名称是:
[prefix /]jndiprovider.properties
其中 prefix 是提供程序的上下文实现的包名称,其每个句点 (".") 都被转换成一个斜杠 ("/")。 例如,假设服务提供程序定义了一个带有类名称 com.sun.jndi.ldap.LdapCtx 的上下文实现。此提供程序的提供程序资源被命名为 com/sun/jndi/ldap/jndiprovider.properties 。如果该类不在一个包中,则资源的名称就是 jndiprovider.properties
。
JNDI 类库中的某些方法使用指定 JNDI 工厂列表的标准 JNDI 属性:
- java.naming.factory.object
- java.naming.factory.state
- java.naming.factory.control
- java.naming.factory.url.pkgs
在确定这些属性的值时,JNDI 库将参考提供程序资源文件。这以外的属性可由服务提供程序在提供程序资源文件中设置。服务提供程序的文档应该明确声明哪些属性是被允许的;文件中的其他属性将被忽略。
应用程序资源文件
在部署应用程序时,该应用程序通常将在其类路径中生成若干代码基目录和 JAR。类似地,在部署 applet 时,它将有一个指定 applet 类所处地址的代码基和档案文件。JNDI 查找(使用 ClassLoader.getResources()
)类路径中所有名为 jndi.properties
的应用程序资源文件
。此外,如果文件 java.home
/lib/jndi.properties
存在并且是可读的,则 JNDI 会将其视为一个额外的应用程序资源文件。(java.home
指示由 java.home
系统属性命名的目录。)包含在这些文件中的所有属性都被放置在初始上下文环境中。然后此环境由其他上下文继承。
对于同时出现在多个应用程序资源文件中的每个属性,JNDI 使用最先找到的值,或者在少数有意义的情况下串联所有这些值(细节在下文给出)。例如,如果在三个 jndi.properties 资源文件中存在 "java.naming.factory.object" 属性,则对象工厂列表是所有三个文件中的属性值的串联。使用此方案,每个可部署组件都要负责列出它导出的工厂。JNDI 在搜索工厂类时自动收集和使用所有这些导出列表。
从 Java 2 Platform 开始可使用应用程序资源文件,java.home /lib 中的文件除外,它在较早的 Java 平台上也可以使用。
属性的搜索算法
当 JNDI 构造一个初始上下文时,该上下文的环境是使用传递给构造方法的环境参数中定义的属性、系统属性、applet 参数和应用程序资源文件进行初始化的。有关细节请参见 InitialContext 。然后此初始环境由其他上下文实例继承。
如果 JNDI 类库需要确定某一属性的值,它将通过按顺序合并取自以下两个源的值来实现这一点:
- 将在其上执行操作的上下文的环境。
- 将在其上执行操作的上下文的提供程序资源文件 (jndiprovider.properties )。
对于每个同时存在于这两个源中的属性,JNDI 用以下方式确定属性的值。如果该属性是指定 JNDI 工厂列表的标准 JNDI 属性之一(如上文 所列),则这些值被串联成一个以冒号分隔的列表。对于其他属性,只使用最先找到的值。
当服务提供程序需要确定某一属性的值时,它通常将直接从环境中获取该值。服务提供程序可以定义将置于其本身提供程序资源文件中的特定于提供程序的属性。在这种情况下,它应该根据上文所述合并这些值。
这样,每个服务提供程序开发人员便可以指定与该服务提供程序一起使用的工厂列表。这可以由应用程序或 applet 的部署方指定的应用程序资源修改,而这些资源又可以由用户修改。
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74155在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3764原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23504Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2139FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5528我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2351WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1570Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2127终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14844大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1714charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22656Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4887来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2379本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8713一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2909近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3707目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2546Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2106由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3014安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1859本文介绍物理地址扩展 ...
相关推荐
在Android开发中,Context是应用程序的核心组件之一,它提供了与Android系统交互的接口,包括启动Activity、发送广播、访问资源等操作。当我们需要在非Activity或非Service类中使用Context时,可以通过各种方式获取...
在Android开发中,反射是一种强大的编程技术,它允许我们在运行时检查和操作类、接口、字段和方法。本文将深入探讨如何通过反射获取`Context`的实例,并展示如何利用反射实现一个集成`Toast`的工具类。这在某些场景...
`context` 类型是一个接口,它定义了几个方法来控制请求的生命周期,包括超时和取消。 - **创建 Context**:通常,可以通过 `context.Background()` 或 `context.TODO()` 来创建初始的上下文。前者表示没有父上下文...
`Context`在Android开发中扮演着核心角色,它是应用程序运行时环境的抽象表示,提供了与系统服务交互的接口。在`BaseAdapter`中,`Context`主要用于以下几个方面: 1. **视图创建**:在`getView()`方法中,我们需要...
反射是Java提供的一种强大的机制,允许程序在运行时检查类、接口、字段和方法的信息,并能动态调用对象的方法或访问其属性。在Android中,我们可以利用反射来获取并操作类的私有成员,包括私有的Context实例。 以下...
Spring框架是Java企业级应用开发的基石,而`spring-context`模块则是Spring框架的核心部分,它提供了上下文(ApplicationContext)接口,为bean的创建、配置、管理以及与其他服务的集成提供了全面支持。本文将深入...
在Android开发中,`Context`是一个至关重要的概念,它提供了应用程序运行环境的接口,是连接应用程序组件和系统服务的关键。`Context`字面上可以理解为上下文,它封装了应用程序运行时所需的各种环境信息,包括应用...
在Android开发中,Context是应用程序的核心组件之一,它提供了与Android系统交互的接口,使得开发者可以在应用程序的不同组件之间共享状态信息。"在项目的任何地方轻松获取Context的demo"旨在展示如何高效、安全地在...
Spring Context模块是Spring框架的核心部分,它提供了一个统一的接口来管理应用对象,包括bean的创建、初始化、配置和查找。Context模块使得应用程序可以跨越不同层次和组件,实现松耦合和高可测试性。在Spring中,...
Context可以理解为应用运行时的上下文环境,提供了对系统资源和组件的访问接口。本文将深入探讨Context的基本概念,以及在实际开发中常见的误解——ApplicationContext,并讨论Context的正确使用方式,特别是防止...
当A微服务调用B微服务(B 重定向了server.servlet.context-path),那么A调用B失败,网上大部分是@FeignClient 添加path方案 缺点:耦合高,难以维护 进行整改 B添加配置文件 spring: cloud: nacos: discovery: ...
在Java企业级应用开发中,`javax.enterprise.context.jar`是一个非常关键的库,它包含了用于管理组件生命周期的Contexts and Dependency Injection (CDI) API。CDI是Java EE平台的一个重要部分,它提供了依赖注入...
Context是Android系统中所有组件和资源的基础,它提供了与系统服务、应用程序环境和资源管理的接口。几乎所有的Android类都依赖于Context,它包含了应用程序运行所需的各种上下文信息,如应用程序资源、包管理器、...
第一:Activity 继承自 Context,同时 Activity 还实现了其他的接口,我们可以这样看,Activity 在语法上 extends 了 Context,其本质上是一个 Context,但同时它实现了许多接口,扩充了 Context 的功能,扩充之后的...
1. **邮件服务**:`spring-context-support`中的`JavaMailSender`接口及其实现类,如`SimpleMailMessage`,为发送电子邮件提供了便捷的API。通过配置邮件服务器的相关参数,可以在Spring上下文中轻松发送邮件。 2. ...
4. **JMS支持**:Spring的JMS模块简化了消息生产者和消费者的编程模型,提供了模板和监听器接口。 接下来,我们来看看Quartz 2.2.3。Quartz是一个开源的作业调度框架,用于创建、调度和执行作业。在Java应用中,...
2. **邮件服务支持**: 该模块还提供了对JavaMailSender接口的实现,使得发送电子邮件变得简单。只需配置好邮件服务器的相关参数,就可以在Spring应用中方便地发送文本、HTML甚至带有附件的邮件,极大地简化了邮件...
3. 将`TrustManagerFactory`的实例设置到`SSLContext`中,然后通过`sslContext.init(null, trustManagerFactory.getTrustManagers(), null)`初始化SSLContext。 4. 创建`SSLSocketFactory`实例,这是通过调用`ssl...
在Spring应用中,Context通常通过`ApplicationContext`接口来实例化,如`ClassPathXmlApplicationContext`或`FileSystemXmlApplicationContext`,这些类用于加载XML配置文件并初始化bean。 创建自定义对象的基本...