如何解决在异步线程中掌握JSF ResourceHandler
我在JSF的不同库中都有一些资源(徽标)
view
+- resources
+- theme1
- logo.png
+- theme2
- logo.png
在正常的JSF请求中,我可以使用以下资源
ResourceHandler resourceHandler = FacesContext.getCurrentInstance().getApplication().getResourceHandler();
log.debug("ResourceHandler #0",resourceHandler);
if(resourceHandler != null && StringUtils.isNotBlank(theme)){
Resource resource = resourceHandler.createResource("logo.png",theme);
if(resource != null){
try{
byte[] bytes = IOUtils.toByteArray(resource.getInputStream());
if(bytes!=null){
log.info("logo size #0 for theme #1",bytes.length,theme);
}
}catch(IOException e){
log.error(Strings.EXCEPTION,e);
}
}
}
但是,在发送电子邮件(尝试附加徽标)时,我需要异步加载这些徽标文件(在JSF请求之外)。 在这里,我不是FacesContext.getCurrentInstance()会返回null,所以我无法从FacesContext获取ResourceHandler。
还有另一种方法可以让我获得ResourceHandler吗?
我可以尝试使用URI手动加载它 jndi:/default-host/acme/resources/theme1/1_1/logo.png
,但随后我必须检查最新版本(1_1或1_2等)。不是不可能,但是当ResourceHandler已经为我完成这项工作时,就需要进行额外的工作。
理想情况下,当服务器刚刚启动且尚未完成JSF请求时,我应该能够获得徽标。
我仍在使用Seam,Seam提供任何东西吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。