Java EJB3.1-注入会话作用域Pojo

Java EJB3.1-注入会话作用域Pojo,java,jboss7.x,resteasy,ejb-3.1,session-scope,Java,Jboss7.x,Resteasy,Ejb 3.1,Session Scope,使用:EJB3.1,JBossAS7,RestEasy 我有一个会话范围的bean,我想使用它来存储会话的用户信息 import java.io.Serializable; import javax.enterprise.context.SessionScoped @SessionScoped public class LoggedInUser implements Serializable { private String id; ... } 如果用户打开“我的web应用程序

使用:EJB3.1,JBossAS7,RestEasy

我有一个会话范围的bean,我想使用它来存储会话的用户信息

import java.io.Serializable;
import javax.enterprise.context.SessionScoped
@SessionScoped
public class LoggedInUser implements Serializable {
    private String id;
    ...
}
如果用户打开“我的web应用程序”,则过滤器会提取包含用户标识的标题信息(应用程序在webseal后面运行)。我需要在那里(调用ldap后)创建一个登录用户对象(请参见上面的LoggedInUser)。之后,我想将这个LoggedInUser对象注入到不同的@Stateless bean中,但LoggedInUser总是“空”(成员为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
@Path(“/country”)
@无国籍
公共类CountryController扩展了AbstractController{
@注入
私人记录器;
@注入
私有LoggedInUser LoggedInUser;
//@我也不工作。。
//私有实例日志状态

我错了什么?

从评论和问题判断-您需要一些EJB概念方面的帮助


@SessionScoped bean是每个会话都有一个实例的bean。在一个会话期间,每个@Inject with bean都会引用同一个对象。不过,就是这样——如果您希望bean包含特定于该会话的某些信息,您需要自己将其放在那里,使用setter或其他方法,就像在每个会话中一样普通Java类。

您应该显示您认为应该填充LoggedInUser字段的代码。填充LoggedInUser字段的代码还不存在。在bean实例化后是否可以更改LoggedInUser字段?或者我必须在LoggedInUser中添加@PostContract方法(因此我也必须读取其中的标题)。我知道会话范围的bean在每个会话中有一个实例,我的问题是我无法更改LoggedInUser的值。例如,如果我调用LoggedInUser.setId(“myNewId”)在CountryController上,值不会更改。我可以在使用eclipse调试时观察它,我调用setId,但值不会更改。使用默认构造函数初始化对象获取实例。因此您可以调用
loggedInUser.setId(“myNewId”);
System.out.println(loggedInUser.getId())
并且Id没有设置?而且,这正是我最初希望您添加到问题中的部分-填充loggedInUser但不起作用的代码我尝试了以不同的方式填充loggedInUser。尝试在loggedInUser#loggedInUser(构造函数)、loggedInUser#initial(@PostConstruct)中设置Id或者只是尝试用这个.loggedInUser.setId(“testId”)在CountryController#someMethod()上设置值。如果你能告诉我应该如何存储用户信息,我不知道我是否做得对。最佳做法?
我不能更改LoggedInUser的值
表明有问题,因为你提到的所有方法都应该有效。你的测试用例是什么,你是如何确定你没有做的工作的?亲爱的,sysou无法显示正确的结果!只是eclipse无法显示LoggedInUser值..很抱歉,谢谢您的时间。