[MWy] Unmarshaling problem

Petr Lasak petr.lasak at gmail.com
Thu Mar 27 01:26:54 CET 2008


Krasnou brzkou ranni hodinu,

Po nekolika pokusech a premysleni a hodinek stravenych zjistovani jsem
zjistil:) Problem byl v parametru `pwd` v spoustecim scriptu serveru - na
Win mi nesel, alespon uz mam potuchu, co znamenaji RMI parametry. Toz jsem
se posunul kousek dale.

To Lukas: to ze nemam u NodeImpl uvedene ze dedi od UnicastRemoteObject neni
na skodu...protoze potom ten objekt je mensi, a pokud ho chci pouzivat v
serveru, tak pomoci metody exportObject z nej udelam prave takovy zabaleny
objekt typu UnicastRemoteObject a muzu jej i takto pouzivat. tedy zapis je
cisty.navic tak nepotrebujes dve implementace tehoz, jenom se lisici ze
jedna dedi druha nikoliv.

Ovsem objevil se mi dalsi bubak ve skrini. Muj NodeFactory provadi neco
takoveho

        Node newNode = (Node)UnicastRemoteObject.exportObject( new
NodeImpl() );
        return newNode;

Coz dle RMI znamena, ze pokud jej zavolam v klientovi jako

            oNodeFactory = new NodeFactoryImpl();

a pak cyklus , kde volam
            aNodes [i] = oNodeFactory.createNode();

tak vytvori lokalni kopii, protoze RMI se rozhodne, ze pokud je NodeImpl (
ktera neni dedena od UnicastRemoteObject ) a volam na ni tu create object na
lokalni kopii tak zustane lokalni. Problem je ovsem v tom, ze kdyz to
zavolam s pomoci createNode, tak mi to vytvori Nody, ale pri spojovani
hranami , mi to treba u 5. nebo treba 50, dvojice spadne a vypise

Client raised exception: no such object in table
java.rmi.NoSuchObjectException: no such object in table
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown
Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at NodeImpl_Stub.addNeighbor(Unknown Source)
    at Client.connectAllNodes(Client.java:46)
    at Client.main(Client.java:112)

Pokud nahradim metodu createNode klasickym new, tak to v pohode projde.
Pokud to zavolam s NodeFactory vzdalenou pres

    oNodeFactory = (NodeFactory) Naming.lookup("//localhost/NodeFactory");

Hodi to stejnou chybu. Kdyby mi to pokazde spadlo, tedy myslim u prvni
dvojice, tak si bych hledal chybu nekde v kodu, zapisu ci nejak tak...jenze
mate mne prave to, ze u v debug mi prvnich 5 - 20 dvojic v pohode projde...a
pak to spadne na tenhle error. Metoda createNodes projde, zavola 1000x tu
metodu

A na zaver pridam opet bombonek: Pokud teda pouziji pouze lokalni kopii s
new...a pridam Searcher, ktery je na serveru , tak se mi dostane za odmenu
toto

Client raised exception: Error unmarshaling return header; nested exception
is:
    java.net.SocketException: Connection reset by peer: socket write error
java.rmi.UnmarshalException: Error unmarshaling return header; nested
exception is:
    java.net.SocketException: Connection reset by peer: socket write error
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at SearcherImpl_Stub.getDistance(Unknown Source)
    at Client.searchBenchmark(Client.java:87)
    at Client.main(Client.java:121)
Caused by: java.net.SocketException: Connection reset by peer: socket write
error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)

z cehoz jsem uplne na vetvi. No..asi dalsi den:) Omlouvam se, ze vetram
takto sve problemy, ale hrabu se v jave i RMI druhy den v zivote...a tyhle
errory mne docela desi ( jeden neni pravidelny, proste par vstupu projde a
pak to spadne , a ten dalsi je evidentne neco s pameti, pac ja to nestopnu
).

Almer.

On Wed, Mar 26, 2008 at 8:36 PM, Vlastimil Babka <babka at dsrg.mff.cuni.cz>
wrote:

> almer.sis at seznam.cz wrote:
> > During server start raised exception: RemoteException occurred in server
> thread; nested exception is:
> >       java.rmi.UnmarshalException: error unmarshalling arguments; nested
> exception is:
> >       java.lang.ClassNotFoundException: SearcherImpl_Stub
> >
> Dobry den,
>
> dulezite pro reseni problemu je take uvest na ktere radce ta exception
> nastava... behem exportu, bindu nebo jinde?
> Predpokladam ze behem rebind, coz znamena ze rmiregistry nemuzou najit
> stub, zrejme proto ze jste nezadal nebo zadal spatnou cestu k codebase
> pri spousteni serveru (viz skript run-server z HelloWorld example).
>
> > Co tedy s tim? Chapu ze SearcherImpl_Stub( tedy to vygenerovane pomoci
> rmic ) nelze serializovat. Nechapu proc?
> Duvod je zjevne ona nested exception coz je
> java.lang.ClassNotFoundException...
>
> Hezky vecer,
> Vlastimil Babka
>
>
> _______________________________________________
> MWy mailing list
> MWy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/mwy
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://d3s.mff.cuni.cz/pipermail/nswi080/attachments/20080327/f6634e32/attachment.html>


More information about the NSWI080 mailing list