Analisar o codigo!

7 respostas
Slipguedes
import java.rmi.registry.Registry;

import java.rmi.registry.LocateRegistry ;

import java.rmi.RemoteException;

import java.rmi.AlreadyBoundException;

import java.rmi.server.UnicastRemoteObject;

import java.io.IOException;

public class ServidorImpl implements Servidor{

private MeuBean obj;

public ServidorImpl(){

obj = new MeuBean( );

inicia();

}

public MeuBean getBean(){

return obj;   }

public void inicia(){

try{         //Exporta o objeto remoto

Servidor stub = (Servidor) UnicastRemoteObject.exportObject (this, 0);

//Liga o stub do objeto remoto no registro, e inicia o RMIRegistry na porta 1000

Registry registry = LocateRegistry.createRegistry(1000);

//Dá um nome pra ele no registro

registry.bind (Servidor, stub);

System.out.println (Servidor iniciado?);

}catch(RemoteException Re){

System.out.println(Re.getMessage());

}catch(AlreadyBoundException ABe){

System.out.println(ABe.getMessage());

}catch(IOException IOe){

System.out.println(IOe.getMessage());

}

}

public static void main(String args[]){

new ServidorImpl();

}

}

Estou com um problema com esse codigo, uma hora ele funciona e outras ñ. Alguem poderia me dizer se tem algum erro? E como eu poderia melhora-lo. Obs: MeuBean implements Serializable.

7 Respostas

G

ola amigo da proxima vez utilize as tags code, facilita a visualização
por exemplo seu codigo utilizando as tags code ficariam assim

import java.rmi.registry.Registry; 
import java.rmi.registry.LocateRegistry ; 
import java.rmi.RemoteException; 
import java.rmi.AlreadyBoundException; 
import java.rmi.server.UnicastRemoteObject; 
import java.io.IOException; 
public class ServidorImpl implements Servidor{ 
private MeuBean obj; 
public ServidorImpl(){ 
obj = new MeuBean( ); 
inicia(); 
} 
public MeuBean getBean(){ 
return obj; } 
public void inicia(){ 
try{ //Exporta o objeto remoto 
Servidor stub = (Servidor) UnicastRemoteObject.exportObject (this, 0); 
//Liga o stub do objeto remoto no registro, e inicia o RMIRegistry na porta 1000 
Registry registry = LocateRegistry.createRegistry(1000); 
//Dá um nome pra ele no registro 
registry.bind ("Servidor", stub); 
System.out.println ("Servidor iniciado?"); 
}catch(RemoteException Re){ 
System.out.println(Re.getMessage()); 
}catch(AlreadyBoundException ABe){ 
System.out.println(ABe.getMessage()); 
}catch(IOException IOe){ 
System.out.println(IOe.getMessage()); 
} 
} 
public static void main(String args[]){ 
new ServidorImpl(); 
} 
}

fika a dica

vlws

fiaux

Use o debug da sua IDE.

Slipguedes

Ele esta executando mas ñ espera a conexão do cliente e encerra logo. Vc saberia pq?

FilhoDoRei

Amigo tenta utilizar Threads uma para o Servidor e uma para a aplicação cliente.

Duvidas posta ai! Falows!

Slipguedes

FilhoDoRei:
Amigo tenta utilizar Threads uma para o Servidor e uma para a aplicação cliente.

Duvidas posta ai! Falows!


O problema eh que ñ tenho a minima ideia de como fazer isso. Se vc poder posta algum codigo para q eu possa analisar agradeço. VAleu

FilhoDoRei

Affffffffffffff, vou tentar te ajudar só que eu fiz com ServerSocket e Socket ai vai os exemplos:

/**
 * @(#)ServidorThread.java
 *
 *
 * @author Lucas Lopes Nunes
 * @version 1.00 2008/4/25
 */
 
import java.io.*;
import java.net.*;  
 
public class ServidorThread extends Thread{	
	ServerSocket servidor;
	Socket socket;
	DataInputStream in;
	DataOutputStream out;
			
	public ServidorThread(){
		start();
	}
	public void run(){			
		try{
			System.out.println("Aguardando conexão... ");		
			servidor = new ServerSocket(80);	
			socket = servidor.accept();
			
			System.out.println("Conexão estabelecida...");	
			in = new DataInputStream(socket.getInputStream());
			out = new DataOutputStream(socket.getOutputStream());
			while(socket.isConnected()){				
				System.out.println("Servidor: Conectado.");
				sleep(1000);
			}	
			System.out.println("Servidor: Desconectado.");		
		} catch(Exception e){
			e.printStackTrace();
		} finally{
			try{
				servidor.close();
				socket.close();
				in.close();
				out.close();
			} catch(Exception se){
				se.printStackTrace();
			}			
		}
	}
	public static void main(String []args){
		ServidorThread st = new ServidorThread();
	}
}

E o cliente:

/**
 * @(#)ClienteSocket.java
 *
 *
 * @author Lucas Lopes Nunes
 * @version 1.00 2008/4/25
 */
import java.io.*;
import java.net.*;   

public class ClienteThread extends Thread{	
	Socket cliente;
	DataInputStream in;
	DataOutputStream out;
		
	public ClienteThread(){
		start();
	}
	public void run(){			
		try{		
			cliente = new Socket("localhost",80);
			in = new DataInputStream(cliente.getInputStream());
			out = new DataOutputStream(cliente.getOutputStream());
			while(cliente.isConnected()){				
				System.out.println("Cliente: Conectado.");
				sleep(1000);
			}
			System.out.println("Cliente: Desconectado.");
		} catch(Exception e){
			e.printStackTrace();
		} finally{
			try{					
				cliente.close();
				in.close();
				out.close();
			} catch(Exception se){
				se.printStackTrace();
			}
		
		}
	}
	public static void main(String []args){
		ClienteThread cliente = new ClienteThread();
	}
}

Pra testar vc roda primeiro o Servidor depois o Cliente, vê se isso te ajuda ou pega a ideia e adapta pro seu bêlê.

Duvidas posta ai! Falowwsss

Slipguedes

FilhoDoRei:
Affffffffffffff, vou tentar te ajudar só que eu fiz com ServerSocket e Socket ai vai os exemplos:

/**
 * @(#)ServidorThread.java
 *
 *
 * @author Lucas Lopes Nunes
 * @version 1.00 2008/4/25
 */
 
import java.io.*;
import java.net.*;  
 
public class ServidorThread extends Thread{	
	ServerSocket servidor;
	Socket socket;
	DataInputStream in;
	DataOutputStream out;
			
	public ServidorThread(){
		start();
	}
	public void run(){			
		try{
			System.out.println("Aguardando conexão... ");		
			servidor = new ServerSocket(80);	
			socket = servidor.accept();
			
			System.out.println("Conexão estabelecida...");	
			in = new DataInputStream(socket.getInputStream());
			out = new DataOutputStream(socket.getOutputStream());
			while(socket.isConnected()){				
				System.out.println("Servidor: Conectado.");
				sleep(1000);
			}	
			System.out.println("Servidor: Desconectado.");		
		} catch(Exception e){
			e.printStackTrace();
		} finally{
			try{
				servidor.close();
				socket.close();
				in.close();
				out.close();
			} catch(Exception se){
				se.printStackTrace();
			}			
		}
	}
	public static void main(String []args){
		ServidorThread st = new ServidorThread();
	}
}

E o cliente:

/**
 * @(#)ClienteSocket.java
 *
 *
 * @author Lucas Lopes Nunes
 * @version 1.00 2008/4/25
 */
import java.io.*;
import java.net.*;   

public class ClienteThread extends Thread{	
	Socket cliente;
	DataInputStream in;
	DataOutputStream out;
		
	public ClienteThread(){
		start();
	}
	public void run(){			
		try{		
			cliente = new Socket("localhost",80);
			in = new DataInputStream(cliente.getInputStream());
			out = new DataOutputStream(cliente.getOutputStream());
			while(cliente.isConnected()){				
				System.out.println("Cliente: Conectado.");
				sleep(1000);
			}
			System.out.println("Cliente: Desconectado.");
		} catch(Exception e){
			e.printStackTrace();
		} finally{
			try{					
				cliente.close();
				in.close();
				out.close();
			} catch(Exception se){
				se.printStackTrace();
			}
		
		}
	}
	public static void main(String []args){
		ClienteThread cliente = new ClienteThread();
	}
}

Pra testar vc roda primeiro o Servidor depois o Cliente, vê se isso te ajuda ou pega a ideia e adapta pro seu bêlê.

Duvidas posta ai! Falowwsss


Valeu kra pelo codigo vou dar uma estudada e entender o assunto. Obrigado.

Criado 25 de abril de 2008
Ultima resposta 25 de abr. de 2008
Respostas 7
Participantes 4