package syidt.strutsweb.cms.sessioncounter;/**
* <p>Title: idtcms</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: **软件</p>
*
* @author not attributable
* @version 1.0
*/
public class OnlineCounter {
private static long online = 0;
public static long getOnline() {
return online;
}
public static void raise(){
online++;
}
public static void reduce(){
online--;
}
}package syidt.strutsweb.cms.sessioncounter;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* <p>Title: idtcms</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: **软件</p>
*
* @author not attributable
* @version 1.0
*/public class OnlineCounterListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent hse) {
OnlineCounter.raise();
}
public void sessionDestroyed(HttpSessionEvent hse) {
OnlineCounter.reduce();
System.out.println("Destory Session");
}
}
<listener>
<listener-class>syidt.strutsweb.cms.sessioncounter.OnlineCounterListener</listener-class>
</listener>如上实现.但为什么在线人数会显示出负数.并我己设置TOMCAT... <session-config>
<session-timeout>30</session-timeout>
</session-config>
* <p>Title: idtcms</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: **软件</p>
*
* @author not attributable
* @version 1.0
*/
public class OnlineCounter {
private static long online = 0;
public static long getOnline() {
return online;
}
public static void raise(){
online++;
}
public static void reduce(){
online--;
}
}package syidt.strutsweb.cms.sessioncounter;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* <p>Title: idtcms</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: **软件</p>
*
* @author not attributable
* @version 1.0
*/public class OnlineCounterListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent hse) {
OnlineCounter.raise();
}
public void sessionDestroyed(HttpSessionEvent hse) {
OnlineCounter.reduce();
System.out.println("Destory Session");
}
}
<listener>
<listener-class>syidt.strutsweb.cms.sessioncounter.OnlineCounterListener</listener-class>
</listener>如上实现.但为什么在线人数会显示出负数.并我己设置TOMCAT... <session-config>
<session-timeout>30</session-timeout>
</session-config>
而当两个人不在同一时间离开的时候,对count进行了两次减1,那么count=-1
public synchronized void sessionCreated(HttpSessionEvent hse) {
OnlineCounter.raise();
}
public synchronized void sessionDestroyed(HttpSessionEvent hse) {
OnlineCounter.reduce();
System.out.println("Destory Session");
}
}
不会还不明白吧