shezhiclient.java

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

JAVA
175
字号
package shezhi;
import com.ibm.aglet.*;
import java.io.Externalizable;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.lang.*;

public class shezhiClient extends Aglet {

    AgletProxy[] remoteProxy = new AgletProxy[50]; //remoteProxy代理slave
	 AgletProxy[] proxy = new AgletProxy[50];
	 String[] UnitTemp=new String[9];
	 int i=0;///i used for the order of remoteProxy
    String name = "Unknown";
	 int num=0;         ////////记录派遣aglet的个数
    log log;
	ResultSet rs;
	tableSql t;


    public void onCreation(Object o) {
	log=new log();
	log.Init("zqjk");
	t=new tableSql();
	t.tableInit("zqjk");
	 	try {
	   	name = (String) getAgletContext().getProperty("aglets.user.name", "Unknown");
			///debug
			System.out.println("aglets.user.name:"+name);
			setText("aglets.user.name:"+name);
		}
		catch (Exception ex) {
		}
    }

    public void onDisposing() { }
    
   public boolean handleMessage(Message msg) {
		if (msg.sameKind("dispatch")) {     /////接受master传来的消息,并送给server  	
	    	
	 String[]  str=(String[])msg.getArg();
    num=str.length;
	System.out.println("NUM IS: "+num);
		AgletContext context = getAgletContext();
	//

	//
	for (int i=0;i<num;i++){
	    	try{
			
	   	if (str[i]!=null){
	  		  			remoteProxy[i] = context.createAglet(null, "setupProxy", getProxy());
	  		  			URL url = new URL("atp://"+str[i]);
	    				proxy[i] =remoteProxy[i].dispatch(url);
	    				System.out.println("creation sucess");
					System.out.println("my proxy is"+proxy[i]);
			  	  
				   System.out.println("my url is"+url);  			
						System.out.println("now dispatch "+i+" ,url is : atp://"+str[i]);
	   	              log.Add("event","shezhiClient:dispatch "+i+" url is :atp://"+str[i]);
					  }//end if
	  				                  
					
				
				} 
				
	   			catch (InvalidAgletException ex) {
				
				 ex.printStackTrace();
				 log.Add("error","shezhiClient:fail dispatch this aglet");

				} 
				catch (Exception ex) {
	   			 ex.printStackTrace();
				}

	}//end for	
	return true;			
		}//end if msg.sameKind("dispatch")
	
		else if (msg.sameKind("sendWrite")) {
			
			String[][] str=(String[][])msg.getArg();
		//	System.out.println("record is "+str[0][0]+str[0][1]);
		//	String ss="shezhiClient send write to server: "+str[0][0]+str[0][1];
		//	log.Add("event","jianguanClient:"+ss);
	     
		 int l=str.length;
		for(int i=0;i<l;i++)
		{
					
			if (str[i][0]!=null)
				{
					for(int k=0;k<9;k++)
					{
		System.out.println("Client send jianguan and Setup records to server "+str[i][k]);
		log.Add("event","setupProxy:send jianguan records to server :"+str[i][k]);
					}//end for k
				}
		}
		
			for (int i=0;i<num;i++){
				try {
					
	    			if (proxy[i]!=null)
					{
						System.out.println("str[i] is: "+str[i][1]+str[i][2]);
						proxy[i].sendOnewayMessage(new Message("sendWrite",str[i]));
					}
				
				} 
				catch (Exception ex) {
	   			 ex.printStackTrace();
	   			 log.Add("error","shezhiClient:jianguanClient send command failed");
				}//end catch
	    	}//end for
			}//end if msg.sameKind("sendWrite")
		
		
			
		else if (msg.sameKind("bye")) {  /////结束会话
	    System.out.println("Client will dispose");	  
	    dispose();
	                                	}

else if (msg.sameKind("status")) {
          String[] str=(String[])msg.getArg();
		  String DeptName="",Unit="";
		  int beginindex;
		  String host;
		  
	 //    log.Add("Hostname",str[0]);
	//	 log.Add("myclassname",str[1]);
	//	 log.Add("runningstatus",str[2]);
	//	 log.Add("connectstatus",str[3]);
		 beginindex=str[0].indexOf("atp");
		 host=str[0].substring(beginindex+6);
	//	 log.Add("host",host);
		//
		try
		{
	
		rs = t.recordSql("select * from UnitInfo where HostName="+"'"+host+"'");
		
		while (rs.next())
		{
		for(int j=0;j<8;j++)
		{UnitTemp[j]=rs.getString(j+1);
		}
	    
		DeptName=UnitTemp[2];
	    Unit=UnitTemp[1];
		}
		//
        log.Add(DeptName,Unit,str[0],str[1],str[2],str[3]);	
	//	t.closeConnect();					 
		}
			catch (Exception e){
			e.printStackTrace();
			
		                    }  
		
		                                	}
			                 
		

		return true; 
   }//end handlemessage

  
}//end main

⌨️ 快捷键说明

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