使用:EJB 3.1、JBoss AS 7、RestEasy。
我有一个会话范围的bean,我想使用它来存储会话的用户信息。
import java.io.Serializable;
import javax.enterprise.context.SessionScoped
@SessionScoped
public class LoggedInUser implements Serializable {
private String id;
...
}
如果用户打开我的web应用程序,过滤器会提取包含用户标识的标头信息(应用程序在web密封后面运行)。我需要在那里创建一个登录的用户对象(请参阅上面的LoggedUser)(在调用ldap之后)。之后,我想在不同的@Stateless Beans中注入这个LoggedUser对象,但LoggedUser总是"空"的(成员为null)。
注入样品:
@Path("/country")
@Stateless
public class CountryController extends AbstractController {
@Inject
private Logger LOGGER;
@Inject
private LoggedInUser loggedInUser;
//@Inject dont work too..
//private Instance<LoggedInUser> loggedInstance
我做错了什么?
根据注释和问题判断-您需要一些EJB概念方面的帮助。
@SessionScoped bean是每个会话有一个实例的bean。在一个会话中,每个像这样的@Inject with bean都会引用同一个对象。然而,就是这样——如果你想让你的bean包含一些特定于该会话的信息,你需要自己把它放在那里,使用setter或其他方法,就像在每个普通Java类中一样。