RMI/Problemas em carregar objeto servidor de métodos remoto

2 respostas
E

Pessoal! Tudo bem! Estou aplicando RMI em uma aplicação, porém estou com problemas para levantar o meu objeto servidor de métodos. É o seguinte, está dando um ClassNotFoundException pra minha classe stub. Mas a classe existe estando gerada de acordo no pacote. Olhem só a exception:

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
	java.lang.ClassNotFoundException: br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl_Stub
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
	at sun.rmi.transport.Transport$1.run(Transport.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
	at java.lang.Thread.run(Thread.java:595)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
	at java.rmi.Naming.rebind(Naming.java:160)
	at br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl.instanciarMonitorServidor(MonitorServidorImpl.java:43)
	at br.com.furb.mvclego.model.FrameMonitorServidor$1.actionPerformed(FrameMonitorServidor.java:93)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
	at java.awt.Component.processMouseEvent(Component.java:5488)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
	at java.awt.Component.processEvent(Component.java:5253)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3955)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1766)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
	java.lang.ClassNotFoundException: br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl_Stub
	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
	at sun.rmi.transport.Transport$1.run(Transport.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassNotFoundException: br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl_Stub
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:242)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
	at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
	at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
	at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	... 9 more

O método que estou tendo problema é o seguinte em meu código: ( quando relaciono o endereço do servidor ao objeto servidor no registro rmi )

public void instanciarMonitorServidor( String ipServidor ) throws RemoteException, MalformedURLException, HibernateException
    {
        MonitorServidorImpl servidor = new MonitorServidorImpl(); // Classe // que implementa a interface remota e extends UnicastRemoteObject 
            
        String endObjetoRemoto = "//" + ipServidor + "/MonitorEventos";
            
        Naming.rebind( endObjetoRemoto, servidor ); // Aqui ocorre a  //exception
            
        model = new HibernateModel(); // objeto utilitário de persistência
        model.configure(); // recupera informações de hibernate.cfg.xml e //configura a Fabrica de Sessões
    }

Pesso que me ajudem por favor! Muito obrigado!

Sds,

Pablo

2 Respostas

E

“Einsamkeit”:
Pessoal! Tudo bem! Estou aplicando RMI em uma aplicação, porém estou com problemas para levantar o meu objeto servidor de métodos. É o seguinte, está dando um ClassNotFoundException pra minha classe stub. Mas a classe existe estando gerada de acordo no pacote. Olhem só a exception:

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
	java.lang.ClassNotFoundException: br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl_Stub
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
	at sun.rmi.transport.Transport$1.run(Transport.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
	at java.lang.Thread.run(Thread.java:595)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:343)
	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
	at java.rmi.Naming.rebind(Naming.java:160)
	at br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl.instanciarMonitorServidor(MonitorServidorImpl.java:43)
	at br.com.furb.mvclego.model.FrameMonitorServidor$1.actionPerformed(FrameMonitorServidor.java:93)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
	at java.awt.Component.processMouseEvent(Component.java:5488)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
	at java.awt.Component.processEvent(Component.java:5253)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3955)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1766)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
	java.lang.ClassNotFoundException: br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl_Stub
	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240)
	at sun.rmi.transport.Transport$1.run(Transport.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassNotFoundException: br.com.furb.mvclego.monitor.servidor.MonitorServidorImpl_Stub
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:242)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
	at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
	at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
	at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
	... 9 more

O método que estou tendo problema é o seguinte em meu código: ( quando relaciono o endereço do servidor ao objeto servidor no registro rmi )

public void instanciarMonitorServidor( String ipServidor ) throws RemoteException, MalformedURLException, HibernateException
    {
        MonitorServidorImpl servidor = new MonitorServidorImpl(); // Classe // que implementa a interface remota e extends UnicastRemoteObject 
            
        String endObjetoRemoto = "//" + ipServidor + "/MonitorEventos";
            
        Naming.rebind( endObjetoRemoto, servidor ); // Aqui ocorre a  //exception
            
        model = new HibernateModel(); // objeto utilitário de persistência
        model.configure(); // recupera informações de hibernate.cfg.xml e //configura a Fabrica de Sessões
    }

Pesso que me ajudem por favor! Muito obrigado!

Sds,

Pablo

Ei!! Ninguém vai me ajudar?! Por favor, comentem. Grato!!

Pablo

G

cara, esse problema acontece normalmente com o Windows, quando voce tem outros aplicativos que tem o JRE setado no classpath …

Acontece que tanto para compilar com o rmic quanto para startar o registry voce tem que passar o caminho completo .

Por exemplo:
[color=“green”]C:\j2sdk1.4.2_10\bin\rmic br.com.rmi.RmiImplementation, e
C:\j2sdk1.4.2_10\bin\rmiregistry[/color]

E também voce deve garantir que voce esta startando o rmiregistry a partir do diretorio que poderão conter seus “packages” com as classes .

Exemplo: No diretorio C:\RMI temos o “pacote” br.com.rmi e dentro teremos a classe “RmiImplementation”.
então devemos startar o rmi a partir do diretório RMI .

Exemplo [color=“red”]C:\RMI> C:\j2sdk1.4.2_10\bin\rmiregistry[/color]

Criado 10 de maio de 2005
Ultima resposta 30 de mai. de 2006
Respostas 2
Participantes 2