KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > regis > remote > SessionInterceptor


1 package org.sapia.regis.remote;
2
3 import org.sapia.regis.Node;
4 import org.sapia.regis.RegisSession;
5 import org.sapia.regis.Registry;
6 import org.sapia.ubik.rmi.interceptor.Interceptor;
7 import org.sapia.ubik.rmi.server.invocation.ServerPostInvokeEvent;
8 import org.sapia.ubik.rmi.server.invocation.ServerPreInvokeEvent;
9
10 public class SessionInterceptor implements Interceptor{
11   
12   private Registry _regis;
13   
14   SessionInterceptor(Registry regis){
15     _regis = regis;
16   }
17   
18   public void onServerPreInvokeEvent(ServerPreInvokeEvent evt){
19     RegistryServerLockManager.lock().readLock().lock();
20     if(evt.getTarget() instanceof Node){
21       RegisSession sess = _regis.open();
22       RemoteSessions.join(sess);
23     }
24   }
25   
26   public void onServerPostInvokeEvent(ServerPostInvokeEvent evt){
27     RegistryServerLockManager.lock().readLock().unlock();
28     if(evt.getTarget() instanceof Node){
29       RemoteSessions.close();
30     }
31   }
32
33 }
34
Popular Tags