学习笔记-杂集

学习笔记-杂集
容器(container):指应用代码的运行框架。应用对象(大多数时候是业务对象)在容器里运行,这也就是我们所说的“被容器管理”,EJB就是过去管理J2EE业务对象时最常用的容器。而J2EE的WEB容器则比较特殊,它是用语管理servlet及其相关依赖对象的。

“对象”表示运行在容器中的对象,一组协作的对象通常被称为“组件”。举例:EJB通常被称为组件(而不是对象)。当一个对象被容器管理起来时,它就多少有些类似一个组件-它拥有了组件最重要特征:可以切换成另一个实现,只要后者满足同样的契约(contract)即可。这里的“对象”和粒度无关。

一个“轻量级容器”,应该具有下列特性:可以管理应用代码,而又不给应用代码强加对容器的依赖。例如,应该可以无须修改地将遗留代码引入容器。我们把这种特性叫做“非侵入性”:除非绝对必须,否则基础设施不应该把对容器的依赖强加给应用代码。这也使应用对象既可以在容器内,又可以在容器外运行,达到容器无关性。

所有EJB(甚至包括本地的EJB)的粒度都必须相当粗;EJB组件不支持继承,仅仅允许EJB实现类的继承。

“企业级应用”的范畴相当宽泛,从只访问一个数据库的Web应用,知道高度事务性,以中间件为核心,需要访问多个资源,甚至可能用到RMI基础上的内部分布和异步消息机制的应用程序。

Spring是一个应用框架,而不是Web框架、IOC框架,AOP框架或者中间层框架什么的,Spring由多个子框架组成,而且这些框架都相对独立。Spring 支持对EJB的访问,使用动态代理技术来实现无须编码的客户端业务代表(business delegate)因此,“是否使用本地无状态Session bean”就完全成了一种实现选择,而不是架构选择。也就是说如果你想使用EJB,你可以在统一的架构体系中使用,却不需要再让EJB成为你的架构基础。

AOP最有价值的用途就是在业务方法上提供通用的企业级服务。譬如声明性事务管理和声明性安全检查等。AOP影响的仅仅是我们使用J2EE服务的方式。在它的封装之下,我们仍然可以使用应用服务器的核心功能,譬如JTA。容器管理事务(CMT)。

如果应用系统在逻辑上分为三层结构:一个WEB层,一个业务对象层,一个数据访问层,整个应用系统运行在同一个JVM中。在这样一种分层的架构中,事务管理属于业务对象层。通常在业务门面中划分,数据访问层与事务过程。但是并不是管理事务,在数据访问层做不同方法调用可以参与到一个事务过程中 。

全局事务管理的底层基础设施是由容器实现的JTA,而全局事务管理往往使用EJB CMT。EJB CMT只不过是访问容器事务协调器的一种方式而已。此外,也可以直接使用JTA。

X/Open XA规范:XA定义了事务管理器和资源管理器的底层协议,定义了参与事务的资源的底层协议,以及两阶段提交的其他特殊情况的底层协议。

编程式事务管理:使用JTA通过JNDI获取;声明式事务管理:通过使用组件模型(即EJB CMT),这是一种建立在JTA基础设施之上的高层的服务。

JAVA连接器架构(the java connector architecture):提供了无缝插入容器事务和资源池基础设施的手段。通过标准的接口,允许任何资源参与全局分布式容器事务。

对于集合查询和批量更新操作来说,直接使用关系型操作非常合适,关系型数据库可以非常高效地处理这些操作。

客户端通常不可能对远程异常进行有效的处理,因此常见的做法是将其沿着调用栈一直向上抛,由一个通用的基础模块来统一处理。

你可能感兴趣的:(学习笔记-杂集)