Context

Context 在Java中的出现是如此频繁,但其中文翻译“上下文”又是如此诡异拗口,因此导致很多人不是很了解Context的具体含义是指什么,所以很有必要来深究一下这词的含义。

先来举几个JAVA中用到Context的例子

(1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息。请看下面的代码
InitialContext ic = new InitialContext();
RMIAdaptor server
= (RMIAdaptor)ic.lookup( " jmx/invoker/RMIAdaptor " );

这是一段JBoss中获取MBean的远程调用类的代码。在这里面通过InitialContext中JNDI注册的名称“jmx/invoker/RMIAdaptor”来获得RMIAdaptor
对象。这和JAVA集合中的MAP有点象,有一个String的key,key对映着它的对象。

(2)再来看看下面Spring中最常见的几句代码。 ApplicationContext 是内含configuration.xml配置文件的信息,使得可以通过getBean用名称得到相应的注册对象。

ApplicationContext ctx = new FileSystemXmlApplicationContext( " configuration.xml " );
Object obj
= ctx.getBean( " Object_Name " );



从上面的代码,我很能体会到Context所代表的意义:公用信息、环境、容器....。所以我觉得Context翻译成上下文并不直观,按照语言使用的环境,翻译成“环境”、“容器”可能更好。

把Context翻译成“上下文”只是不直观罢了,不过也没大错。我们来看看中文的“上下文”是什么意思。我们常说听话传话不能“断章取义”,而要联系它的“上下文”来看。比如,小丽对王老五说“我爱你”,光看这句还以为在说情话呢。但一看上下文--“虽然我爱你,但你太穷了,我们还是分手吧”,味道就完全变了。从这里来看“上下文”也有“环境”的意思,就是语言的环境。

-------------------------------------------------

application(javax.servlet.ServletContext):在服务器启动后一直存在,而且所有用户共享;而且在服务器没有关闭前一直有效  
  session(javax.servlet.http.HttpSession):是单个客户和服务器进行的会话,也就是单个用户独享;在用户停止和服务器的操作(可以设定时间的长短)后服务器会自动将其清除

---------------------------------------------------

我的理解是:所谓上下文,它是用来存储系统的一些初始化信息,例如在jboss中通过配置文件指定了数据源,那么在jboss启动的时候就把这个文件的相关信息上下文中,于是在我们使用这个数据源的时候,就需要先获得系统的上下文,然后再通过一定的方式将数据源取出来。至于在系统启动时,是如何将这些初始化信息加载到上下文中,而上下文在程序中具体又是以什么形式体现的,应该随着系统的不同而不同。

------------------------------------

 

 

javax.servlet.ServletContext   有一个方法    
  ServletContext   getContext(java.lang.String   uripath)  
  它返回的是一个上下文,  
  我有两个问题  
  1,什么叫上下文?  
  2,这个函数的参数是一个URI,它与ServletContext存在什么联系?

-------

代表方法中参数(比如"/manage/document")这个目录下的所有东西,上下文可以在容器的server.xml文件中设定

-------

jsp中内置有一个对象application,熟悉吧?它就是ServletContext的一个子类的对象。所以你说的这个函数返回的“上下文”就是一个和application类似的东东,可以做和application一样的事情。  

-----------------

上下文就是某一个目录,是一个参考点,java开发中很多地方都是相对上下文来说的,其实就是相对于那个目录说的。URL实际上就是那个目录,如URL=ip:port/dir   。

简单来说上下文就是与某些行为相关的一些信息,如某次客户端请求的相差信息,某个Servlet线程的相差信息等等,有些行为脱离了上下文就无法区分

 

 

-------------------

A naming service associates names with objects. An association between a name and an object is called a binding, and a set of such bindings is called a context. A name in a context can be bound to another context that uses the same naming conventions; the bound context is called a subcontext. For example, in a filesystem, a directory (such as /temp) is a context that contains bindings between filenames and objects that the system can use to manipulate the files (often called file handles). If a directory contains a binding for another directory (e.g., /temp/javax), the subdirectory is a subcontext. 

从上面的文字来看,觉得所谓“上下文”就是一组名字和对象之间的联系,不知道这样理解对不对。。。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(jboss,object,服务器,application,binding,filenames)