Вы находитесь на странице: 1из 3

Problemas RMI e Solues

Prof. Valdemar Neto


Sistemas Distribudos 1 Engenharia da Computao 2011/1
Problema

SO

Soluo

Exception in thread "main"


Linux
java.security.AccessControlException: access
denied (java.net.SocketPermission 127.0.0.1:1099
connect,resolve)
at
java.security.AccessControlContext.checkPermissio
n(AccessControlContext.java:323)
at
java.security.AccessController.checkPermission(Ac
cessController.java:546)
at
java.lang.SecurityManager.checkPermission(Securi
tyManager.java:532)
at
java.lang.SecurityManager.checkConnect(Security
Manager.java:1034)
at java.net.Socket.connect(Socket.java:524)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at
sun.rmi.transport.proxy.RMIDirectSocketFactory.cr
eateSocket(RMIDirectSocketFactory.java:22)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.c
reateSocket(RMIMasterSocketFactory.java:128)
at
sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCP
Endpoint.java:595)
at
sun.rmi.transport.tcp.TCPChannel.createConnectio
n(TCPChannel.java:198)
at
sun.rmi.transport.tcp.TCPChannel.newConnection(
TCPChannel.java:184)
at
sun.rmi.server.UnicastRef.newCall(UnicastRef.java
:322)
at
sun.rmi.registry.RegistryImpl_Stub.rebind(Unknow
n Source)
at
SampleServerImpl.main(SampleServerImpl.java:28
)

No tinha criado o arquivo de


polticas de segurana do Java e
no tinha passado o parmetro
-Djava.security.policy=<nomeA
rquivoPolitica> na hora de
rodar o servidor. Ao fazer isso,
este erro foi sanado (mas
apareceu outro, o de baixo).

Remote exception: java.rmi.ServerException:

No coloquei os parmetros

Linux

Este erro aconteceu tambm ao


tentar rodar o cliente sem
colocar os parmetros de
segurana. Logo, obrigatrio,
pelo menos em Linux, para
cliente e para servidor rodarem.

RemoteException occurred in server thread; nested


exception is:
java.rmi.UnmarshalException: error
unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException:
SampleServerImpl_Stub

necessrios para a Java Virtual


Machine encontrar o diretrio
onde esto as classes do
Servidor. Ao fazer isso como
segue abaixo, o erro foi sanado
e o servidor comeou a rodar
esperando por conexes:
java -cp .
-Djava.rmi.server.codebase=file
:///home/alunoinf/Documents/S
DAulaPratica/
-Djava.rmi.server.hostname=loc
alhost
-Djava.security.policy=policy.al
l SampleServerImpl

Unrecognized option: Could not create the Java virtual machine.

Linux

Tinha colocado um espao entre


o - e o cp, a no iniciou a
mquina virtual.

NotBound: java.rmi.NotBoundException:
//localhost/SAMPLE-SERVER

Linux

Faltava colocar o protocolo de


comunicao na hora de fazer o
binding e na hora de fazer o
lookup. Tinha de colocar
explicitamente:
rmi://localhost/Servico, no caso
de estar fazendo local. Ao fazer
isso no cliente e no servidor,
deu certo. =)

Error in lookup: java.rmi.ConnectException:


Connection refused to host: 127.0.0.2; nested
exception is:
java.net.ConnectException: Connection
refused

Linux

Aconteceu na hora de tentar


rodar o cliente em um
computador remoto (no
localhost).
Uma soluo encontrada em
<http://www.thatsjava.com/java
-core-apis/40550/> foi
modificar o arquivo /etc/hosts
para e substituir a linha que
possui 127.0.0.2 pelo IP onde
est o Server. Mas como no
tenho permisso para isso no
computador, no deu pra fazer
isso.

Exception in thread "main"


Linux
java.security.AccessControlException: access
deniejava.net.SocketPermission 127.0.0.1:1099
connect,resolve)
at
java.security.AccessControlContext.checkPermissio
n(AccessControlCoxt.java:323)

Especificar
-Djava.rmi.server.hostname
para rodar o cliente fez surgir
esta exceo.
FALTAVA COLOCAR UM
ESPAO ENTRE A OPO

at
java.security.AccessController.checkPermission(Ac
cessController.ja546)
at
java.lang.SecurityManager.checkPermission(Securi
tyManager.java:532
at
java.lang.SecurityManager.checkConnect(Security
Manager.java:1034)
at java.net.Socket.connect(Socket.java:524)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at
sun.rmi.transport.proxy.RMIDirectSocketFactory.cr
eateSocket(RMIDirSocketFactory.java:22)
at
sun.rmi.transport.proxy.RMIMasterSocketFactory.c
reateSocket(RMIMasSocketFactory.java:128)
at
sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCP
Endpoint.java:595)
at
sun.rmi.transport.tcp.TCPChannel.createConnectio
n(TCPChannel.java:)
at
sun.rmi.transport.tcp.TCPChannel.newConnection(
TCPChannel.java:184
at
sun.rmi.server.UnicastRef.newCall(UnicastRef.java
:322)
at
sun.rmi.registry.RegistryImpl_Stub.lookup(Unkno
wn Source)
at SampleClient.main(SampleClient.java:17)
Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new
native thread

DO POLICY E O PRXIMO
PARMETRO.