什么是EJB回调以及我们为什么需要它们?

时间:2016-06-26 18:27:40

标签: java java-ee

我刚刚开始关注Java EE,但我很难理解回调的确切含义以及它们的用途。

有没有人清楚地解释它们是什么?我查看了网站,但找不到太多信息。

2 个答案:

答案 0 :(得分:1)

正式定义

  

回调是一种可以拦截企业bean生命周期的机制。

实际例子

我认为一个例子将有助于展示这些回调注释的有用性。我们来看看@PreDestroy回调。从EJB上的JBoss文档中,我们可以看到:

  

PreDestroy - 在从池中删除bean或销毁bean时调用。

你有一个拥有某种文件资源的Bean。您希望确保在销毁Bean时,该文件锁随之而来。好吧,我们知道它有风险"练习等待垃圾收集器为我们处理这些事情;我们不知道它什么时候开始运行。

但我们能做的就是在删除bean时调用一些逻辑。

@PreDestroy
public void cleanUp() {
    // Clean up your FileOutputStreams etc.
}

在你的bean中,很明显当bean被销毁并且它不需要来自外部的额外代码时执行这个方法。这可以确保在bean被销毁时清理您的资源。

答案 1 :(得分:0)

回调是您在EJB(或容器的生命周期)中的特定点执行自定义代码的主要机会。

例如,您想要初始化特定的字段或组件

  • 内部 EJB,
  • 在实例化EJB之后
  • ,但是
  • 之前它开始服务请求

您将实施@PostConstruct回调方法。使用此方法注释的方法是向JavaEE运行时发布的广告,该方法必须在创建该类的实例后立即运行。此注释的常见用法是设置类级变量或准备共享资源。

JavaEE规范已经指定了几个注释,例如这个注释,作为生命周期回调。这意味着在启动时,容器知道扫描部署工具包以查找实现任何可用回调的工件。在这样做时,它知道在特定事件中通知感兴趣的组件(EJB,CDI组件,JAX-WS bean实现),或者在应用服务器中发生特定操作时调用特定方法。

回调机制本身就是Callback模式的实现(或者如果你来自UI编程世界,则是事件驱动的编程)

进一步阅读: