- 浏览: 864187 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
一、普通的javaBean:
1.对象生命周期的管理
2.事务的管理
3.安全性的管理
4.远程方法的调用
二、为什么要使用EJB?
1.使用EJB可以比较简单地开发分布式系统
2.开发EJB组件可以通过声明的方式使用服务器提供的一些企业级的服务,
如事务管理可以全部交给服务器管理
3.使用EJB开发的业务逻辑对象和持久层的对象可以全部交给EJB容器管理
servlet类----->在web.xml中进行描述------>.war------>web容器------>web容器管理servlet的生命周期(包括创建和销毁)
ejb类----->在ejb-jar.xml中进行描述------>.jar------>ejb容器------>ejb容器管理ejb的生命周期(包括创建和销毁)
三、什么是EJB?
1.ejb是j2ee的一个标准,适合开发大型的分布式系统,是一个分布式的组件架构。
2.ejb是一个可扩展的、可靠的、安全的组件架构
3.使用ejb开发的组件可以被部署到任何j2ee服务器上
四、ejb和javaBean的比较
1.相同点
1)都可以提供getter和setter方法
2)都是可重用的组件
3)都可以有属性和方法
4)都可以进行组装构建一个java系统
2.不同点
1)javaBean要比ejb要小(ejb比javaBean复杂)
2)javaBean是开发组件不是部署组件,而ejb是部署组件
五、ejb的角色
1.封装业务逻辑
2.完成数据持久(访问数据库)
3.访问其他的已有系统(JCA)
六、ejb的种类
1.session bean(会话bean):封装业务逻辑
2.entity bean(实体bean):访问数据库
3.message bean(消息驱动bean):处理消息
七、RMI:java中提供的一种于远程调用机制
RMI/IIOP:是RMI的一个扩展版本,适合用于intenet上
注意:在调用ejb的时候不会涉及到底层的远程方法的调用过程
八、Proxy pattern(代理模式):两个对象实现共同接口或者继承共同父类,调用其中一个对象的方法等同于调用另外一个对象的方法。stub和ejb对象之间采用的代理模式
九、ejb的组成:可以包含四个接口和一个实现类,以及一个描述文件:ejb-jar.xml
1.javax.ejb.EJBLocalObject
2.javax.ejb.EJBObject
3.javax.ejb.EJBLocalHome
4.javax.ejb.EJBHome
其中四个接口可以分为两组:
1.EJBLocalObject和EJBLocalHome:ejb组件只能通过本地方式访问,指的是ejb客户端和ejb是通过引用来操纵的
2.EJBObject和EJBHome:ejb组件只能通过远程方式访问,指的是通过stub和skeleton来相互调用
jbuilder中一个project可以包含多个ejbmodel,一个model可以包含多个ejb组件
十、ejb的部署描述文件包含两个:
1.标准的部署描述文件:ejb-jar.xml,描述ejb组件的相关信息
2.根容器相关的部署描述文件:weblogic-ejb-jar.xml,描述根ejb容器相关的信息,如ejb组件的jndi的名字
十一、1.the remote interface :===>the EJB Object
public interface Hello extends javax.ejb.EJBObject
作用:1).容器根据这个接口创建EJB Object对象
2).如果bean类中的商业方法需要被以远程的方式调用,那么这些方法必须在这个接口中定义,
并且抛出RemoteException
2. the home interface:===>the Home Object
public interface HelloHome extends javax.ejb.EJBHome
作用:1).容器根据这个接口创建Home对象,这个接口中定义的方法必须要抛出RemoteException
通过远程方式使用。
2).这个接口中定义的create方法创建EJB Object对象
3. the local interface:===>the Local Object
public interface HelloLocal extends javax.ejb.EJBLocalObject
作用:1).容器根据这个接口创建Local Object对象
2).如果bean类中的商业方法需要被以本地方式调用,那么这些方法必须在这个接口中定义
4.the local home interface:===>the Local Home Object
public interface HelloLocalHome extends javax.ejb.EJBLocalHome
作用:1).容器根据这个接口创建Local Home对象,这个接口中定义的方法只能通过本地方式访问。
2).这个接口中定义的create方法创建Local Object对象
5.the enterprise bean class :===>
public class HelloBean implements javax.ejb.SessionBean
作用:提供业务逻辑方法的真正实现
本地调用的步骤:
client:1).创建InitialContext对象
2).查找Local Home 对象,返回Local Home 对象的引用
3).调用Local Home对象的create方法,返回Local Object的引用
4).调用Local Object中声明的商业方法
远程调用的步骤:
client:1).创建InitialContext对象
2).查找Home stub
3).调用Home stub的create方法,返回EJB Object stub对象
4).调用EJB Object stub对象中声明的商业方法
十二、EJB2.x中使用到的模式
1.proxy(代理模式)
home stub 和home object
ejb object stub 和ejb oject
2.factory-method(工厂模式)
home对象采用这个模式,他作为一个工厂,生产的产品是EJBObject
3.delegate (委托模式)
ejb object和bean 对象之间
十三、EJB中的异常
1.应用级别的异常
这种级别的异常能直接抛给ejb客户端,如:javax.ejb.CreateException
2.系统级别的异常
这种级别的异常不能直接抛给EJB客户端,ejb容器将这种异常包装成RemoteException或者它的子类型,然后再抛给客户端
*EJBContext是EJB容器和Enterprise bean对象通讯的对象
十四、EJB中间件
1.隐式的中间件:通过声明的方式去使用的服务,称为隐式中间件,在EJBObejct中调用这些服务。
优缺点:1.业务逻辑方法中只需要关注业务逻辑过程,不需要关注中间件服务的使用,容易维护。
2.所有使用中间件服务的过程都是由容器来决定的,不是很灵活。
2.显式的中间件:通过编码的方式去使用的服务,称为显式中间件;在bean类中调用这些服务。
优缺点:1.使用服务的过程是由开发人员决定的,使用起来比较灵活。
2.在业务逻辑方法中除了有业务逻辑代码之外,还有使用中间件服务的代码,这样维护起来比较困难。
EJBObject==Request Interceptor(EJBObject!=Enterprise bean class)
作用:
1.隐式的分布式事务管理
2.隐式的安全管理
3.隐式的资源管理和组件声明周期管理
4.隐式的持久化
5.隐式的远程访问
6.隐式的组件位置透明
十五、stub和skeleton
1.两者都是在服务器端创建,stub在客户端运行,skeleton在服务器端运行。
2.在EJB中,bean对象是单线程访问的。
优点:不用关心并发访问的问题
缺点:影响性能
3.池的配置:
1)池的出示大小:在部署完毕EJB组件之后,创建bean对象的数量
2)池的最大容量:池中放置bean对象的最大数量
4.当EJB客户端一个会话跨多个方法调用,那么无状态的会话bean是不能保存客户端的状态。
Home/LocalHome 接口 bean类
create() ===> ejbCreate();
create(int val) ===> ejbCreate(int val);
5.无状态会话bean的bean对象是由容器来创建的,有状态的会话bean的bean对象是由Home/LocalHome对象来创建的
LRU:最近最久未使用;
NRU:最长时间未使用。
十六、有状态会话bean和无状态会话bean的比较
1.无状态的会话bean的对象对于所有的客户端都是共享的,而有状态的会话bean只能由一个客户端调用,所以当客户端发起的一个请求跨多个方法调用的时候,无状态会话bean不能维护客户端状态,而有状态bean则可以。
2.在并发请求比较多的时候,为了提高性能,无状态会话bean使用pool,而有状态会话bean为了限制内存当中bean对象的数量,从而提高性能,使用了cache。
3.无状态的会话bean是由容器来决定是否被创建,并且也是由容器来创建的,而有状态的会话bean是由客 户端来决定是否被创建,只要客户端调用home对象的create方法,就会创建一个bean对象。
4.ejbPassivate和ejbActivate对于无状态会话bean是无意义的,对于有状态的会话bean:当bean对象被钝化之前,会调用ejbPassivate(),用于释放一些无法被钝化的资源,如DataSource,当bean对象被重新激活之前,会调用ejbActivate(),用于恢复在ejbPassivate中被释放的资源。
十七、消息驱动bean
1、发送消息的一方,称为消息生产者。
2、接收消息的一方,称为消息的消费者。
3、主题消息(topic)===>发布订阅式
4、队列消息(queue)===>点对点式
5、topic类型的消息有如下两种订阅者:
1)、持久的订阅者:消息的生产者生产一个Topic消息,此时MDB没有运行,如果MDB是一个持久的订阅者,那么下一次MDB运行的时候,可以接收到此消息。
2)、非持久的订阅者:消息的生产者生产一个Topic消息,此时MDB没有运行,如果MDB是一个持久的订阅者,那么下一次MDB运行的时候接收不到此消息。
十八、什么是jms?
1、jms j2ee其中的一个标准,用于访问jms服务,接收和发送消息。
2、JMS编程的步骤:
1)通过jndi查找ConnectionFactory对象
2)通过ConnectionFactory对象创建Connection对象
3)通过Connection对象创建Session对象
4)通过jndi查找Destination对象
5)通过Session对象创建MessageSender或者MessageReceiver对象
6)通过MessageSender对象发送消息或MessageReceiver对象接收消息
十九、什么是MDB
1、MDB是一种特殊的EJB组件,用来接收jms消息,能够消费queue或topic消息
2、Bean类实现了MessageDriverBean接口之外,还实现了MessageListener接口,提供了唯一的商业方法onMessage(),没有返回值。
3、不能抛异常给客户端
4、无状态的
5、可以是持久或者非持久的订阅者。
6、MDB的高级特性:
1)MDB的客户端和MDB不可能运行在同一个事务中。
2)MDB不能使用EJB容器提供的安全服务
3)负载均衡
在集群的环境中,MDB能很好的完成负载均衡。
4)重复消息
在集群的环境中,topic类型的消息很有可能被重复消费
解决办法就是使用queue类型的消息替代topic类型的消息
5)消息的无序
生产者生产的消息不能保证消息是先进先出
6)ejbRemove()方法有可能被调用
当发生系统级别的异常或系统崩溃的时候
7)毒消息:当MDB在处理消息的时候出现食物回滚,从而导致消息没有被正常消费,JMS Server
会将同一个消息重复进行发送,出现一个死循环。
a、在onMessage中不要抛出系统级别的异常
b、使用bean管理事务代替容器管理事务
c、有些服务器本身提供了处理毒消息的功能,比如同一个消息被重发若干次就自动删除
发表评论
-
远程调用ejb3
2011-05-23 23:54 1332总结下远程调用ejb3的几 ... -
EJB 小结
2011-05-15 17:38 981EJB3的功能很是强大,但中小企业很少使用它做开发,一般应 ... -
EJB学习笔记(四)EJB中bean上下文(context)区别于JNDI上下文
2011-05-15 02:21 1353Bean的Context引用 每个bean 都有一个bean ... -
EJB学习笔记(五)关于ejbActivate()、ejbPassivate()、ejbRemove()
2011-05-15 02:19 1249ejbPassivate() 要确保你的实例变量已经钝化 ... -
ejb事务管理
2011-02-13 15:13 1244java ee规范并没有实现事务的隔离级别,所以要依靠不同的服 ... -
Spring 与 EJB 比较
2011-02-12 13:04 1409在开源领域,Spring开源框架已成为企业应用开发中使用最 ... -
大家说说 JavaBean 与EJB的区别
2011-02-11 23:10 2106JavaBean在一般情况下指 ... -
ejb学习, EJB和Spring的比较及EJB3.0的运行环境
2010-10-26 09:34 1272今天开始学习ejb,黎活明 ... -
EJB 知识与运行环境设置
2010-10-13 15:12 112221. 依赖注入 当 EJB 需要使用其他 EJB ... -
在eclipse中建立EJB2工程
2010-09-26 14:14 1408EJB2.0学习笔记之一,在eclipse中创建一个sessi ... -
ejb,分布式,集群,负载均衡的概念
2010-09-12 00:20 1447ejb:服务器组件框架技术,用来构建企业级和分布式组件应用 ... -
JBoss EJB 3.0 第一章 EJB池和缓存
2010-08-13 17:32 1672关键字: jboss ejb3 JBoss EJB3.0 ...
相关推荐
EJB2.X 的使用例子,讲解了EJB2.X Entity Bean如何映射数据至表中, Session Bean如何使用,客户端调用Session Bean 中的业务方法. 有问题,请联系本人: QQ:343827585 (注:源码下载后,请删除后缀名为 .java的相应...
介绍ejb2.x的基本原理: stateless Ejb statefull Ejb entity ejb Message-driven Ejb
使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x),包含server和client。
使用eclipse通过weblogic开发简单的ejb应用(weblogic 10.x & ejb3.x)
期待已久的EJB3.0最终规范已经发布了。虽然EJB3.0 最终规范出来了一段时间,但对EJB3.0的应用还停留在介绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例...随着EJB3的发展,EJB2.x将会逐步成为历史。
开发ejb时总是无法用@EJB 解决办法: javax.ejb.EJB 需要的jar___jboss-ejb3x.jar
JBoss7.1与eclipse(indigo)集成,创建EJB3.x项目(HelloWorld)非常详细的图解步骤,内容包含下载连接地址,包含常见错误解答,新版本注意事项等
NULL 博文链接:https://fmfl.iteye.com/blog/1415949
EJB+JSF 入门工程 链接的是mysql数据库,有简单的保存操作
不需要学习EJB2.x 也可以直接学习EJB3.0。虽然EJB3 的知识 点有很多,但实用的知识点有7 天的学习时间就足够。作者周未为企业提供培训服务,个人需要培训的话就参加 北京传智播客(www.itcast.cn)的EJB3 培训班吧,...
非常实用的EJB3.0教程。 本教程适合具有Java 语言基础的EJB初学者。有读者来邮件问需不需要先学EJB2.x,作者明确地告诉你不用 学了。随着EJB3的发展,EJB2.x将会逐步成为历史。
本教程适合具有Java 语言基础的EJB 初学者。不需要学习EJB2.x 也可以直接学习EJB3.0 。
ejb3整合Struts1.x实例 数据库使用的是mysql 5.x
本书是关于EJB 3.0的专业...学习本书不需要EJB2.x知识,如果具备一些Web和JDBC知识,学习效率会更快些。学习本书,初级Java程序员应在一个月左右,有1~2年开发经验的程序员可在15天之内,具有3年以上开发经验只需5天。
不需要学习EJB2.x 也可以直接学习EJB3.0。虽然EJB3 的知识 点有很多,但实用的知识点有7 天的学习时间就足够。作者周未为企业提供培训服务,个人需要培训的话就参加 北京传智播客(www.itcast.cn)的EJB3 培训班...
使用jboss-4.2.2.GA+JbossIDE for eclipse+MyElipse5.0+JDK1.5做一个EJB3.0 的例子 所需要的文件
EJB3 是J2EE 5.0 最重要的组成部分之一, 它改变了EJB2.X 中繁琐和沉重的架构。EJB3 in Action 是学习 EJB3 的最佳资料
学习本材料,您不需要EJB2.x知识,如果具备一些Web和jdbc知识,学习效率会更快些。学习本材料,初级Java程序员应在1个月左右,有1~2年开发经验的程序员应在15天之内,具有3年开发经验的程序员只需5天。
本书以丰富的示例,讲述在主流Java EE服务器——JBoss上开发Java EE程序的技术,包括Web(JSP、Servlet、MVC)、EJB(EJB 2.x)和EJB 3.0、JMS、Web Service、Hibernate、AOP等。正文讲述的所有内容,全部都有可运行...
对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等...