0

我正在编写一个应用程序(“UserServices”),它通过Web 服务Java EE提供一些服务,例如登录用户、管理用户等。旨在由应用程序或客户端应用程序使用。客户端应用程序使用应用程序提供的无状态远程(或本地)bean。EJBRESTEJB

我想保留有关登录用户数量、用户活动和动态计算的用户统计信息的数据。

我不知道该怎么做。

数据必须保存在“UserServices”应用程序中,因为它是它的数据。所以我想我会使用带有本地和远程接口的有状态bean来保留它们。但是每个客户端应用程序在调用诸如“登录”或“注销”之类的服务时都应该引起数据的更改。

那么,如何从使用远程(或本地)无状态 bean 的客户端应用程序内部更改“用户服务”应用程序中“活动”的数据的状态?

或者换句话说,如何从另一个(可能是远程的)应用程序中更改应用程序中存在的有状态 bean 的状态?

我正在使用Java EE 6和。EJB 3.1JBoss 7.1

4

2 回答 2

0

据我了解,您希望在来自不同客户端的 bean 调用之间共享一些数据。尝试从另一个访问有状态会话 bean 的状态不是一个好主意,因为每个客户端总是创建一个实例。如果不需要持久化数据,您可以使用 EJB Singleton Bean,或具有单例范围的 CDI bean(我更喜欢 EJB Singleton)。要监视用户活动(bean 调用),拦截器可能很有用,您可以拦截 SFSB 调用,并以这种方式提供单例。

于 2013-06-19T20:42:52.157 回答
0

要计算登录用户的数量,您应该将 bean 定义为 @Singleton。@Singlton 保留从容器开始到结束的数据。

import javax.ejb.Singleton;
@Singleton

public class CounterBean {
private int loginUser = 1;

// Increment and return the number of users
public int countLoggedInUsers() {
    return loginUser++;
}
}

要保存永久登录的用户,您应该使用数据库或文件。

于 2013-06-20T10:53:27.763 回答