[转]何为容器(Container)
WEB Container,给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP、SERVLET直接跟容器中的服务接口交互,不必关注其它系统问题。WEB Container主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。比如,Resin 2.1.x以上版本提供的Servlet Container就实现了J2EE的Servlet 2.3规范。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。
容器的职责
portlet 规范,具体的技术规范,比如需要实现基于容器级的事件处理机制Action Event、Message Event等。从水平的方向来看,通常容器提供系统级的服务调用。
容器与应用服务器
在组件容器中,组件不需要实现或扩展(不依赖)容器类和接口,由容器在组件需要时提供其它依赖组件实例。反例:EJB其中的EJB组件需要实现几个接口,需要用JNDI或全局注册表得到其它EJB实例。
IOC,实现了组件与容器间的解耦,意味着在开发组件时同样可以采用从上至下的方法。不需要建立一个注册类,客户端必须调用此注册类才能获得组件实例。
容器与AOP技术
Aspect Oriented Programming,即“面向方面编程”。诞生于业界非常著名的施乐Palo Alto研究中心(Palo Alto Research Center,简称PARC),从AOP的概念雏形到2001年AspectJ 1.0版本仅仅花了7年时间。AOP起源于Gregor Kiczales领导的一个研究反射(reflection)和元对象协议(metaobject protocol)的小组,小组的研究领域曾被认为是在面向对象程序中提供灵活性至关重要的技术。然而,在多年以后,他们才认识到横切(crosscutting)正在他们寻找的技术。
目前,基于Aspect研究技术,诞生了很多基于Aspect的Framework。具体请参见:AOSD(Aspect Oriented Software Development)http://www.aosd.net/。
下表为当前三种成熟Aspect Framework比较:
| Framework | Language | Pointcuts | Weaving method | Dynamic/Fluid |
| Nanning | Java (or XML) | Method calls,
instantiation |
Dynamic proxies | Yes |
| AspectJ | Language extension to Java | Anything | Source code | No |
| Aspectwerkz | Java and XML | Method calls,
instantiation, field access, more |
Byte code | Yes |
当前,基于AOP的容器不多, 构建在PicoContainer之上的NanoContainer则使用了Nanning的Aspect Framework。
阅读列表