⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecmproxy.java

📁 IBM AGLET及JAVA实现的电子商务系统源码
💻 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 + -