User: slaboure
  Date: 01/09/20 16:29:28

  Modified:    src/main/org/jboss/ha HARMIServerImpl.java
  Log:
  Tightend integration of HANamingService with the new HARMIServerImpl.
  
  Revision  Changes    Path
  1.2       +109 -84   jbossmx/src/main/org/jboss/ha/HARMIServerImpl.java
  
  Index: HARMIServerImpl.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbossmx/src/main/org/jboss/ha/HARMIServerImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HARMIServerImpl.java      2001/09/20 07:57:41     1.1
  +++ HARMIServerImpl.java      2001/09/20 23:29:27     1.2
  @@ -1,84 +1,109 @@
  -package org.jboss.ha;
  -
  -import java.util.Vector;
  -import java.util.ArrayList;
  -import java.util.HashMap;
  -import java.util.Iterator;
  -import java.util.Collection;
  -import java.rmi.Remote;
  -import java.rmi.server.RemoteStub;
  -import java.rmi.server.UnicastRemoteObject;
  -import java.io.Serializable;
  -import java.rmi.RemoteException;
  -
  -import org.jboss.logging.Logger;
  -import org.jboss.ejb.plugins.jrmp.interfaces.RemoteMethodInvocation;
  -import java.rmi.MarshalledObject;
  -import java.lang.reflect.Method;
  -import java.lang.reflect.InvocationTargetException;
  -
  -public class HARMIServerImpl
  -   implements HARMIServer, DistributedReplicantManager.ReplicantListener
  -{
  -   protected String replicantName;
  -   protected long lastSet = 0;
  -   protected ArrayList replicants;
  -   protected Object handler;
  -   protected HashMap invokerMap = new HashMap();
  -   public HARMIServerImpl(HAPartition partition, String replicantName, Object 
handler) throws Exception
  -   {
  -      this.replicantName = replicantName;
  -      this.handler = handler;
  -      Method[] methods = handler.getClass().getMethods();
  -      for (int i = 0; i < methods.length; i++)
  -      {
  -         invokerMap.put(new Long(RemoteMethodInvocation.calculateHash(methods[i])), 
methods[i]);
  -      }
  -      RemoteStub stub = UnicastRemoteObject.exportObject(this);
  -      partition.getDistributedReplicantManager().registerListener(replicantName, 
this);
  -      partition.getDistributedReplicantManager().add(replicantName, stub);
  -   }
  -
  -   public long getTag()
  -   {
  -      return lastSet;
  -   }
  -
  -   public void replicantsChanged(String key, ArrayList newReplicants)
  -   {
  -      replicants = newReplicants;
  -      lastSet = System.currentTimeMillis();
  -   }
  -
  -   public HARMIResponse invoke(long tag, MarshalledObject mimo) throws Exception
  -   {
  -      RemoteMethodInvocation rmi = (RemoteMethodInvocation)mimo.get();
  -      rmi.setMethodMap(invokerMap);
  -      Method method = rmi.getMethod();
  -      try
  -      {
  -         HARMIResponse rsp = new HARMIResponse();
  -         if (tag < lastSet)
  -         {
  -            rsp.newReplicants = replicants.toArray();
  -            rsp.tag = lastSet;
  -         }
  -         rsp.response = method.invoke(handler, rmi.getArguments());
  -         return rsp;
  -      }
  -      catch (IllegalAccessException iae)
  -      {
  -         throw iae;
  -      }
  -      catch (IllegalArgumentException iae)
  -      {
  -         throw iae;
  -      }
  -      catch (InvocationTargetException ite)
  -      {
  -         throw (Exception)ite.getTargetException();
  -      }
  -   }
  -}
  -
  -
  +package org.jboss.ha;
  +
  +import java.util.Vector;
  +import java.util.ArrayList;
  +import java.util.HashMap;
  +import java.util.Iterator;
  +import java.util.Collection;
  +import java.rmi.Remote;
  +import java.rmi.server.RemoteStub;
  +import java.rmi.server.UnicastRemoteObject;
  +import java.io.Serializable;
  +import java.rmi.RemoteException;
  +
  +import org.jboss.logging.Logger;
  +import org.jboss.ejb.plugins.jrmp.interfaces.RemoteMethodInvocation;
  +import java.rmi.MarshalledObject;
  +import java.lang.reflect.Method;
  +import java.lang.reflect.InvocationTargetException;
  +
  +public class HARMIServerImpl
  +
  +implements HARMIServer, DistributedReplicantManager.ReplicantListener
  +
  +{
  +   protected String replicantName;
  +   protected long lastSet = 0;
  +   protected ArrayList replicants;
  +   protected Object handler;
  +   protected HashMap invokerMap = new HashMap ();
  +   protected HAPartition partition = null;
  +   protected RemoteStub myStub = null;
  +   
  +   public HARMIServerImpl (HAPartition partition, String replicantName, Object 
handler) throws Exception
  +   {
  +      this.replicantName = replicantName;
  +      this.partition = partition;
  +      this.handler = handler;
  +      
  +      Method[] methods = handler.getClass ().getMethods ();
  +      
  +      for (int i = 0; i < methods.length; i++)
  +         invokerMap.put (new Long (RemoteMethodInvocation.calculateHash 
(methods[i])), methods[i]);
  +      
  +      this.myStub = UnicastRemoteObject.exportObject (this);
  +      
  +      partition.getDistributedReplicantManager ().registerListener (replicantName, 
this);
  +      partition.getDistributedReplicantManager ().add (replicantName, this.myStub);
  +   }
  +   
  +   public void destroy ()
  +   {
  +      try
  +      {
  +         this.partition.getDistributedReplicantManager ().unregisterListener 
(this.replicantName, this);
  +         this.partition.getDistributedReplicantManager ().remove 
(this.replicantName);
  +         
  +         UnicastRemoteObject.unexportObject (this, true);
  +      } catch (Exception e)
  +      {e.printStackTrace ();}
  +   }
  +   
  +   public RemoteStub getStub ()
  +   {
  +      return this.myStub;
  +   }
  +   
  +   public long getTag ()
  +   {
  +      return lastSet;
  +   }
  +   
  +   public void replicantsChanged (String key, ArrayList newReplicants)
  +   {
  +      replicants = newReplicants;
  +      lastSet = System.currentTimeMillis ();
  +   }
  +   
  +   public HARMIResponse invoke (long tag, MarshalledObject mimo) throws Exception
  +   {
  +      RemoteMethodInvocation rmi = (RemoteMethodInvocation)mimo.get ();
  +      rmi.setMethodMap (invokerMap);
  +      Method method = rmi.getMethod ();
  +      
  +      try
  +      {
  +         HARMIResponse rsp = new HARMIResponse ();
  +         if (tag < lastSet)
  +         {
  +            rsp.newReplicants = replicants.toArray ();
  +            rsp.tag = lastSet;
  +         }
  +         
  +         rsp.response = method.invoke (handler, rmi.getArguments ());
  +         return rsp;
  +      }
  +      catch (IllegalAccessException iae)
  +      {
  +         throw iae;
  +      }
  +      catch (IllegalArgumentException iae)
  +      {
  +         throw iae;
  +      }
  +      catch (InvocationTargetException ite)
  +      {
  +         throw (Exception)ite.getTargetException ();
  +      }
  +   }
  +}
  \ No newline at end of file
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to