2016-06-26 73 views

回答

0

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

所以,举个例子,你要初始化特定字段或组件

  • 的EJB,
  • 后的EJB已被实例化,但
  • 才开始以服务请求

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

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

回拨机制本身的回调模式的实现(或事件驱动编程,如果你从一个UI编程世界未来)

延伸阅读:

0

正式定义

回调是由企业Bean的生命周期可以拦截机制。

一个实际的例子

我想一个例子可以帮助炫耀这些回调标注的实用性。我们来看看@PreDestroy的回调。从EJB上的JBoss文档中,我们可以看到:

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

而且你有一个拥有某种文件资源的Bean。你想确保当Bean被销毁时,该文件锁定与它一起。那么,我们知道等待垃圾收集者为我们处理这些事情是“冒险的”做法;我们不知道它何时会运行。

但是我们可以做的是放置一些当bean被移除时调用的逻辑。

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

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

相关问题