📜  EJB-无状态Bean(1)

📅  最后修改于: 2023-12-03 14:40:56.993000             🧑  作者: Mango

EJB-无状态Bean

EJB(Enterprise JavaBeans)是JavaEE平台下的一种服务器端组件技术。其中,无状态(Stateless)Bean是一种特殊的EJB,其特点是没有实例变量,也不保留任何状态。每次方法调用都是独立的,无状态Bean也不会在方法之间保留任何状态,这些状态信息通常保存在数据库或外部资源中。

优点
  • 高性能:由于无状态Bean不保留任何状态,在服务器多线程的环境下运行,不会产生冲突,实现了高并发、高性能处理。

  • 可伸缩性:由于无状态Bean没有状态,也没有实例变量,所以可以被多个客户端调用。当需要增加对请求的处理能力时,只需要增加无状态Bean实例就可以。

  • 维护性:由于无状态Bean不保留状态信息,因此在Bean出现故障时,无需保存和重构状态,仅需重启Bean即可。

使用方法
定义无状态Bean接口

无状态Bean接口需要标注@Remote或@Local注解,分别表示远程接口和本地接口。

@Remote // 远程接口
public interface SomeService {
    void doSomething();
}

@Local // 本地接口
public interface SomeServiceLocal {
    void doSomething();
}
实现无状态Bean

无状态Bean通过@Stateless注解进行标识,同时实现上述定义的接口。

@Stateless
public class SomeServiceImpl implements SomeService, SomeServiceLocal {
    @Override
    public void doSomething() {
        // Do something
    }
}
使用无状态Bean

无状态Bean可以通过注入或JNDI的方式进行使用。

@EJB // 注入方式
private SomeService someService;

// JNDI方式
context.lookup("java:global/applicationName/moduleName/SomeServiceImpl!com.example.SomeService");
总结

无状态Bean是EJB中的一种特殊组件类型,其不保留状态信息,因此实现了高性能、可伸缩性和易维护性。在使用无状态Bean时需要定义接口、实现Bean和注入或JNDI引用。