关于在servlet中引用webwork中接口的问题

首先我采用的框架是spring+webwork+hibernate

目前遇到的问题是:我想创建一个servlet来定时同步一些数据,而目前最主要的是同步用户是否真的在线的数据

我在数据库中设置了一个字段 isonline 纪录用户是否在线 同时设置了一个字段pointcode纪录sessionId

业务中我是这样做的:当用户登录后自动把数据库里的isonline字段update为在线的const常量,当用户注销或者退出后update该字段为离线的const常量。这时就需要考虑特殊情况,用户未注销直接转到其它的网站url或者直接关闭浏览器,或者断电的情况,我所采用的方法就无法做到该要求。以前我也曾用过js控制这个情况,后来想想如果能做一个servlet让其同步该数据,查询数据库中isonline用户在线的user的sessionId,然后拿这个sessionId来与当前在线的Hash Set中的数据来比对,如果不存在与其中,则把该用户的isonline字段更新一下。问题就出现在这里:

我用的是接口模式

[code]
interface UserAware {
List getUsers(String isonline);
updateCustomer(User user);
......
}
class UserService implements UserAware {
......
}
[/code]

我现在在servlet的init()方法里面要使用这个接口方法来进行操作。
尝试过一下几个方法:
另外创建一个类
[code]
class CubeUser extends ActionSupport{

private UserAware userAware;
void run(){
//实现业务逻辑
...
List aUers=userAware. getUsers(Const.ISONLINE);
...
}
//省略的get() set()
......
}
[/code]
这样做userAware似乎不为null,但总是在这里就出错了,似乎hibernate为null了

我也尝试过使用这样的方法:
[code]
class UserAwareFactory{

static UserAware getUserService(){

return new UserService();
}
}

//这样我在
class CubeTwoUser{

private UserAware userAware=UserAwareFactory.getUserService();

List aUers=userAware.getUsers(Const.ISONLINE);
//依旧出现上述问题
}
[/code]
想请教下是我处理的方式有错还是过程中有错误的地方。
似乎如果能在HttpSessionListerer中能使用接口中的方法那就更好了,呵呵。
有同样经历的可以进来讨论下不,呵呵。
thank you very much!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值