package oracle;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Stateless(name = "HRFacade", mappedName = "HR_EJB_JPA_App-EJBModel-HRFacade")
@Remote
@Local
public class HRFacadeBean implements HRFacade, HRFacadeLocal {
@PersistenceContext(unitName="EJBModel")
private EntityManager em;
@Resource
private SessionContext context;
public HRFacadeBean() {
}
public Employee mergeEmployee(Employee employee) {
String username = context.getCallerPrincipal().getName();
employee.setUpdatedBy(username);
return em.merge(employee);
}
...
}
Saturday, December 26, 2009
EJB Security: Logging the user that invokes a session bean method
If you have a requirement to log the user who created or updated a certain record. You can do so by getting the CallerPrincipal object in the SessionContext of an EJB session bean. The SessionContext can be injected in a session bean using the @Resource annotation. Please see below a sample session bean with an injected SessionContext plus the call to get the CallerPrincipal object:
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment