EJB容器提供下列服务:远程访问(stub/skeleton),安全性, 事务, 并发性, 生命周期管理等.祝贺Kingdee Apusic产品通过J2EE 1.4认证! 佩服!
session facade模式: 会话bean(remote接口) + 实体bean(local接口).其实,对CMP而言,EJB2.1标准其资源浪费也不是太大,对于频繁的ejbLoad和ejbStore可以考虑使用值对象,它避免了对每个字段set/get方法的调用. 当然也可以使用轻量级的架构,如hibernate.
JBuilder还是商业java开发首选,集成的EJB开发也十分强大. Eclipse+ lomboz同样方便, jboss IDE也不错.
EJB的组成:
1) 企业级bean类
public interface javax.ejb.EnterpriseBean extends java.io.serializable {}
根据bean类注释,可以使用Xdoclet + ant自动生成代码,如Home,EjbObject, xml等文件
/**
* @ejb.bean name="Users"
* jndi-name="UsersBean"
* type="CMP"
* primkey-field="id"
* schema="UsersSchema"
* cmp-version="2.x"
* view-type="remote"
*
* @ejb.persistence
* table-name="Users"
*
* @ejb.finder
* query="SELECT OBJECT(a) FROM UsersSchema as a"
* signature="java.util.Collection findAll()"
*
**/
public abstract class UsersBean implements EntityBean {}
2) 远程对象接口EjbObject或本地对象接口EjbLocalObject
3)远程Home接口或本地Home接口
Home接口定义了生成,查找和回收EjbObject的方法.
对本地接口: MyLocalHome lh=(MyLocalHome )ctx.lookup("java:comp/env/ejb/MyEJB");
MyLocalObject obj=lh.create();
对远程接口:MyHome mh=(MyHome )javax.rmi.PortableRemoteObject.narrow(
ctx.lookup("java:comp/env/ejb/MyEJB"), MyHome.class);
MyObject obj=mh.createUsers();
Home接口中create方法返回远程或本地对象接口,可以有多个create方法,但方法名必须是create开头;
对应的bean实现中方法名变为ejbCreate, 其返回类型对状态会话bean来说是void, 对实体bean来说是主键类型.
EJB的分类:
1. 无状态bean
消息驱动bean和无状态会话bean, 不需要保存客户状态.通常用来建立业务过程模型.这些bean是轻量级的,具有高度的可伸缩性. 可以在容器中初始化一定数量共享bean,供多个客户使用.
消息驱动bean只是一个消息消费者, 没有定义Home接口和EjbObject接口.消息的生产者可以是JMS方式或其他.
2. 状态bean
1)有状态会话bean : 一个会话只能被一个客户使用;容器在主存中维护事务间的对象状态,钝化时写入辅村; 容器故障后,不可还原
2)实体bean: 一个实体对象可以被多个客户共享;用数据库或其他资源管理器维护; 可还原.
通常一个业务实体实现为实体bean.
例:对一个购物车程序,若购物过程要跨越很长的时间和多个web会话, 则将购物车实现为实体bean;
若购物过程只限于一个单独的web会话,则实现为一个状态会话bean.可以将会话状态的维护委托给HttpSession对象.
myobject obj=myhome.create(id);
session.setAttribute("myobjBean", obj);
EJB 的激活与钝化:
1. 无状态会话bean,由实例池调度
2. 有状态会话bean, 主要是ejbPassive和ejbActive
3. 实体bean,ejbStore->ejbPassive----ejbActive->ejbLoad
Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。
Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。
EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。
数据连接池的工作机制:
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
分享到:
相关推荐
J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,
j2ee ejb编程实例
本书讲解使用J2EE核心技术实现企业应用过程中的模式、最佳实践、设计策略以及经过验证的解决方案,涵盖了JSP、servlet、EJB、JMS等技术,其中J2EE模式目录包括21个模式以及大量策略,帮助读者迅速熟练掌握J2EE技术,...
j2ee ejb开发
内含EJB3持久化规范,EJB3核心规范,JAVAEE+5.0以及JMS1_1规范,希望对大家有帮助
j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee ...
EJB做的工业进销存系统 EJB做的工业进销存系统
One of the best books from Rod Johnson explaining how to develop J2EE project without EJB.
EJB和J2EE技术综述(Java的特性、J2EE的企业Java应用集成系统体系结构、J2EE规范、J2EE包容器、JavaBean 体系结构、企业级Java构件EJB、基于J2EE的应用服务器框架、企业应用集成...)
这些技术涵盖了组件技术、 Servlets 和JSP、EJB 技术、数据库访问、分布式通信技术(Java RMI、Java IDL、 JNDI、JMS)、安全等;本文试图给出J2EE 平台技术概念理解上的一个较为清晰 的完整的思路,帮助...
J2EE之EJB,RMI多个源码
几乎涵盖所有的知识点,希望对你有所帮助.
EJB和J2EE联合开发JAVA程序的好技术:EJB_and_J2EE_arch1.pdf
《Expert-One-on-one J2EE Development Without EJB》一书的英文版本
本书讲解使用J2EE核心技术实现企业应用过程中的模式、最佳实践、设计策略以及经过验证的解决方案,涵盖了JSP、servlet、EJB、JMS等技术,其中J2EE模式目录包括21个模式以及大量策略,帮助读者迅速熟练掌握J2EE技术...
EJB 编程及 J2EE 系统架构和设计
J2EE.DEVELOPMENT.WITHOUT.EJB(中文),rod johnson作品,学习j2ee及spring不可错过的经典。
EJB3核心规范是J2EE系列规范之一。
j2ee without ejb 中文 part3j2ee without ejb 中文 part3j2ee without ejb 中文 part3j2ee without ejb 中文 part3j2ee without ejb 中文 part3j2ee without ejb 中文 part3j2ee without ejb 中文 part3
Expert One-on-One J2EE Development without EJB shows Java developers and architects how to build robust J2EE applications without having to use Enterprise JavaBeans (EJB).