【EJB系列】(四)——EJB基本内容总结

EJB是Java用于编写业务逻辑的组件,分为SessionBean和Message Driven Bean。SessionBean涉及本地和远程调用,Message Driven Bean关联JMS。EJB与Spring的AOP和DI有相似之处,EJB的事务管理是其高级特性之一。通过对比学习,有助于理解两者之间的联系和区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整体感知

这里写图片描述

概念

EJB是Java当中编写业务逻辑的Bean,是分布式系统中的业务组件。

分类

SessionBean

学习这部分,可结合Spring的Singleton和Prototype。有状态的Bean,即在类内部保存了实例变量,针对不同客户端,需要new出不同的有状态的Bean来保存各自的状态。
对于SessionBean的调用包括本地调用,远程调用和Web Service方式调用。关于前两种调用方式的总结,见【EJB系列】(二)——JBOSS7中EJB的远程调用和本地调用
WebService方式的调用会在后续博文中总结。

Message Driven Bean

关于JMS和MDB的总结,见【EJB系列】(三)——JMS和MDB

发展

版本特点缺点
1.0SessionBean,EntityBean强制客户机采用远程方式调用EJB
1.1正式支持实体Bean;引入XML格式的部署描述文件
2.0引入本地接口;引入EJB-QL;MDB
2.1WebService,有利于异构系统的整合;计时器:按指定时间和固定间隔来调用EJB,(在任务调度中应用);增强EJB-QL
3.0抛弃了Entity,引进JPA作为持久化的解决方案;SessionBean不再需要Home接口,只需提供本地或远程接口Annotation
3.1无序提供接口,异步方式调用,允许直接将EJB类放到WAR文件

与Spring关系

Spring的两大特性就是AOP和DI,在EJB中对AOP思想的实现是拦截器。一下就是通过@Interceptors@AroundInvoke实现了拦截器功能。

EJB的实现类

@Stateless
@Remote
@Interceptors(UserManagerInterceptor.class)
public class UserManagerBean implements UserManager {


    public void addUser(User user) {
        System.out.println("user.username="+user.getUsername());
        user.setId(9);

    }


    public String sayHello(String name) {
        return "你好,"+name;
    }


}

拦截器

public class UserManagerInterceptor {

    @AroundInvoke
    public Object doit(InvocationContext context) throws Exception{
        System.out.println("将要执行方法:"+context.getMethod().getName());
        Object obj=context.proceed();
        System.out.println(context.getMethod().getName()+"已经被执行");

        return obj;
    }
}

DI,主要是通过XML或Annotation的配置。
与持久层结合上面,Spring是与Hibernate结合,在JavaEE中有JPA规范,其中包括的知识点和Hibernate类似,这里不做过多说明。

高级

主要是EJB的事务管理。在学习Spring的时候,Spring对Hibernate事务管理进行了封装,在那里我们就学习了事务特性,事务隔离级别,以及传播特性。这部分内容也会在单独的博客中总结。

总结

在学习这部分内容的时候,发现只有JMS这部分内容自己比较生疏,其他内容都可以与Spring和Hibernate中的相关知识进行类比学习。这么多相似的内容,需要进行深入地学习和总结啦!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值