1.EJB(企业级javaBean)——是bean组件;用于实现业务的分离(进程的分布式);底层是socket机制。
2.EJB的分类
2.1:SessionBean——用于问答式会话,专人负责
2.1.1:stateless——不保存会话状态,所有客户都共用一个EJB
×应用——登录验证、完成单一算法
2.1.2:stateful——有会话状态,对于每个客户都产生一个EJB
×实现“购物车”功能,跟踪客户的流程
2.2:EntityBean——与数据库实体打交道
2.2.1:CMP——简单,方便,效率低;由容器自动完成
2.2.2:BMP——编写难,效率高;由程序员编写
2.3:MessageDriverBean——批量信息异步处理
3.EJB发展
3.1:通过socket来实现不同进程间的信息通讯,客户端需要服务器里的类信息——容易泄露代码
3.2:为服务器端提供接口,将接发送给客户端,避免了代码泄露——传参复杂
3.3:在服务器端书写引用名和类、方法对应的配置文件,只传引用名。——JNDI (Java命名与目录接口)
3.4:RMI
3.5:容器
4.EJB的第三方插件
4.1:Jboss——Jboss中,客户端是端口1099,web服务是端口8080
4.2:WebLogic
4.3:WebSpare
5.EJB代码
5.1:Home interface ——创建EJB实例,提供生命周期管理方法。
//第一步:书写继承javax.ejb.EJBHome接口的接口
package com.lovo.stateless;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;//必须继承该接口
public interface MyStatelessHome extends EJBHome{
//create方法返回远程接口类型且抛出CreateException异常
public MyStatelessRemote create() throws CreateException,RemoteException;
//所有的方法都需要跑RemoteException异常
}
5.2:Remote interface——定义业务方法和辅助方法
//第二步:书写继承接口java.rmi.RemoteException的接口
package com.lovo.stateless;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;//必须继承该接口
public interface MyStatelessRemote extends EJBObject{
//所有的方法必须抛RemoteException
public String sayHelloWorld(String name) throws RemoteException;
public String sayGoodBye(String name) throws RemoteException;
}
5.3:Bean class——实现2个接口的方法和自己的业务方法
//第三步:书写实现接口的EJB类
package com.lovo.stateless;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
//必须继承该接口,并实现回调方法:激活、钝化、移除设置会话文档
import javax.ejb.SessionContext;
/**
* XDoclet-based session bean. The class must be declared public according to
* the EJB specification.
*
* To generate the EJB related files to this EJB: - Add Standard EJB module to
* XDoclet project properties - Customize XDoclet configuration for your
* appserver - Run XDoclet
*
* Below are the xdoclet-related tags needed for this EJB.
*
* @ejb.bean name="MyStateless" display-name="Name for MyStateless"
* description="Description for MyStateless"
* jndi-name="ejb/MyStateless" type="Stateless" view-type="remote"
*/
//类必须是public的
public class MyStatelessBean implements SessionBean {
/** The session context */
private SessionContext context;
//必须有一个无参构造方法
public MyStatelessBean() {
// TODO Auto-generated constructor stub
}
// 创建——根据主接口中create方法的参数和个数创建EJB
public void ejbCreate() throws EJBException, RemoteException {
}
// 激活——将代码从硬盘中提取到硬盘。
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
// 钝化——将长时间不用的代码从内存中移动到EJB所在的硬盘。
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
// 移除——清楚EJB的所有信息。
public void ejbRemove() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/**
* Set the associated session context. The container calls this method after
* the instance creation.
*
* The enterprise bean instance should store the reference to the context
* object in an instance variable.
*
* This method is called with no transaction context.
*
* @throws EJBException
* Thrown if method fails due to system-level error.
*/
public void setSessionContext(SessionContext newContext)
throws EJBException {
context = newContext;
}
// 必须实现远程接口中定义的每个方法
public String sayHelloWorld(String name) throws RemoteException {
return name + "说:大家好,我是清晨!";
}
public String sayGoodBye(String name) throws RemoteException{
return name + "说:再见了,飞扬的青春!";
}
}
5.4:配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd" >
<ejb-jar>
<enterprise-beans>
<!-- 会话bean用session标签;实体bean用entity标签;消息驱动bean用message-driven标签 -->
<session>
<ejb-name>test67stateless</ejb-name><!-- EJB对外的引用 -->
<home>com.lovo.stateless.MyStatelessHome</home><!--指明EJB的主接口类 -->
<remote>com.lovo.stateless.MyStatelessRemote</remote><!--指明EJB的远端接口类 -->
<ejb-class>com.lovo.stateless.MyStatelessBean</ejb-class><!--指明EJB的实现类 -->
<session-type>Stateless</session-type><!--指明session类型 -->
<transaction-type>Container</transaction-type><!-- -->
</session>
<session>
<ejb-name>test67stateful</ejb-name>
<home>com.lovo.stateful.MyStatefulHome</home>
<remote>com.lovo.stateful.MyStatefulRemote</remote>
<ejb-class>com.lovo.stateful.MyStatefulBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
<!-- 第四步:书写服务器的配置文件 -->
分享到:
相关推荐
使用原始的servlet操作熟悉EJB的实体管理。 本实例主要功能:实现对员工、角色、账号、部门的关系管理。 本实例的实体设计:部门-员工:一对多。员工-账号:一对一。账号-角色:一对一。 主要采用EJB进行会话管理。...
中文名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 原名: 经典Java EE企业应用实战--基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 作者: 李刚 资源格式: PDF 版本: 第一版 出版社: 电子...
EJB3的三本好书之三,也很不错的一本ejb3的书籍,是英文版,附带源代码,这本书的好处是与Mastering EJB 3ed有一定的继承性,可以对比来看. 3本书的地址 1. Beginning EJB3 Application Development From Novice to ...
EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的书都送人了,而且附带的源代码,几乎包括了所有的主流应用服务器的例子,glassfish, jboss, weblogic, oracleAS 3本书分别是: 1. Beginning EJB3 ...
实战EJB 实战EJB 实战EJB 电子书 pdf
ejb端 jsfejb3-ejb |-- src |-- org.qiujy.ejb3.dao 持久层DAO接口包 |-- org.qiujy.ejb3.dao.impl 持久层DAO接口实现类包(是ejb3中的会话Bean) |-- org.qiujy.ejb3.entity 实体域模型类包...
期待已久的 EJB3.0 最终规范已经发布了。虽然 EJB3.0 最终规范出来了一段时间,但对 EJB3.0 的应用还停留在介 绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现 EJB3.0 的开发过程,希望对大家有所...
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....
当采用实体EJB作为数据的抽象层时,如果直接让客户端程序与实体EJB交互,会产生实现一个业务需求便需要大量的EJB属性操作(如下图1)。这直接导致如下问题:网络负载大(远程客户端时)、并发性能低、...
自己总结的EJB3上课教案,包括SessionBean、EntityBean、MDB、O/R映射与继承映射、持久化实体管理器、EJB3-QL、JTA等的教案.
javax.ejb.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....
META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.properties META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.xml javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout....
《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和过程,向开发者展示了如何使用会话Bean、将会话Bean发布为Web服务、消息驱动Bean;第...
EJB方面EJB方面EJB方面EJB方面EJB方面
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
Java中的EJB编程实例代码,内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构EJB、UML建模与J2EE...
《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和过程,向开发者展示了如何使用会话Bean、将会话Bean发布为Web服务、消息驱动Bean;第...
ejb3.0培训教程与源码(绝对精品) .................... 1, 服务器端的一个组件模型,能部署在多层环境中; EJB API, javax.ejb.*; 2, EJB容器可以为我们提供中间件服务; 3, EJB客户端:(常见的) 1) 独立的java程序...
ejb3中文版
确实,你也想通过Su n认证业务组件开发人员(SCBCD)考试,但不仅如此,你还需要真正把EJB用到实处。你要构建应用,要对付最后期限,如果通过考试之后第二天早上就把你学过的EJB知识忘得一干二净,你肯定会受不了。 ...