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

📄 finderproxy.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 finderProxy extends Aglet {

    transient String name = "Unknown"; ////name 用于表示本地context
    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;
	 
	 
    public finderProxy() {
    }

    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("finderServer") ){ ////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();
				}
	      }  
               catch(Exception e){
                                 e.printStackTrace();
                                  }
              }//end onarrival()           	
		});//end listerner
		
    }//end function;

    public void onDisposing() {
		
    }

    public boolean handleMessage(Message msg) {
			/*
		else if (msg.sameKind("okConnect")) { 
			try{
				sid= (AgletID)msg.getArg();
	   		System.out.println("connect with server and server id is:"+sid);
				serverProxy=getAgletContext().getAgletProxy(sid);
				System.out.println("send the query to server");
	    		serverProxy.sendAsyncMessage(new Message("dbQuery",str) );
      	}
      	catch(Exception e){
      		System.out.println("serverProxy message error");
      	}
      }*/
		 if (msg.sameKind("sendQuery")) {     /////接受master传来的消息,并送给server  	
	    	String str=(String)msg.getArg();
	    	System.out.println("finderProxy receive query from servelet: "+str);
	
	    	//测试安全性fileRead();
	    	
	    	//////////
	    	try{
	    		String[] mm=new String[2];
	    		mm[0]=(String)self_id.toString();
	    		mm[1]=str;
	    		System.out.println("connect with server and send query "+mm[0]+"  "+mm[1]);
	    		
	    		if (serverProxy == null) {
	     	  	 	serverProxy = getAgletContext().getAgletProxy(sid);   ///获取dbServer代理
	   		}
		 	 	Object result=serverProxy.sendAsyncMessage(new Message("connect",mm) ).getReply();
		 		msg.sendReply(result);    ///返回查询结果到master
 
			/*
	    	serverProxy=getAgletContext().getAgletProxy(sid);
	    	serverProxy.sendAsyncMessage(new Message("connect",mm) );
	    	System.out.println("slave have send message to server");
	    	
	    	//serverProxy=getAgletContext().getAgletProxy(sid);	    	
	    	//System.out.println("send the query to server");
	    	//serverProxy.sendAsyncMessage(new Message("dbQuery",str) );
      	*/
      	}
      	catch(Exception e){
      		e.printStackTrace();
      		System.out.println("serverProxy message error");
      	}
         ////
	    	//dbDisplay(str);	
	    	//window.appendText(str);
	    	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);
	   		 }
	    		//masterProxy.sendMessage(new Message("text", name + " : " + text));
		 	// masterProxy.sendMessage(new Message("getResult",records));
				msg.sendReply(records);
				dispose();
				//this.sendMessage(new Message("bye","kill myself") );
			} 
			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 + -