agentservice.java

来自「javaP2P技术内幕课程111213141516源代码」· Java 代码 · 共 76 行

JAVA
76
字号
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;

import java.util.Properties;
import java.rmi.activation.Activatable;
import java.rmi.activation.ActivationDesc;
import java.rmi.activation.ActivationID;
import java.rmi.activation.ActivationGroup;
import java.rmi.activation.ActivationGroupDesc;
import java.rmi.activation.ActivationGroupID;
import java.rmi.MarshalledObject;


public class AgentService extends Activatable
                           implements Agent
{
    public AgentService(ActivationID id, MarshalledObject data) throws RemoteException {
        // register object with activation system using anonymous port
        super(id, 0);
    }


    public static void main(String[] args) {

      if(args.length < 3) {
         System.out.println("usage [hostname] [codebase] [security_policy]");
         System.exit(1);
      }

      String hostname = args[0];
      String codebase = args[1];
      String policy = args[2];

      try {
          if (System.getSecurityManager() == null) {
             System.setSecurityManager(new RMISecurityManager());
          }
  
           // create the activation group description
           Properties props = new Properties();
           props.put("java.security.policy", policy);
           props.put("java.rmi.server.codebase", codebase);
                
           ActivationGroupDesc agd = new ActivationGroupDesc(props, null);
           ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(agd);
           ActivationGroup.createGroup(agi, agd, 0);

           // create the activation object description     
           ActivationDesc ad = new ActivationDesc("AgentService", 
                                                 codebase,
                                                 null, 
                                                 true);
    
           // register the activation description with rmid
           Agent agent = (Agent) Activatable.register(ad);
 
            // bind the stub to the registry
            String name = "//" + hostname + "/AgentService";
            Naming.rebind(name, agent);
            System.out.println("AgentService bound");

            System.exit(0);
        } catch (Exception e) {
            System.err.println("AgentService exception: " + 
          e.getMessage());
            e.printStackTrace();
        }
   }

    // implementation of the Agent interface
    public String talk() {
        return "P2P is very cool";
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?