无状态BEAN应该不能,听说它的寿命是由EJB容器管理的,而且它的实例是复用的。有状态BEAN我不知道了,没用过,呵呵~

解决方案 »

  1.   

    比如我想在session结束的时候,让程序其他的模快知道该session已经结束怎么办
      

  2.   

    再比如我想在session结束的时候执行一个方法,或者实例话某个类,怎么办?
      

  3.   

    HttpSessionListener是一个接口,有两个方法:
    void sessionCreated(HttpSessionEvent event);
    void sessionDestroyed(HttpSessionEvent event);
    分别是在创建和结束Session时调用。定义一个类实现HttpSessionListener接口,say,MyListenerpublic class MyListener implements HttpSessionListener {
      // 定义上述两个方法
    }在web.xml中,加上这一段:<listener>
      <listener-class>MyListener</listener-class>
    </listener>
    BTW:MyListener还可以实现其它一些Listener接口,比如
    ServletContextListener:在一个application启动和结束时调用
    ServletContextAttributeListener: 在向application增加、删除和修改
      Attributes时调用
    HttpSessionActivationListener: 分布式环境下Session激活和失活时调用
    HttpSessionAttributeListener: 在向session增加、删除和修改属性时调用
    HttpSessionBindingListener:向session绑定一个属性时调用。
      

  4.   

    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;public class SessionCounter
        implements HttpSessionListener
    {    private static int activeSessions = 0;    public SessionCounter()
        {
        }    public void sessionCreated(HttpSessionEvent se)
        {
            activeSessions++;
        }    public void sessionDestroyed(HttpSessionEvent se)
        {
            if(activeSessions > 0)
                activeSessions--;
        }    public static int getActiveSessions()
        {
            return activeSessions;
        }}
      

  5.   

    http://expert.csdn.net/Expert/topic/1177/1177688.xml?temp=.1149561
      

  6.   

    很好
    不过我要做的东东可能还要帮我想一下
    比如我想把这个结束的session的id写到某个文件里怎么办?
    或者我想在session结束前把这个session里的一些信息写到数据库里,比如把该session经历过的页面记录到数据库中
      

  7.   

    上面的说的不好,重说
    比如我想用户登陆的时候,把用户名登记到数据库的在线名单表中
    当session结束的时候,把该用户从在线名单表中删除
      

  8.   


    1,把session经历过的页面纪录可以使用filter!!!也很简单!2,要看你是用什么服务器了如果服务器不支持sevrlet2.3就不能用sessionListener了!!!和filter了!!(目前iplanet6就不支持2.3
    不过它提供了非通用标准的api也可以实现这两个功能)3,就算是支持servlet2.3也无法通过session准确地得到用户下线的时间!
    因为session有失效时间,和回收间隔时间,只能在误差为timeout+-reapInterval time时间段保持相对准确!!!4,多看看help文档祝你好运!!!
      

  9.   

    比如我想用户登陆的时候,把用户名登记到数据库的在线名单表中
    当session结束的时候,把该用户从在线名单表中删除
      

  10.   

    HttpSessionListener.sessionCreated(HttpSessionEvent se) {
      //通过se.getSession()方法就能拿到这个session
    }
    HttpSessionListener.sessionDestroyed(HttpSessionEvent se) {
      //通过se.getSession()方法就能拿到这个session
    }