Olá Javanes, Para rodar sua aplicacao em uma unica maquina vc pode abrir duas janelas do dos e executar o cliente em uma e o server na outro, mas vc tera que trocar os codigos: > Naming.rebind("rmi://localhost:1099/CalculatorService",c); -> > Naming.rebin("CalculatorService",c); > > > Naming.lookup("rmi://remotehost/CalculatorService"); - > > Naming.lookup("CalculatorService"); > > Rodolfo D. Dias Depto Sistemas Companhia Liberty-Paulista Tel.:(011) 5503-4060 e-mail:[EMAIL PROTECTED] [EMAIL PROTECTED] > ---------- > De: Javanês[SMTP:[EMAIL PROTECTED]] > Enviada: Sexta-feira, 17 de Março de 2000 10:01 > Para: SouJava; Sun; GOJUG > Assunto: [SouJava-J] RMI - rmiregistry > > Caros Amigos, > > Esta pode ser uma pergunta idiota, mas antes tirar a dúvida a permanecer > calado. > É possível implementar RMI em apenas em 1 computador? O Server e o > Client no mesmo computador? > > Comecei a estudar apartir do tutorial da sun, e estou tentando rodar um > exemplo e estou tendo problemas, no tutorial relata que somente com > essas quatro classes é possível rodar um exemplo.. > Os códigos que estamos utilizando são esses, em um único computador. > > Temos as classes: > public interface Calculator extends java.rmi.Remote > { > public long add(long a, long b) throws java.rmi.RemoteException; > public long sub(long a, long b) throws java.rmi.RemoteException; > public long mul(long a, long b) throws java.rmi.RemoteException; > public long div(long a, long b) throws java.rmi.RemoteException; > } > ------------------------- > public class CalculatorImpl extends java.rmi.server.UnicastRemoteObject > implements Calculator > { > public CalculatorImpl() throws java.rmi.RemoteException { > super(); > } > public long add(long a, long b) throws java.rmi.RemoteException { > return a + b; > } > public long sub(long a, long b) throws java.rmi.RemoteException { > return a - b; > } > public long mul(long a, long b) throws java.rmi.RemoteException { > return a * b; > } > public long div(long a, long b) throws java.rmi.RemoteException { > return a / b; > } > } > --------------------------- > import java.rmi.Naming; > > public class CalculatorServer > { > public CalculatorServer() { > try { > Calculator c = new CalculatorImpl(); > Naming.rebind("rmi://localhost:1099/CalculatorService",c); > } > catch (Exception e) { > System.out.println("Trouble: " + e); > } > } > > public static void main(String args[]) { > new CalculatorServer(); > } > } > --------------------------------------- > import java.rmi.Naming; > import java.rmi.RemoteException; > import java.net.MalformedURLException; > import java.rmi.NotBoundException; > > public class CalculatorClient > { > public static void main(String[] args) { > try { > Calculator c = (Calculator) > Naming.lookup("rmi://remotehost/CalculatorService"); > System.out.println( c.sub(4, 3) ); > System.out.println( c.add(4, 5) ); > System.out.println( c.mul(3, 6) ); > System.out.println( c.div(9, 3) ); > } > catch (MalformedURLException murle) { > System.out.println(); > System.out.println("MalformedURLException"); > System.out.println(murle); > } > catch (RemoteException re) { > System.out.println(); > System.out.println("RemoteException"); > System.out.println(re); > } > catch (NotBoundException nbe) { > System.out.println(); > System.out.println("NotBoundException"); > System.out.println(nbe); > } > catch (java.lang.ArithmeticException ae) { > System.out.println(); > System.out.println("java.lang.ArithmeticException"); > System.out.println(ae); > } > } > } > > São compilas as classes, criei as camadas Stub e Esqueleto apartir da > linha de comando (rmic CalculatorImpl), até aí tudo bem. > O problema começa quando tento executar o rmiregistry mas uma excecao é > gerada: > > java.rmi.server.ExportException: Listen failed on port: 1099; nested > exception is: > java.net.SocketException: Option unsupported by protocol: create > java.net.SocketException: Option unsupported by protocol: create > at java.net.PlainSocketImpl.socketCreate(Native Method) > at java.net.PlainSocketImpl.create(PlainSocketImpl.java:70) > at java.net.ServerSocket.<init>(ServerSocket.java:170) > at java.net.ServerSocket.<init>(ServerSocket.java:86) > at > sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMI > DirectSocketFactory.java:34) > at > sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(RMI > MasterSocketFactory.java:316) > at > sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:550) > at > sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:202) > at > sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:174) > at > sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:323) > at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:123) > at > sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:118) > at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:99) > at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:85) > at sun.rmi.registry.RegistryImpl.main(RegistryImpl.java:315) > > Alguém sabe me dizer o que está errado? > Obrigado. > > --------------------------- LISTA SOUJAVA --------------------------- > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > [dúvidas mais comuns: http://www.soujava.org.br/faq.htm] > [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] > --------------------------------------------------------------------- > --------------------------- LISTA SOUJAVA --------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP [dúvidas mais comuns: http://www.soujava.org.br/faq.htm] [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm] ---------------------------------------------------------------------
RE: [SouJava-J] RMI - rmiregistry
Dias, Rodolfo Duarte (BR-Paulista Seguros) Fri, 17 Mar 2000 05:21:55 -0800
- [SouJava-J] RMI - rmiregistry Javanês
- Re: [SouJava-J] RMI - rmir... Dias, Rodolfo Duarte (BR-Paulista Seguros)
- Re: [SouJava-J] RMI - ... Javanês