EJB: 综合实例 DEMO
EJB2
Sessin Bean
stateless Session Bean
stateful Session Bean
Entity Bean
CMP(窗口管理持久化) Entity Bean/
BMP(Bean管理持久化)
Message Driven Beran()(MDB)
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
生产模式 最好使用oracle的jdk
默认端口 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 结尾
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
mappedName 与 name 尽管不要相同,否则在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。