传知_14_ejb3

本文介绍了EJB3的关键概念,包括无状态和有状态会话Bean的特点与用途,以及消息驱动Bean的工作原理。同时,文章还探讨了EJB3与Spring框架之间的差异,特别是在配置复杂度和服务提供方式等方面。

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则不具备

EJB2Entity BeanJPAEntity基本上没有相似 之处

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的通信,相当于间接调用消息       驱动BeanonMessage()方法

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

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 clientlib包拷贝到 客户端EJBlib

 )

 

先开发实体

再开发EAO组件(DAO组件)

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

再开发业务逻辑组件:

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

EAOLocal EJB,而业务逻辑组件是Remote EJB


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

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

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

3.EJB组件必须打包成JAR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

折腾数据折腾代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值