本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[/*Java*/][转]何为容器(Container)
nybon 发表于 2005/3/6 19:13:24

何为容器     容器是基于面向服务架构(SOA)的特定规范框架,J2EE大量运用了容器和组件技术来构建分层的企业级应用。在J2EE规范中,相应的有WEB Container和EJB 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不用关心数据库连接速度、各种事务控制,直接由容器来完成。容器的职责     容器的职责因具体执行的服务调用规范的不同而有差别,比如Servlet Container只需实现Servlet 2.3规范。而Portlet Container,如Pluto,则需要具体实现基于JSR 168portlet 规范,具体的技术规范,比如需要实现基于容器级的事件处理机制Action Event、Message Event等。从水平的方向来看,通常容器提供系统级的服务调用。容器与应用服务器    容器是服务调用规范的具体实现,比如EJB Container是对EJB 2.0规范的实现。然而,实现只是衡量规范的执行程度,通常容器是由应用服务器来具体执行,从这个层面来说,应用服务器又可以称之为容器的容器。 容器与IOC原则           IOC,Inversion Of Control,即倒置控制,IOC自面向对象诞生起就存在,并不是最新技术,象SRP、OCP和DIP等面向对象的基本法则一样。Inversion Of Control,这个短语是由Brian Foote在他的一篇论文中最先使用的(http://www.laputan.org/drc/drc.html)。组件所需的一切通过Contexts、Configurations和Loggers的方式赋予组件。 在组件容器中,组件不需要实现或扩展(不依赖)容器类和接口,由容器在组件需要时提供其它依赖组件实例。反例: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。

阅读全文(2558) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



The Neurotic Fishbowl

.: 公告

This blog focuses on:

Semantic Web && Java Technology


Bloginess

«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

.: 我的分类(专题)

首页(171)
/*SemanticWeb*/(34)
/*Java*/(74)
/*FreeComments*/(59)
/*Agent*/(4)


In the Bowl

.: 最新日志

The End
使用Google Trends进行选型
怎样才能称为一次新的版本发行?
如何防止RSS信息过载
使用Excel作为用户接口
如何有效地报告Bug
sourceforge再次被封
趣文两篇
编写Firefox扩展
Jetspeed心得随笔


.: 最新回复

回复:Google API与yahoo 
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:Jbpm和Shark比较的feat
回复:JADE 3.3的bug
回复:JADE 3.3的bug
回复:[转]批判性地看待一种可行的表示技
回复:JIRA破解


The Fishkeeper
blog名称:SW Portal
日志总数:171
评论数量:219
留言数量:8
访问次数:1044153
建立时间:2004年10月30日



Text Me

.: 留言板

签写新留言

路过
路过
页脚问题
RE:请问一下你的主页的下面部分是怎么关
请问一下你的主页的下面部分是怎么关闭的?
我是做Mobile Agent的
Gmail
不错
不错啊小倪同学


Other Fish in the Sea

.: 链接





站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144758702 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号