【发布时间】:2013-02-25 21:00:23
【问题描述】:
我感觉我正在混合 EJB 和 JSF 托管 bean 职责,但我想要的是可以访问我的 JSF 应用程序范围 bean 的计划任务 EJB(@Singleton 和 @Schedule)。
具体来说,我有一个 JSF @ApplicationScoped bean,它根据它是在开发、测试还是生产中发送不同的电子邮件。我想安排它每 24 小时发送一次电子邮件。完成此任务的最佳方法是什么?
【问题讨论】:
-
EJB 需要
@ApplicationScopedbean 来做什么? EJB 本身应该能够生成和发送电子邮件。 Web 层中是否有一些 EJB 需要执行其功能的信息?试图建立从 EJB 到托管 bean 的依赖关系是一个严重的设计缺陷。依赖关系应该是从 Web 层到业务(EJB)层 -
EJB 需要知道 web.xml 中的
javax.faces.PROJECT_STAGE变量以确定 DEV、TEST 或 PROD。这当前来自应用程序 bean。我使用 EJB 的主要原因是@Schedule表示法的简单性。 -
像IMO那样将两层绑定在一起的要求太微不足道了。将配置外部化为两个组件都可以访问的属性文件。
-
这是个好主意,我想我会将它外部化到 JNDI 查找中,这样我就不必为不同的环境处理多个属性文件。谢谢!
-
@kolossus 不要浪费代表,发布答案