- 浏览: 887361 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1356总结下远程调用ejb3的几 ... -
EJB 小结
2011-05-15 17:38 1022EJB3的功能很是强大,但中小企业很少使用它做开发,一般应 ... -
EJB学习笔记(四)EJB中bean上下文(context)区别于JNDI上下文
2011-05-15 02:21 1391Bean的Context引用 每个bean 都有一个bean ... -
EJB学习笔记(五)关于ejbActivate()、ejbPassivate()、ejbRemove()
2011-05-15 02:19 1278ejbPassivate() 要确保你的实例变量已经钝化 ... -
ejb事务管理
2011-02-13 15:13 1270java ee规范并没有实现事务的隔离级别,所以要依靠不同的服 ... -
Spring 与 EJB 比较
2011-02-12 13:04 1438在开源领域,Spring开源框架已成为企业应用开发中使用最 ... -
大家说说 JavaBean 与EJB的区别
2011-02-11 23:10 2144JavaBean在一般情况下指 ... -
ejb学习, EJB和Spring的比较及EJB3.0的运行环境
2010-10-26 09:34 1300今天开始学习ejb,黎活明 ... -
EJB 知识与运行环境设置
2010-10-13 15:12 115921. 依赖注入 当 EJB 需要使用其他 EJB ... -
在eclipse中建立EJB2工程
2010-09-26 14:14 1439EJB2.0学习笔记之一,在eclipse中创建一个sessi ... -
ejb,分布式,集群,负载均衡的概念
2010-09-12 00:20 1470ejb:服务器组件框架技术,用来构建企业级和分布式组件应用 ... -
JBoss EJB 3.0 第一章 EJB池和缓存
2010-08-13 17:32 1696关键字: jboss ejb3 JBoss EJB3.0 ...
相关推荐
EJB2.X 的使用例子,讲解了EJB2.X Entity Bean如何映射数据至表中, Session Bean如何使用,客户端调用Session Bean 中的业务方法. 有问题,请联系本人: QQ:343827585 (注:源码下载后,请删除后缀名为 .java的相应...
### EJB 2.x 教程知识点概览 #### 一、EJB 2.x 基本原理 ##### 1.1 Stateless Session EJB - **定义**: Stateless Session EJB 是一种没有状态的会话组件,每个客户端请求都会创建一个新的实例来处理,因此它不会...
在本文中,我们将深入探讨如何使用Eclipse IDE与JBoss应用程序服务器(版本7.x)来开发和部署一个基于EJB 3.x的简单企业级Java应用程序。EJB(Enterprise JavaBeans)是Java平台上的核心组件,它提供了一种标准的...
标题中的“ejb3.x 简单小 demo”指的是一个关于企业级JavaBeans(EJB)3.x版本的示例项目。EJB是Java平台上的一个组件模型,主要用于构建可部署在Java应用服务器上的分布式、面向服务的企业级应用程序。EJB 3.x是一...
2. **依赖注入**:虽然EJB 2.x不支持注解注入,但开发者可以在这里手动创建并设置依赖的对象。 3. **异常处理**:`ejbCreate`是容器调用的方法,如果抛出非`EJBException`类型的异常,容器会自动销毁刚创建的Bean...
在EJB 2.x版本中,`ejbCreate`是标准的生命周期方法之一,而在EJB 3.x及更高版本中,推荐使用注解(@PostConstruct)来替代,以符合更现代的Java编程实践。 ### EJB生命周期方法的演变: 1. **EJB 2.x**: - 实体...
ejbCreate函数是EJB 2.x时代的传统生命周期方法之一,用于在Bean实例创建时进行初始化。在EJB 3.x及更高版本中,这种特定的方法已经被注解和依赖注入(Dependency Injection)机制所取代,但理解ejbCreate对于理解...
2. **EJB的实现类**:实现了接口并包含`ejbCreate`(如果基于EJB 2.x)或`@PostConstruct`方法。 3. **部署描述符**(`ejb-jar.xml`):EJB的配置文件,用于指定EJB的元数据,如Bean的类型、接口、事务属性等。 4. *...
**EJB 3.x 和 JSF 入门工程详解** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的一部分,它提供了一种标准的方式来创建可部署在服务器端的组件,主要用于处理业务逻辑。EJB 3.x 版本引入了许多改进,...
ejbCreate函数是EJB 2.x版本中Bean类的一个特殊方法,它在容器创建一个新的EJB实例时被调用。在EJB 3.x及更高版本中,ejbCreate已被废弃,取而代之的是无状态会话bean(Stateless Session Bean)的构造函数或有状态...
在本文中,我们将深入探讨如何使用Eclipse IDE与WebLogic Server 10.x版本结合,开发基于EJB 3.0规范的应用程序。EJB(Enterprise JavaBeans)是Java EE平台的核心组件,用于构建可扩展、可靠且安全的企业级应用程序...
它们有两种形式:旧式的实体bean(EJB 2.x)和Java Persistence API(JPA)中的实体bean(EJB 3.x及以后版本)。 - **消息驱动bean(Message-Driven Beans, MDB)**:用于处理消息队列中的JMS(Java Message ...
9. **EJB 2.x与EJB 3.x的区别**: - EJB 2.x以XML配置为主,编程模型较为复杂;EJB 3.x引入了注解,简化了API,提高了开发效率。 10. **EJB与微服务**: - 随着微服务架构的兴起,EJB作为传统的服务组件化方式,...
在EJB 2.x版本中,`ejbCreate`是必须实现的,而在EJB 3.x及更高版本中,由于注解驱动的特性,`ejbCreate`不再是强制性的,开发者可以选择使用构造函数或者`@PostConstruct`注解的方法来进行初始化。 EJB有多种类型...
EJB 3.0是这个技术的一个重要版本,它在EJB 2.x的基础上进行了许多改进,使得开发过程更为简化,更易于理解和使用。在这个"Entity-EJB3.0.rar"压缩包中,我们很可能找到了关于EJB 3.0实体Bean(Entity Beans)的示例...
在EJB 2.x时代,EJB主要包括三种组件:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。会话Bean用于处理客户端请求,通常代表业务逻辑;实体Bean则用于持久化数据,...
在旧版的EJB规范(EJB 2.x)中,开发者可以自定义`ejbCreate`方法来执行初始化逻辑。但是,在EJB 3.x及更高版本中,推荐使用构造函数和setter方法来进行初始化,`ejbCreate`方法已经不再被鼓励使用。 3. EJB 3.x及...
4. **有状态会话Bean(Stateful Session Beans)**:虽然有状态会话Bean在EJB2.x版本中已经存在,但在EJB3.0中,其管理方式得到了优化,使其更易于使用和管理会话状态。 5. **实体Bean(Entity Beans)**:实体Bean...
4. **Container-managed Persistence (CMP)**:在EJB 2.x时代, CMP是一种常见的持久化机制,它将数据持久化的工作交由容器管理,开发者只需关注业务逻辑。PetStore的Entity Bean可能采用了CMP,简化了开发过程。 5...