EJB  综合实例DEMO

EJB2

Sessin Bean

stateless Session Bean

stateful Session Bean

Entity Bean

CMP(窗口管理持久化) Entity Bean/

BMP(Bean管理持久化)

Message Driven Beran()(MDB)

 

EJB3     DEMO(课堂DEMO课本

Session Bean                     <与spring容器里的Bean对等>

stateless Session Bean (有状态的)

stateful Session Bean (无状态的)

只有无状态的Session Bean才可对外提供Web Service,其他EJB则不具备

EJB2的Entity Bean和JPA的Entity基本上没有相似 之处

1.并发和线程安全

2.方便的web service支持

3.事务和安全管理

Message Driven Bean(MDB) 消息驱动

由于消息驱动Bean本身是由无状态的Sessin Bean变种而来的,因此它们都具有如下特征:

1.不会保留任何客户端状态,消息驱动Bean对任何客户端都是行装同的;

2.消息驱动器Bean可以处理来自多个客户端的消息。

消息驱动Bean与普通Session Bean的最大区别在于,客户端不能直接调用消息报驱动Bean,只能通过发送JMS消息到消息目的来触发消息驱动Bean。]

消息驱动Bean与状态Session Bean最大的优势在于“完全解耦”,javaEE的其他组件无须获取消息驱  动Bean,它们只要向消息目的发送JMS消息就可实现与消息驱动Bean的通信,相当于间接调用消息       驱动Bean的onMessage()方法

WebLogic

开发模式  最好使用sun jdk

生产模式  最好使用oraclejdk

默认端口7001    locahost:7001/console

JBOSS

calsspath下添加Sun/SDK/lib/javaee.jar

run .bat -c <服务名称>

run .bat -c  all

(java_home ) (jboss_home  这个实际可以不要)

/deploy  自动部署目录

改变端口:                   /server/default/deploy/jbossweb.sar/server.xml

应用要以.war 结尾

[P1] 

EJB3  

1.一个接口和一个实现类

2.Bean不要是抽象的,也不要是final


EJB3规范对业务方法的限制很少,但还是要遵守以下规则:

1.业务方法名尽量不要以EJB开头;

2.如果是一个允许远程调用的EJB,那么所有业务方法中的形参类型、返回值类型都必须是可序列化;

3.业务方法不应该使用static final修饰



@Remote  修饰的EJB (

既可对外提供远程服务,允许通过网络调用EJB方法,甚至还可以通过再增加其他Annotatin对外提供Web Service(允许通过网络、来自任何平台、任何语言的程序调用)

如果用于修饰EJB的接口,不需要指定属性

意味着此方法的参数和返回值都是序列化的

方法不要加final修饰)

@Local 修饰的EJB 性能更好,但对外不会提供远程,web service

 

@Remote / @Local 修饰接口的


@Stateless / @Stateful

@Stateless          无状态会话Bean

mappedNamename 尽管不要相同,否则在Jboss中可能出现异常

@Stateful           有状态会话Bean ,其生命周期、处理起来都比Stateless的复杂,但应用场景,Stateless更广泛

Stateful的生命周期、处理起来都比Stateless的复杂,但应用场景,Stateless更广泛。

用户信息放到web层来 维护  http...

 

JNDI ( java Naming Directory Interface)  java命名目录接口

RMI(Remote Method Invoke)  远程方法调用

RMI底层依然是是依赖于Socket网络通信来实现,但RMI对其进行了包装

当RMI服务器希望把自己提供的远程方法暴露出来时,它就要为自己绑定一个JNDI名称,而RMI客户机则通过JNDI查找来获取远程RMI服务器,然后调用RMI服务器上的远程方法

应用程序试图访问容器管理数据源时,需要通过Context.lookup(jndiName) 来查找数据源对象,这就是一个JNDI应用

 

配置第一个EJB注意

(把服务端的 接口类拷贝到 客户端EJB里

把Jboss 的client的lib包拷贝到 客户端EJB的lib里

 )

 

先开发实体

再开发EAO组件(DAO组件)

专门为各实体提供原子的增、删、改、查等方法。

再开发业务逻辑组件:

EAO和业务逻辑组件,都是由EJB 充当的。

EAO是Local EJB,而业务逻辑组件是Remote EJB。





对比sprin度,EJB3大烦锁之处:

1.EJB组件的接口和类必须继承指定接口或类;

2.需要大量使用XML配置文件

3.EJB组件必须打包成JAR包