1直想写1些关于JavaEE的东西,从刚开始看《Ejb in Action》的时候就想写,到后来工作中1直在使用JavaEE的技术,开源的流行框架丢的也差不多了。JavaEE企业级的东西把自己弄的也跟傻子似的。回过头来看看避免自己真的成了傻子。
先从“组件”(component)说起,不知道从甚么时候开始人们希望软件开发就像孩子搭积木似的可以是组装的。随之而来的1个概念就是“组件”用专业1些的话说就是“组件是1个自包括的、可以重用的软件单元,可以把它集成到利用程序中”更加直白1些说就是1块积木是可以独立完成1项任务的,而且这个块积木是可以被多个地方使用的(想一想螺丝螺母、发动机相信能帮助读者理解这个概念)。在Java中组件的最简单情势是JavaBean,我们通常叫bean初学者听到这个词会骂街,猪8戒,猪悟能、猪刚鬣、木母、净坛使者、天蓬元帅1堆名字到头来不就是1头猪么。甚么bean,Javabean到头来不都是Java中的类么。骂街归骂街不同的名称在不同的地方是成心义的。天蓬元帅值这头猪在天庭当官时候的称呼,猪8戒是这头猪跟了唐僧以后的称呼,猪刚鬣是猪在高老庄时期的称呼……好像说远了,总之要说的是不同的名称所包括的意义和要反应的东西是有区分的千万不要1叶障目。
在企业范围内,组件更专注于实现业务服务,同时根据组件可履行的业务操作定义组件的协议。Java EE的标准组件模型是EJB模型,它定义了包装、部署和与自包括业务服务进行交互的方式。EJB的类型决定了需要与之交互的协议。会话bean(Session bean)使用标准的Java接口来定义可以调用的业务方法集合,而消息驱动bean(message-driven bean)的行动取决于bean旨在接受的消息类型和格式。
在我们平时开发当中时候使用组件模型是可选的,1般来讲可用户会话bean的容器服务也可用户servlet。结果致使现在大多数Web利用程序完全避开了EJB,直接从Servlet到http://www.wfuyu.com/db/。使用组件需要以层的情势组织利用程序,其中业务服务处于组件模型中,且表示服务层位于它之上。
目前之所以很多Web利用程序不选择EJB是由于历史上EJB的复杂性。随着这个问题得到解决人们渐渐的收获定义明确的业务服务集合所带给利用程序的好处。
l 疏松耦合(loosecoupling)。使用组件来定义服务鼓励了利用程序的层之间的疏松耦合。更改1个组件的实现对客户端或其他依赖与它的组件没有任何影响。
l 依赖性管理(dependency management)。组建的依赖性可以在元数据中声明,并由容器自动解析。
l 声明周期管理(Lifecycle management)。组件的生命周期又利用http://www.wfuyu.com/server/明肯定义和管理。组件实现可以参与声明周期操作来获得和释放资源,或履行其他的初始化和关闭行动。
l 声明性容器服务(declarative container service)。组件的业务方法是由利用http://www.wfuyu.com/server/所截获,以利用注入并发性、事务管理、安全性和远程处理之类的服务。
l 可移植性(portability)。对遵照JavaEE标准并部署到基于标准的http://www.wfuyu.com/server/上的组件,额可以更加轻松地把它们从1个兼容http://www.wfuyu.com/server/移植到另外一个http://www.wfuyu.com/server/。
l 可扩大性和可靠性(scalability and reliability)。利用http://www.wfuyu.com/server/旨在确保组件可以有效地实现可扩大性管理。根据组件的类型和http://www.wfuyu.com/server/配置,使用组件实现的业务操作可以重试失败了的方法调用,或乃至把故障转移到集群上的另外一台http://www.wfuyu.com/server/。