Сначала пробовал реализовать идею с javax.servlet.http.HttpSessionListener
Чтобы на создание сессии добавить юзера в список, на разрушение сессии - удалить.
Трабл: не смог из HttpSession вытащить userPrincipal (Может это все таки можно сделат?)
Далее, сделал попыку с org.apache.catalina.SessionListener:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
/*
* Created on Jul 6, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package test;
import org.apache.catalina.Session;
import org.apache.catalina.SessionEvent;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.catalina.SessionListener;
/**
* *
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class ActiveClientJournal implements Serializable,SessionListener {
private List activeUserLogins = new ArrayList();
public List getActiveUserLogins() {
return activeUserLogins;
}
public void sessionEvent(SessionEvent se){
String eventType = se.getType();
Session currentSession = se.getSession();
String userName = currentSession.getPrincipal().getName();
if (eventType.equals("created"))
this .activeUserLogins.add(userName);
if (eventType.equals("destroyed"))
this .activeUserLogins.remove(userName);
}
}
В web.xml приложения прописал:
1.
2.
<listener>
<listener- class >test.ActiveClientJournal</listener- class >
</listener>
Томкат не запускается:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Catalina.start: LifecycleException: Context startup failed due to previous errors
LifecycleException: Context startup failed due to previous errors
at org.apache.catalina.core.StandardContext.start(StandardContext.java: 3578 )
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1141 )
at org.apache.catalina.core.StandardHost.start(StandardHost.java: 707 )
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java: 1141 )
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java: 316 )
at org.apache.catalina.core.StandardService.start(StandardService.java: 450 )
at org.apache.catalina.core.StandardServer.start(StandardServer.java: 2143 )
at org.apache.catalina.startup.Catalina.start(Catalina.java: 463 )
at org.apache.catalina.startup.Catalina.execute(Catalina.java: 350 )
at org.apache.catalina.startup.Catalina.process(Catalina.java: 129 )
at sun.reflect.NativeMethodAccessorImpl.invoke0( Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
at java.lang.reflect.Method.invoke(Method.java: 324 )
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 156 )
Stopping service Tomcat-Standalone
Catalina.stop: LifecycleException: Coyote connector has not been started
LifecycleException: Coyote connector has not been started
at org.apache.coyote.tomcat4.CoyoteConnector.stop(CoyoteConnector.java: 1296 )
at org.apache.catalina.core.StandardService.stop(StandardService.java: 499 )
at org.apache.catalina.core.StandardServer.stop(StandardServer.java: 2178 )
at org.apache.catalina.startup.Catalina.start(Catalina.java: 494 )
at org.apache.catalina.startup.Catalina.execute(Catalina.java: 350 )
at org.apache.catalina.startup.Catalina.process(Catalina.java: 129 )
at sun.reflect.NativeMethodAccessorImpl.invoke0( Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
at java.lang.reflect.Method.invoke(Method.java: 324 )
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 156 )