解构金蝶 Apusic 中间件

博主计划自行研发一个EJB容器,通过阅读技术书籍及Apusic源码来进行实践研究。文章介绍了EJBHome对象的作用及其默认实现方式,并探讨了Apusic如何根据不同类型的bean生成相应的容器。

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

接触 J2EE 也有些时间了。最近打算自己写一个 EJB 容器,琢磨了一下,打算就着技术书籍和 Apusic 的源码来搞个小研究。

先在这开个坑,毕竟每天在家,除了上班准点报道,下班又准点报道,周末连坐下来想事情的时间也被各种扯淡事情打断,也是很烦的。:)

1月24日:

    先把几个重要概念梳理一下。平常我们用 javax.ejb.* 的 API 时,很少需要考虑别的东西。这里面就有中间件(容器)的功劳。举例来说,我们的客户端调用一个包含业务方法的 bean(这个 bean 可以实现 javax.ejb.SessionBean 接口),而这个 bean 是由一个 EJBHome 对象创建的。出于简化 web 开发者工作的目的,EJBHome 对象应该在 web 应用中以调用 javax.ejb.* 中接口的形式来获得。所以,EJBHome 对象的默认实现就交给中间件来做。EJBHome 对象应该负责查找和缓存 bean 实例,以及删掉调用得最少的 bean 实例的缓存。

    然后我们看看 Apusic 是怎么处理各种 bean 的。在源码的 com.apusic.ejb.container.EJBManager 类中,不同类型的 bean 会触发产生不同类型的容器。处理的 bean 类型是标准的 SessionBean(包含 Stateful 和 Stateless 以及 Singleton)、EntityBean、MessageDrivenBean 。而具体生成的步骤,则在源码的 com.apusic.ejb.generator.ClientDrivenGenerator 的 generate(int) 方法中。

2月20日:

    怎么把各种 EJB 接口调用的方法最终转为使用其实现类,目前观察是依靠自带的 org.objectweb 包对编译后的机器码进行替换。后面继续写写这部分的内容。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值