Version 4

    Clustered Remoting

    Clustered AOP Remoting didn't receive much TLC for the 1.0 beta release although we did fix a few critical bugs.  We'll put more TLC in the next release

     

    Clustered remoting works a little differently than regular AOP remoting. It leverages the clustering framework implemented for EJBs.

    import org.jboss.ha.framework.interfaces.RoundRobin;
    ...
       POJO remote = new POJO("hello");
       return (POJO)ClusteredRemoting.registerClusteredObject("clusteredobj", remote,
                                                              "DefaultPartition", new RoundRobin(),
                                                              "socket://servername:8084");
    

    Unlike regular AOP remoting, clients cannot independently connect to a clustered object. Here's a look at the API.

    package org.jboss.aop.remoting;
    
    import javax.naming.InitialContext;
    
    import org.jboss.aop.Advised;
    import org.jboss.aop.InstanceAdvised;
    import org.jboss.aop.InstanceAdvisor;
    import org.jboss.aop.PayloadKey;
    import org.jboss.aop.proxy.ClassProxy;
    import org.jboss.aop.proxy.ClassProxyFactory;
    import org.jboss.ha.framework.server.HATarget;
    import org.jboss.ha.framework.interfaces.HAPartition;
    import org.jboss.ha.framework.interfaces.LoadBalancePolicy;
    import org.jboss.ha.framework.interfaces.GenericClusteringException;
    import org.jboss.ha.framework.interfaces.ClusteringTargetsRepository;
    import org.jboss.ha.framework.interfaces.FamilyClusterInfo;
    import org.jboss.logging.Logger;
    import org.jboss.remoting.InvokerLocator;
    import org.jboss.aop.Dispatcher;
    
    public class ClusteredRemoting implements ClusterConstants
    {
       public static ClassProxy registerClusteredObject(Object objectId, Object obj, 
                                                        String partitionName, 
                                                        LoadBalancePolicy lb, String uri)
          throws Exception
    
       public static ClassProxy registerClusteredObject(Object objectId, Object obj, 
                                                        String partitionName, LoadBalancePolicy lb,
                                                        InvokerLocator locator) throws Exception
    
    }
    
    

     

    The ClusteredRemoting static methods register with the Dispatcher for you. The partitionName corresponds to the Cluster Partition you want the object to be used with. Pre-implemented load balance policies are RoundRobin and FirstAvailable. See the EJB clustering docs for more information.