【发布时间】:2016-02-05 05:13:06
【问题描述】:
在一个方法期间,我可能需要生成一个下载 bean 来获取一个文件。当我同时收到这些电话时,我只想下载一次文件。我不知道在 JEE/CDI 中表达以下伪代码的正确方法:
if (download_required) {
monitor.enter();
if (!map.ContainsKey(downloadPath))
{
//CDI inject new instance of downloader here.
downloader.File = downloadPath;
downloader.startDownload();
map.put(downloadPath, downloader);
monitor.exit();
downloader.waitForDownload();
} else {
monitor.exit();
map.get(downloadPath).waitForDownload();
}
}
我想使用 CDI,因为我需要通过 JNDI 变量在下载器上设置属性。每个下载器负责下载文件并留下一些状态。请注意,每个下载器将被赋予不同的状态,因此必须是 bean 的新实例。
就在我放弃 CDI 之前,将变量注入到父类中,然后使用带有一些静态的标准 java 来实例化上述内容,是否有“正确”的方法来使用 CDI 实现这一点?
【问题讨论】:
标签: java jakarta-ee javabeans cdi