使用currentUser-ID更新实体

时间:2011-12-27 20:04:41

标签: persistence entity jpa-2.0 java-ee-6

我正在尝试使用自己的@EntityListeners({ ModelListener.class })更新每个实体。 ModelListener使用以下方法实现@PrePersist

@PrePersist
protected void prePersist(final ModelBase modelBase) {
    modelBase.setUpdatedBy(currentUser);}

我的问题是如何获得当前用户。 我已经尝试了几件事:

1)通过EJB传输信息

    @EJB
private UserModul userModul;

调用userModulprePersist始终为空。似乎EJB上下文不可用。

2)填充静态ThreadLocal

static ThreadLocal<User> currentUser = new ThreadLocal<User>();

由于static属性,每个类加载器(Web服务器中的每个请求)都拥有自己的实例。我尝试使用@WebFilter来填充ThreadLocal。但似乎我没有面子。

public void doFilter(final ServletRequest request, ...){
    FacesContext.getCurrentInstance();} //always null

同样在请求中(com.sun.enterprise.web.pwc.connector.coyote.PwcCoyoteRequest)我找不到登录用户的任何信息。

保存用户信息的最常用方法是什么?

0 个答案:

没有答案