Ejb是Enterprise javaBean(企业javabean)的简称,它是j2ee规范的一部分,它通过一些列的api来将ejb规范转换成了ejb产品。
它主要是针对部署分布式应用程序而设计的.企业级javaBean主要指:
会话bean(Session Bean):分为有状态的和无状态的,每当客户端请求时,容器就会选择一个sessionBean来为客户端服务,sessionBean可以直接访问数据库,很多情况下其实它是通过EntityBean访问数据库的.它的生命周期随着可客户端的会话执行结束之后,sessionBean以及它的税局同时消失。
实体bean(Entity Bean):这个是用于实现O/R映射的,负责将数据库中的表记录映射为内存中的实体对象。创建一个entitybean对象相当于创建一条记录,伸出一个实体bean同时会炒年糕数据库中删除对应的记录,修改实体bean的时候,容器会自动将实体bean的数据进行同步。
消息驱动bean(MessageDriven Bean简称mdb):基于jms消息,只能接受客户端消息然后处理,消息驱动bean实际上是一个异步的无状态sesionBean客户端调用mdb后,无需等待,立刻返回,mdb将异步处理客户端请求。这个特别适合需要异步处理请求的场合。
Ejb作为一种技术规范,解决了构建应用组件的一些标准问题,主要包括:
可扩展,分布式,事务处理,数据库存储,安全性。
Ejb架构为了满足架构的目标,规范中描述了:
服务器,容器,类和实例,home和remote接口,client。
下面具体说说对这几个规范的描述:
服务器主要功能:管理ejb容器(ejb容器则主要是管理bean),同时提供对操作系统服务的存取,还提供java相关的服务(主要指通过jndi访问命名空间和基于ots的事务处理服务)
容器:ejb容器和ejb服务器还是有一定的区别的,ejb的构建并不是在ejb服务器的内部直接执行,一个称为ejb容器的中间件在ejb服务器环境中运行,ejb容器为ejb构建提供操作环境。ejb容器主要是管理一下系统级别的问题:
1存储性问题:即合适载入存储状态
2生命周期管理:即管理ejb构建的实例,使ejb构建实现最大的效能和内存的利用率,激活和敦化ejb构建,管理实例池等等)
3事务管理:负责管理分布式事务处理的复杂问题
4远程连接:容器管理底层的通信问题,而且对ejb构建的开发者和客户都屏蔽了通信问题。
简单来说:容器是管理内部执行的,服务器是负责和外部打交道的。
ejb客户端:ejb客户端是指请求ejb构建服务的应用程序。ejb规范为创建ejb构建的客户接口定义了一套标准,这套标准主要包括
1 ejb home 接口:这个接口为客户机创建,删除,查找ejb remote接口对象提供了相关操作。ejb客户机通过使用jndi来查找对ejbhome接口的引用。
2 ejb remote接口:ejb客户机通过这些接口调用ejb构建的业务方法。
ejb类:bean的第一部分是实现基本方法的类,这个类封装了需要实现的商务逻辑。这个类需要遵循一些规范,并要与一些严格的接口保持一致。对于不同类型的bean则需要封装不同类型的逻辑。
ejb对象:ejb对象运行在ejb容器中,当客户调用ejb时候,并不直接与bean类提供的方法打交道,而是通过ejb对象。这个对象是根据bean类和某些接口和描述文件通过专门的工具而生成,负责和一些中间层api打交道。ejb容器则是客户端和bean类之间的中间层,它负责管理一个能处理底层网络通信的对象,这个对象就是ejb对象。ejb对象在物理上是ejb容器的一部分。总而言之,ejb对象就是bean类实例的代理。
remote接口:remote interface接口告诉ejb对象自动生成工具需要复制bean类的哪些接口。实现这个接口的对象首先要实现接口中定义的方法,然后还需要实现用户定义的remote接口中的方法。
Local接口:有时候bean的调用不需要经过网络,比如在同一个容器中的调用,那么用户就可以使用local对象来调用bean实例。
以上介绍了ejb在j2ee中的位置和ejb自身的一些基本规范和结构。接下来将继续描述ejb中一些具体的技术的实现。