Notify JavaSpaces(Quem entender de JavaSpaces e JINI)

0 respostas
Y

Ola!
Estou tendo dificuldade com o notify no javaspaces. Tentei criar uma calculadora porem ela grava no espaço e o servidor que deveria receber o notify não faz nada .... vejam abaixo:

public static void main(String[] args){
		
		Utilidades var = new Utilidades();
		JavaSpace space = var.conecta();
			
			try{
			
					//remetente
			CalcServerListener servidor = new CalcServerListener(space,"Cliente1"); // avisa para servidor o nome desta maquina e o espaço que ela se encontra
			Server template = new Server(); //cria um template do tipo server
			template.destinatario = "Calculadora"; //esse cliente que enviar algo para o servidor Calculadora
			template.remetente = "Cliente1"; //indentifica-se para o servidor
				
				// notify(tipo do objeto,...,para quem,...,tempo de espera,...)
			space.notify(template, null, servidor, Lease.FOREVER, null); //notifica que vai entrar um objeto do tipo Calculadora
			}
			catch(Exception e){
				e.printStackTrace();
			}
			
			Scanner sc = new Scanner(System.in);
			Server msg = new Server();
			
			System.out.println("************************************************\n");
			System.out.println("Digite o numero da operacao desejada:\n");
			System.out.println("1. Adicao\n");
			System.out.println("2. Subtracao:\n");
			System.out.println("3. Multiplicacao\n");
			System.out.println("4. Divisao\n");
			System.out.println("************************************************\n");
			
			try{
				
				msg.operacao = sc.nextInt();
				System.out.println("Digite o primeiro numero: ");
				
				msg.Operador1 = sc.nextInt();
				
				System.out.println("\nDigite o segundo numero:");
				
				msg.Operador2 = sc.nextInt();
				
				msg.destinatario = "Calculadora"; //define o servidor a quem vai enviar
				msg.remetente = "Cliente1"; //define o nome deste cliente
				
				var.escreve(msg,space);
			
				while(var.continuar()){ /* Aguarda até tudo estar concluido */ }	
				
					
				}
			
			catch(Exception e){
				e.printStackTrace();
			}
	}

CalcServerListener.java

public class CalcServerListener implements RemoteEventListener {
	private boolean ok = false;
 	private JavaSpace space;
	private String remetente; //sistema que envia algo para o servidor
	
public CalcServerListener(JavaSpace space, String remetente) 
    	throws RemoteException 
    	{
        	this.space = space; //espaço que o remetente se encontra
        	this.remetente = remetente;
        
        	//exporta para o RMI
       	 	UnicastRemoteObject.exportObject(this); //retorna o objeto 
        }
 
public boolean getEstado(){
	return this.ok;
}  

public CalcServerListener(){
	
}
//recebe notificações de quando uma entrada está no espaço
public void notify(RemoteEvent evento){
    	
    	//cria um template usando o id da maquina
        Server template = new Server();
        template.remetente = this.remetente; //para tirar a entry do remetente que me notificou
        
        Server request = template;
        
        try{
        	
        	while(!this.ok){
        
            request = (Server)space.read(template, null, Long.MAX_VALUE); //le o primeiro objeto encontrado "postado" pelo remetente
           	if(request.destinatario == "Calculadora"){
           		request = (Server)space.take(request, null, Long.MAX_VALUE); //retira o objeto
           		this.ok = true;
           		}
           	}
          
            
           CalcServer envia = new CalcServer(true);
           envia.filtra(request.operacao,request.Operador1,request.Operador2,request.remetente); //passa os 2 numeros para a função
           
           
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    

}  //classe

ele deveria passar os dois numeros para o servidor fazer o calculo, porem, parece que nem está entrando no notify. O que pode estar errado?
Abraços

[color="red"]*Editado: use BBCode nas suas mensagens no forum. Jair Elton[/color]

Criado 19 de setembro de 2006
Respostas 0
Participantes 1