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 + -
显示快捷键?