basicchild.java

来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 187 行

JAVA
187
字号

import com.ibm.aglet.*;

import com.ibm.aglet.event.*;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.IOException;
import java.net.URL;
import java.net.*;
import java.sql.*;
import java.util.*;
import java.io.*;


public class BasicChild extends Aglet {


//private boolean atHome;

public AgletProxy masterProxy;

String name = "Unknown";
AgletID sid=null;
AgletID self_id=null;
String sname;
AgletProxy serverProxy = null;
URL homeURL = null;///表示最初派遣主机的url
AgletID aid = null;
//log log;

public void onCreation (Object init) {

//atHome = true;
//log=new log();
//log.Init("Ecmdb");

masterProxy = (AgletProxy) init;

setText("Alive!");
		try {
			
			homeURL = getAgletContext().getHostingURL();
            aid = masterProxy.getAgletID();
            ////debug
            System.out.println("hostUrl is:"+homeURL);
            System.out.println("agletID is:"+aid);
            setText("hostUrl is:"+homeURL);
            setText("agletID is:"+aid);
            
        } catch (Exception ex) {
            System.out.println(ex);
        }


addMobilityListener(new MobilityAdapter () {

public void onArrival(MobilityEvent me) {

self_id=getAgletID();
System.out.println("my self id is:"+self_id);
setText("Arrived safely");

//added

AgletContext cxt=getAgletContext();
	      try{
				Enumeration aglets=cxt.getAgletProxies();
				while (aglets.hasMoreElements()) {			
					AgletProxy tmp=(AgletProxy) aglets.nextElement();
					
					AgletInfo inf=tmp.getAgletInfo();
					System.out.println(inf.toString() );
				   String agName=tmp.getAgletClassName();
					if (agName.endsWith("Server") ){ ////get server id
						sid=tmp.getAgletID();
						sname=tmp.getAgletClassName();
						System.out.println("the sname is:"+sname);
					}//end if
				}//end while
				////////////

				System.out.println(cxt.toString() );
				 name = (String) getAgletContext().getProperty("aglets.user.name", "Unknown");
				}//end try
				 catch (Exception ex) {
		   		 ex.printStackTrace();
				                } //end catch
								
//end

                                       }



                          });
            
           }//end onCreation


//added											

 

 public boolean handleMessage(Message msg) {
		
		 if (msg.sameKind("sendWrite")) {     /////接受master传来的消息,并送给server  	
	    	String[][][] str=(String[][][])msg.getArg();
	   
	 
	    	//测试安全性fileRead();
	    	
	    	//////////
	    	try{
	    	
	    		System.out.println("serverProxy id is:"+sid);
	    		//if (serverProxy == null) {
	     	  	 	serverProxy = getAgletContext().getAgletProxy(sid);   ///获取代理
	   		      //                 }
		  	 	
		 	String[] mm=new String[3];
	    	mm[0] = (String)self_id.toString();	
	    	mm[1] = (String)homeURL.toString();
	    	mm[2] = (String)aid.toString();
	
			serverProxy.sendOnewayMessage(new Message("write",str) );
		 	serverProxy.sendOnewayMessage(new Message("quit",mm) );	
			 Thread.sleep(15000);
			for(int i=0;i<3;i++)
			{
			System.out.println("proxy send "+mm[i]+" to server");
			}
		 		
	
	  	}//end try
      	catch(Exception e){
      		e.printStackTrace();
      		System.out.println("serverProxy message error");
      	}
	    	return true;
		}//end if
//added
else if (msg.sameKind("sendbzjWrite")) {
String[][] str=(String[][])msg.getArg();
	   
	     	
	    	//////////
	    	try{
	    	
	    		System.out.println("serverProxy id is:"+sid);
	    		//if (serverProxy == null) {
	     	  	 	serverProxy = getAgletContext().getAgletProxy(sid);   ///获取代理
	   		      //                 }
		  	 	
		 	String[] mm=new String[3];
	    	mm[0] = (String)self_id.toString();	
	    	mm[1] = (String)homeURL.toString();
	    	mm[2] = (String)aid.toString();
	
			serverProxy.sendOnewayMessage(new Message("bzjwrite",str) );
		 	serverProxy.sendOnewayMessage(new Message("quit",mm) );	
			 Thread.sleep(15000);
			for(int i=0;i<3;i++)
			{
			System.out.println("proxy send "+mm[i]+" to server");
			}
		 		
	
	  	}//end try
      	catch(Exception e){
      		e.printStackTrace();
      		System.out.println("serverProxy message error");
      	}
	    	return true;
			
}
else if (msg.sameKind("bye")) {  /////结束会话
	    System.out.println("I will dispose");	  
	   dispose();
		}
//end added
		return false;
   }//end handlemessage
   
//end
}

⌨️ 快捷键说明

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