东莞手机网站价格便宜,微信外链网站,苏州做网站优化,wordpress缩略图压缩一、EJB发展历史 IBM、SUN公司力推EJB前景#xff0c;大公司开始采用EJB部署系统。主要价值#xff1a;对分布式应用进行事务管理 出现问题#xff1a; ①EJB的API难度大 ②规范要求必须抛出特定异常的接口并将Bean类作为抽象类实现#xff08;不正常不直观#xff09; ③…一、EJB发展历史 IBM、SUN公司力推EJB前景大公司开始采用EJB部署系统。主要价值对分布式应用进行事务管理 出现问题 ①EJB的API难度大 ②规范要求必须抛出特定异常的接口并将Bean类作为抽象类实现不正常不直观 ③对象关系映射和食物管理有天然复杂性 ④用EJB封装业务逻辑会带来性能下降 【早期EJB规范至允许客户端通过特定协议例如CORBA进行远程方法调用来调用直到EJB2.0引入本地接口。】 轻量级技术代替EJBHibermate【数据持久化和对象关系映射】、Spring框架【封装业务逻辑】 改变 EJB3.0出现 1. EJB 1.0
EJB1.0发布于1998年3月24日规范中包含有状态的的服务器对象、无状态的服务器对象和可选的持久化领域对象 。
EJB1.0提供了良好的分布式支持功能允许通过远程接口来远程调用EJB中的业务方法。
EJB1.0强制客户机组件以远程访问的方式调用EJB方法。
2. EJB 1.1
EJB1.1发布于1999年12月17日。
EJB1.1开始支持实体Bean必须在应用中实现。实体Bean是可以存储在持久存储介质上的持久对象用来表示永久性数据并提供操作这些数据的方法。一般情况下一个实体Bean对应数据库中的一张表而一个实体类的实例对应着这张表的一个记录。
EJB1.1引入了XML格式的部署描述文件用来以声明的方式管理EJB的部署信息。
EJB1.1的安全机制由角色驱动而非方法。
3. EJB 2.0
EJB2.0发布于2001年8月22日。
EJB2.0取消了强制客户机组件以远程访问的方式调用EJB方法。【减少不必要的系统开销 避免性能下降】
EJB2.0引入本地接口允许开发者选择是否让EJB组件支持远程访问。
EJB2.0增强了实体Bean功能为容器管理持久化的EJB提供容器管理关系的支持开发者可以通过配置文件来管理EJB之间的关系
EJB2.0引入了EJB-QL作为查询语言为实体Bean提供查询支持。
EJB2.0引入了消息驱动Bean消息驱动Bean是用来专门处理消息请求的组件属于无状态的会话Bean异步处理用户请求。消息驱动Bean没有远程接口不能被客户机调用。可以通过向消息目的地发消息触发消息驱动Bean的onMessage方法。
4. EJB 2.1
EJB2.1发布于2003年11月24日。
EJB2.1可以提供Web Service支持利于异构系统的整合。可将无状态会话bean暴露为Web服务EJB可通过引用访问Web服务。
EJB2.1增加定时器服务提供一种新的基于定时器的事件驱动方式。可供消息驱动bean作为消息源使用。
EJB2.1增加了EJB-QL的功能改进EJB-QL的查询功能。支持ORDER BY, AVG, MIN, MAX, SUM, COUNT和MOD。
EJB2.1使用XML schema代替DTD以定义部署描述符。
5. EJB 3.0
EJB3.0发布于2006年5月2日。
EJB3.0抛弃了EJB2实体的设计仅保留了会话Bean和消息驱动Bean。
EJB3.0引入了全新的JPA规范作为持久化解决方案。JPA是一种Java应用程序接口规范描述Java应用中关系数据的管理充当面向对象领域模型和关系数据库系统的桥梁。
EJB3.0简化了EJB2中会话Bean的开发不再需要Home接口。
EJB3.0只要求提供远程或本地的业务接口即可。
EJB3.0不推荐实用XML文件作为部署描述文件改为使用Annotation设置部署描述信息。
EJB3.0使用传统简单Java对象POJO实际是普通JavaBeans有一些属性及属性的getter、setter方法没有业务逻辑有时可以作为值对象和数据传输对象使用。可以有简单的运算属性不允许有业务方法不能带有connection之类的方法。主要用协助业务逻辑。
EJB3.0支持依赖注入来简化全异系统的集成与配置。
EJB3.0规范大幅采用Java注释来代替部署描述符对代码进行元数据修饰从而消减此前EJB编程的冗杂性。
EJB3.0把2.X版的实体Bean改为由JPA支持。【JPA是Java持久层接口是JDK5.0注释和XML描述对象关系表的映射关系运行期的实体对象持久化到数据库中。】
6. EJB 3.1
EJB3.1允许企业Bean只提供一个Bean类无须提供业务接口。
EJB3.1允许通过异步的方式调用会话Bean的业务方法。
EJB3.1取消了类文件必须打包到JAR文件的限制允许直接将EJB类放到WAR文件中。 二、EJB核心模型 EJB定义了三种企业Bean分别是会话Bean、实体Bean和消息驱动Bean。 会话Bean描述了与客户端的一个短暂的会话。当客户端的执行完成后会话Bean和它的数据都将消失 实体Bean描述了存储在数据库表中的一行持久稳固的数据如果客户端终止或者服务结束底层的服务会负责实体Bean 数据的存储。 数据驱动Bean结合了会话Bean 和 Java信息服务JMS信息监听者的功能它允许一个商业组件异步地接受 JMS消息。 1. 会话Bean
会话Bean用于实现业务逻辑分为有状态的会话Bean和无状态的会话Bean。
每当客户端发出EJB调用请求时容器就会选择一个会话Bean为客户端服务。
会话Bean可以直接访问数据库更多时候由实体Bean实现数据访问。
2. 实体Bean
实体Bean代表真实物体的数据。
EJB3.0中实体Bean仅作为普通Java对象使用。
实体Bean负责与数据库表进行对象关系映射。
3. 消息驱动Bean
消息驱动Bean用来专门处理基于消息请求的组件。
消息驱动Bean可以收发异步JMS消息能够与其他EJB交互。
【JMS是Java消息服务应用程序接口 支持两个程序之间或分布式系统中发送消息进行异步通信】
适用于一个业务执行时间很长执行结果无须实时向用户反馈的场合。
三、开发支撑
1. EJB容器
EJB需要运行在EJB容器EJB容器截取客户和组建之间的通信并根据配置信息添加基础设施代码EJB容器用于提供EJB组件的开发、部署和运行环境。 目前支持EJB3.0的应用服务器有JBoss4.2.X以上版本、Classfish、WebLogic10以上版本、Sun Application Server9.0以上版本、Oracle Application Server10g以上版本和Apusic应用服务器。【JBoss是使用者最多的开源应用服务器WebLogic是时长占有率最高的商业应用服务器】
2. JNDI
JNDI为各种现有的命名和目录服务提供通用接口DNS、LDAP、活动目录、RMI注册器、COS注册器、NIS及文件系统。
JNDI有客户API和服务提供商接口SPI组成应用程序通过客户API访问命名和目录服务。服务提供商接口用于供厂商创建命名和目录服务的JNDI实现。
EJB开发者只需要知道客户API如何访问命名和目录服务不需要知道JNDI SPI的使用。
命名服务用于将名称和对象联系起来从而可以用名称访问对象。【例如输入URL ------DNS-------》IP地址】
目录服务是命名服务的扩展目录服务的对象不仅有名称还有属性。目录服务中对象可以有属性命名服务中对象没有属性。 四、开发平台
可以在Eclipse上完成基于EJB的二次开发。
五、二次开发基本步骤
1. 开发环境配置
①配置JDK和JBoss环境在Eclipse里新建EJB项目
②打包JAR文件到JBoss安装目录是server/default/deploy/目录下JBoss会对JAR文件进行热部署。打包WAR文件到JBoss安装目录是server/default/deploy/目录下。浏览器访问应用程序。