время выхода из трассировки с использованием HttpSessionBindingListeners - PullRequest
0 голосов
/ 22 марта 2012

Как я могу отследить время выхода из системы с помощью httpsessionbindinglistner?Я дал пример кода и даю ниже, но он не работает. РЕСУРС ЗДЕСЬ

package com.tunatore.listeners;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

/**
 *
 * @author tunatore
 */
public class ObjectWillBeInSession implements HttpSessionBindingListener{

private String property1 = null;
private String property2 =null;


@Override
public void valueBound(HttpSessionBindingEvent event) {
    //code to run when ObjectWillBeInSession object associated with a http session
 }

 @Override
 public void valueUnbound(HttpSessionBindingEvent event) {
    //code to run when ObjectWillBeInSession object removed from a http session        
    //logging into a database server could be done here
 /**
  * @return the property1
  */
 public String getProperty1() {
    return property1;
 }

 /**
  * @param property1 the property1 to set
  */
  public void setProperty1(String property1) {
    this.property1 = property1;
 }

 /**
  * @return the property2
  */
 public String getProperty2() {
    return property2;
  }

  /**
  * @param property2 the property2 to set
  */
 public void setProperty2(String property2) {
    this.property2 = property2;
 }

}

logout.jsp // здесь я хочу вставить время выхода из системы в базу данных, когда браузер закрыт или время сеанса истекло

    <%
        ObjectWillBeInSession owi = new ObjectWillBeInSession();
        owi.setProperty1("I am a value for Property1");
        owi.setProperty2("I am a value for Property2");
        //this will call HttpSessionBindingListener's 
        //valueBound method for the object
        session.setAttribute("owi", owi);

        //this will call HttpSessionBindingListener's 
        //valueUnbound method for the object
        session.removeAttribute("owi");   
            //INSERT INTO DB.......BUT IT IS NOT WORKING
     %>

1 Ответ

0 голосов
/ 22 марта 2012

Я думаю, что вы должны использовать HttpSessionListener вместо Binding listener.Ниже приведен пример количества активных сеансов на сервере.

public class SessionCounter implements javax.servlet.http.HttpSessionListener{
    /**
     * Number of active sessions
     */
    private static int activeSessions = 0;

    public void sessionCreated(javax.servlet.http.HttpSessionEvent se) {
        activeSessions++;
        logSessionCount();
    }

    public void sessionDestroyed(javax.servlet.http.HttpSessionEvent se) {
        if (activeSessions > 0){
            activeSessions--;
        }
        logSessionCount();
    }
    private void logSessionCount(){
        java.lang.System.out.println("Number of active sessions : " + activeSessions);
    }
    public static int getActiveSessions() {
        return activeSessions;
    }
}
...