RMI Hello world Ajudem-me

5 respostas
emanoel.almeida

Pesoal, estou tentando fazer um projetinho que use rmi. Tenteu usar um tutorial daqui do guj mas não funcionou. Alguem tem qualquer projetinho rmi que funcione pra postar o codigo?

Agradeço. Abraço a tosdos

5 Respostas

ramilani12

o que nao funcionou no seu projeto?

emanoel.almeida

OLá.

Essas são as classes. Todas no mesmo diretório.

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Mensageiro extends Remote {
	
	public void enviarMensagem(String msg) throws RemoteException;

	public String lerMensagem() throws RemoteException;

}
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.NotBoundException;
import java.net.MalformedURLException;

public class MensageiroClient {

		public static void main(String a[]){
		
				try {
					Mensageiro m = (Mensageiro) Naming.lookup("rmi://localhost/MensageiroService");
					System.out.println(m.lerMensagem());
					m.enviarMensagem("Hello World!");
					
				} catch (MalformedURLException e) {
					 System.out.println();
					 System.out.println( "MalformedURLException: " + e.toString() );
				} catch (RemoteException e) {
					 System.out.println();
					 System.out.println( "RemoteException: " + e.toString() );
				} catch (NotBoundException e) {
					 System.out.println();
					 System.out.println( "NotBoundException: " + e.toString() );
				} catch (Exception e){
					System.out.println();
					System.out.println( "Exception: " + e.toString() );
				}

		
		}
}
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class MensageiroImpl extends UnicastRemoteObject implements Mensageiro {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public MensageiroImpl() throws RemoteException {
		super();
	}
	
	public void enviarMensagem(String msg) throws RemoteException {
		System.out.println(msg);
	}
	
	public String lerMensagem() throws RemoteException {
		return "This is not a Hello World! Message";
	}
	
}
import java.rmi.Naming;

public class MensageiroServer {

	public MensageiroServer(){
		
		
		try {
			
			Mensageiro m = new MensageiroImpl();
			Naming.rebind("rmi://localhost:1099/MensageiroService", m);
		
		} catch (Exception e) {
			
			System.out.println("Trouble: " + e);
		}
	}
	public static void main(String a[]){
		new MensageiroServer();
	}
}

Meus Precedimentos foram:

COMPILAR AS CLASSES
javac MensageiroImpl.java
javac Mensageiro.java
javac MensageiroServer.java
javac MensageiroClient.java

GERAR ARQUIVOS STUBS E SKELETONS
rmic MensageiroImpl
Obs: O resultado do comando acima gerou apenas um aquivo chamado MensageiroImpl_Stub.class FALTOU o skeletons(Não sei o que e se fiz errado)

GEREI O RMI Registry
rmiregistry

TENTO EXECUTAR O MensageiroServer Num segundo console.
java MensageiroServer
Obs: O resultado do comando acima me retorna uma exeção: Trouble: java.rmi.ServerError: An Error is thrown while processing the invocation on the server; nested exception is:
java.lang.ClassFormatError: Mensageiro (unrecognized class file version)

TENTO EXECUTAR O MensageiroClient EM OUTRO CONSOLE
java MensageiroClient
Obs: O result do comando acima gera uma exeção: NotBoundException: java.rmi.NotBoundException: MensageiroService

---------------------------------------------------------------------------------

Só Pessoal, ja já fico fustrado ja é o quarto tutorial que sigo a risca e nada.
Gostaria muito da ajuda de vocês.

Abraço.

ramilani12

Qual a versão da sua JDK , a partir da versao 5.0 não é gerado mais os Skeletons
Pelo primeiro erro vc compilou na 1.5 e tentou executar numa JRE 1.4 ou algo parecido.

emanoel.almeida

Amigo Muito Obrigado. Foi Justamente isso que aconteceu. No meu pc tinha o ubuntu 6.06. Dai eu instalei o jdk6 e configurei as variáveis de ambiente, porem o ubuntu ja veio com uma jre1.4. e quando eu tentava executar ele executava justamente por ela. Solução: Tomei vergonha e instalei o ubuntu 8.04 que vem sem java nenhum e instalei a jdk/re6.

Abraço e muito obrigado.

E

Cara é o Seguinte: Em qualquer versão para gerar os stubs e skeletons

rmic -v1.1 MensageiroImpl

[email removido]

Criado 17 de agosto de 2008
Ultima resposta 11 de fev. de 2010
Respostas 5
Participantes 3