相关疑难解决方法(0)

使用有状态会话Bean来跟踪用户的会话

这是我的第一个问题,我希望我做得对.

我需要处理一个Java EE项目,因此,在开始之前,我正在尝试做一些简单的事情,看看我能做到这一点.

我被Stateful Session Beans困住了.

这是一个问题:如何使用SFSB跟踪用户的会话?我看到的所有情况,"把"的最终SFSBHttpSession的属性.但我不明白为什么!我的意思是,如果bean是STATEFUL,为什么我必须使用HttpSession来保存它?

EJB容器的任务不是将正确的SFSB返回给客户端吗?

我试过一个简单的计数器豆.在不使用会话的情况下,两个不同的浏览器具有相同的计数器bean(单击"增量"会更改它们的值).使用会话,我有两个不同的值,每个值对应每个浏览器(点击Firefox上的"增量",只添加一个到Firefox的bean).

但我的老师告诉SFSB保持"与客户的会话状态",那么为什么它不能在不使用HttpSession的情况下工作呢?

如果我理解正确的,不使用HttpSession中SFSB同样用做它的SLSB呢?

我希望我的问题很明确,而且我的英语不是那么差!

编辑:我正在使用登录系统.一切顺利,完成登录后,我会看到一个显示用户数据的个人资料页面.但重新加载页面会使我的数据消失!我尝试在记录时添加HttpSession,但这样做会使数据在注销后保持不变!

session ejb stateful javabeans httpsession

16
推荐指数
1
解决办法
1万
查看次数

从EJB无状态会话bean调用CDI会话范围的生产者方法

我想@Inject @Current User在所有层(即web层,EJB层)中使用当前用户.为此,我有以下CDI Producer方法:

@Named
@SessionScoped
public class UserController {
   @Resource SessionContext sessionContext;
   @EJB UserDao userDao;

   @Produces @Current
   public User getCurrentUser() {
     String username = sessionContext.getCallerPrincipal().getName();
     User user = userDao.findByUsername(username);
   }
}

@Qualifier
@Target({TYPE, METHOD, PARAMETER, FIELD})
@Retention(RUNTIME)
public @interface Current{}
Run Code Online (Sandbox Code Playgroud)

现在,我想将当前用户注入EJB无状态会话bean,如下所示:

@Stateless
public class SomeBackendService {
   @Inject @Current
   private User user;
}
Run Code Online (Sandbox Code Playgroud)

我的问题:当前用户对象是否总是在会话更改后重新注入,因为无状态会话bean的依赖关系通常在创建时注入一次,并且bean可能被池化并在不同的会话中使用?

java java-ee cdi

7
推荐指数
1
解决办法
6163
查看次数

我可以使用带有CDI的EJB无状态Bean来维护用户会话吗?

基于这篇文章http://www.adam-bien.com/roller/abien/entry/ejb_3_1_killed_the我在我的应用程序@Named @Stateless bean中使用与数据库进行通信(在此处注入EntityManager)并在jsf页面上显示信息.自Java EE 5以来,这是很好的促进,但我有一个问题.

使用这样的bean来维护用户会话(购物车等)是否安全?我读了一本关于ejb 3.0的书,我知道同样的无状态bean可以用于许多客户端.

使用具有所有ejb功能(事务,线程安全等)的托管bean的最佳方法是什么?我的意思是除了托管bean + ejb接口以及Java EE 5中的实现+ ejb注入之外的任何其他方式?

我使用GlassFish 3.1 WebProfile

java cdi java-ee-6 jsf-2 ejb-3.1

3
推荐指数
2
解决办法
4552
查看次数

标签 统计

cdi ×2

java ×2

ejb ×1

ejb-3.1 ×1

httpsession ×1

java-ee ×1

java-ee-6 ×1

javabeans ×1

jsf-2 ×1

session ×1

stateful ×1