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