论坛首页 Java企业应用论坛

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

浏览 2550 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-22  
   首先我采用的框架是spring+webwork+hibernate

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

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

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

    我用的是接口模式

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


   我现在在servlet的init()方法里面要使用这个接口方法来进行操作。
    尝试过一下几个方法:
    另外创建一个类
    class CubeUser extends ActionSupport{
   
   private UserAware  userAware;
      void run(){
        //实现业务逻辑
         ...
         List aUers=userAware. getUsers(Const.ISONLINE);
        ...
      }
   //省略的get() set()
   ......
    }

    这样做userAware似乎不为null,但总是在这里就出错了,似乎hibernate为null了

    我也尝试过使用这样的方法:
    
    class UserAwareFactory{
      
    static UserAware getUserService(){
      
     return new UserService();
     }
   }

   //这样我在 
    class CubeTwoUser{

    private UserAware  userAware=UserAwareFactory.getUserService();
   
    List aUers=userAware.getUsers(Const.ISONLINE);
    //依旧出现上述问题
    } 

    想请教下是我处理的方式有错还是过程中有错误的地方。
     似乎如果能在HttpSessionListerer中能使用接口中的方法那就更好了,呵呵。
    有同样经历的可以进来讨论下不,呵呵。
   thank you very much!
   发表时间:2008-05-17  
userAware 又不是model,webwork似乎不调用拦截器


这样做userAware似乎不为null,但总是在这里就出错了,似乎hibernate为null了
???
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics