首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java CDI和观察者问题-调用侦听器方法时,依赖项为空

Java CDI和观察者问题-调用侦听器方法时,依赖项为空
EN

Stack Overflow用户
提问于 2011-08-20 23:41:00
回答 1查看 703关注 0票数 0

问题:在ContentViewLog上调用listen方法时,日志和实体管理器为空。

BlogDetailBean (在JSF2页面上使用的bean )

代码语言:javascript
复制
@Named
@RequestScoped
public class BlogDetailBean {

    @Inject
    private BlogService blogService;

    @Inject
    Event<ContentViewEvent> blogViewEvent;

    ...

    public String loadEntry(){
      this.blogViewEvent.fire(new ContentViewEvent(this.entry));
    }

    ...

}

ContentViewLog (侦听ContentViewEvents的bean )

代码语言:javascript
复制
@Stateless
@Named
public class ContentViewLog {

    @Inject
    private Logger log;

    @Inject
    @DataRepository
    private EntityManager em;


    private void listen(@Observes final ContentViewEvent e) {
        this.log.info("Content View Event: " + e.toString());
        final LoggedContentView lcv = new LoggedContentView(e);
        this.em.persist(lcv);
    }

    public Long getTotalViews() {
        final Long result = (Long) this.em.createNamedQuery(
            "loggedContentView.countAll").getSingleResult();
        return result;
}

    ...

}

顺便说一句,尤其令人困惑的是,ContentViewLog的其他方法,比如getTotalViews,在从其他bean使用时也能正常工作(不过,在这些情况下,我没有使用CDI事件)。

仅供参考-上面没有显示的两个bean使用@Produces来提供记录器和EntityManager实例。

EN

回答 1

Stack Overflow用户

发布于 2011-08-28 10:14:47

我同意我们需要知道您使用的是什么CDI和容器,但您是否尝试过将观察者方法设置为公共而不是私有?我有一种感觉,在这种情况下,代理不会正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7132801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档