1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Tomcat + RMI - java.net.MalformedURLException: no protocol

Estou com problemas ao transportar objetos via RMI do server para o client quando o diretório de instalação do Tomcat (server) possui espaços (C:\Program Files\Apache Software Foundation\etc).

Ao invocar o lookup do Registry na classe client:

Registry registry = LocateRegistry.getRegistry("localhost", 9345);

O seguinte erro é exibido:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
    java.net.MalformedURLException: no protocol: Files/Apache
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
Caused by: java.net.MalformedURLException: no protocol: Files/Apache
    at java.net.URL.<init>(URL.java:567)
    at java.net.URL.<init>(URL.java:464)
    at java.net.URL.<init>(URL.java:413)
    at sun.rmi.server.LoaderHandler.pathToURLs(LoaderHandler.java:751)
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:509)
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
    at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1530)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1492)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
    ... 2 more

Alterando o diretório de instalação do Tomcat (removendo espaços) funciona perfeitamente. O problema é que não posso assumir isto como pré-requisito, pois muitos clientes já possuem o Tomcat no diretório Program Files.

Encontrei na documentação da Sun (http://libra.cs.virginia.edu/jdk-doc-1.6/technotes/guides/rmi/codebase.html) algo sobre a propriedade "java.rmi.server.codebase", onde é possível alterar o local no server de onde as classes serão baixadas pelos clientes.

Tentei, sem sucesso, alterar o valor desta propriedade. Alguém já passou por este problema e conseguiu resolver sem alterar o diretório de instalação do Tomcat?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java tomcat ou faça a sua própria pergunta.