?? ecmproxy.java
字號:
package ecmAglet;
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 ecmProxy extends Aglet {
transient String name = "Unknown"; ////name 用于表示本地context
//transient TalkWindow window = null;
transient AgletProxy masterProxy = null;
//
transient AgletProxy serverProxy = null;
AgletID sid=null;
String sname;
AgletID self_id=null;
//String str;
// Carry URL and AgletID
URL homeURL = null;///表示最初派遣主機的url
AgletID aid = null;
FutureReply[] future=new FutureReply[100];
Object[] result=new Object[100];
String[][][] records=new String[100][][] ;
int order=0;
public ecmProxy() {
}
public void onCreation(Object o) {
masterProxy = (AgletProxy) o;
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 ev) {
self_id=getAgletID();
System.out.println("my self id is:"+self_id);
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("ecmServer") ){ ////get server id
sid=tmp.getAgletID();
sname=tmp.getAgletClassName();
System.out.println("the sname is:"+sname);
}
}
////////////
//System.out.println(inf.toString() );
System.out.println(cxt.toString() );
//try {
name = (String) getAgletContext().getProperty("aglets.user.name", "Unknown");
} catch (Exception ex) {
ex.printStackTrace();
}
}
});//end listerner
}//end function;
public void onDisposing() {
/*if (window != null) {
window.dispose();
window = null;
}*/
}
public boolean handleMessage(Message msg) {
if (msg.sameKind("sendQuery")) { /////接受master傳來的消息,并送給server
String[] str=(String[])msg.getArg();
System.out.println("ecmProxy receive query from servelet: "+str);
//測試安全性fileRead();
//////////
try{
String[] mm=new String[5];
if (self_id!=null)
mm[0]=(String)self_id.toString();
mm[1]=(String)homeURL.toString();
mm[2]=(String)aid.toString();
mm[3]=str[0];///mode
mm[4]=str[1];///command
System.out.println("connect with server and send query "+mm[0]+" "+mm[1]);
System.out.println("serverProxy id is:"+sid);
if (serverProxy == null) {
serverProxy = getAgletContext().getAgletProxy(sid); ///獲取dbServer代理
}
serverProxy.sendAsyncMessage(new Message("connect",mm) );
/////////
for (int t=0;t<=order;t++){
try{
System.out.println("now t value is:"+t);
if (records[t]!=null){
result[t]=future[t].getReply();
records[t]=(String[][])result[t];
System.out.println("***************!!!!");
System.out.println("i get query result have "+records[t].length+" records");
System.out.println("***************!!!!");
msg.sendReply(result[t]);
}
if (t==order) {
System.out.println("now order value is:"+order);
t=0;
}
}
catch (com.ibm.aglet.NotHandledException ex){
ex.printStackTrace();
}
catch (com.ibm.aglet.MessageException ex){
ex.printStackTrace();
}
}///end for
String[][] records=(String[][])result;
int l=records.length;
int ll=records[1].length;
System.out.println("array lenth is :"+l);
System.out.println("record lenth is :"+ll);
outLoop:
for (int i=0;i<l;i++){
for (int j=0;j<ll;j++){
if (records[i][j]!=null)
System.out.print(records[i][j]+",");
//else if break la;
else break outLoop ;
}
System.out.println(""); ///換行顯示
} */
/////////////
//msg.sendReply(result); ///返回查詢結果到master
}
catch(Exception e){
e.printStackTrace();
System.out.println("serverProxy message error");
}
return true;
}
else if (msg.sameKind("getResult")) {
//System.out.println("slave receive result from server");
String[][] records=(String[][])msg.getArg();
try {
if (masterProxy == null) {
masterProxy = getAgletContext().getAgletProxy(homeURL, aid);
}
///////////////////
int l=records.length;
int ll=records[1].length;
//System.out.println("*****array lenth is :"+l);
//System.out.println("*****record lenth is :"+ll);
System.out.println("");
outLoop:
for (int i=0;i<l;i++){
for (int j=0;j<ll;j++){
if (records[i][j]!=null)
System.out.print(records[i][j]+",");
//else if break la;
else break outLoop ;
}
System.out.println(""); ///換行顯示
}
//msg.sendReply(records);
//masterProxy.sendAsyncMessage(new Message("getResult",records));
//System.out.println("ecmProxy send result to master");
//sendAsyncMessage(new Message("bye","kill self"));
}
catch (Exception ex) {
ex.printStackTrace();
}
}else if (msg.sameKind("bye")) { /////結束會話
//window.appendText("Bye Bye..");
try {
Thread.currentThread().sleep(3000);
} catch (Exception ex) {}
//msg.sendReply();
dispose();
}
return false;
}
///test the slave can or not read the server's file
public void fileRead() {
File input =new File("d:\\zjwork\\fileRead.java");
if (input.exists()){
System.out.println("\nThis file found.");
}
else System.out.println("Sorry,this file no found!");
if (input.isFile()&& input.canWrite() && input.canRead())
{
try{
RandomAccessFile file=new RandomAccessFile(input,"rw");
System.out.println("file length:"+file.length());
System.out.println("pointer pos:"+file.getFilePointer());
while (file.getFilePointer()<file.length())
System.out.println(file.readLine());
file.close();
}
catch(IOException e) { }
}
else
System.out.println("can't read file");
}
////////返回應答消息到server
public void sendText(String text) {
try {
if (masterProxy == null) {
masterProxy = getAgletContext().getAgletProxy(homeURL, aid);
}
//masterProxy.sendMessage(new Message("text", name + " : " + text));
masterProxy.sendMessage(new Message("text",text));
}
catch (Exception ex) {
ex.printStackTrace();
}
}
private void print(String m) {
System.out.println("Receiver : " + m);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -