Child pages
  • RMI MarshalException
Skip to end of metadata
Go to start of metadata

Sziasztok!

Végső elkeseredésemben már ide is írok, háta van errefelé Java RMI fan. A problémám a következő:
Van egy osztott rendszerem - szerver algoritmusokat futtat, számol, több szálon; kliens feladatokat indít el és folyamatosan csekkolja az eredményt. Van ugye egy közös interfész és egy Result object. Mind2 jelen van mind2 oldalon.

Az egész architektúra nagyon szépen működött, soha egyetlen elszállás, vagy kivétel. Egyik nap viszont a megrendelőm hív, hogy elszáll nála az alábbi kivétellel a cucc és hogy miért. Nálam 100-ból 1-szer fordul elő, míg nála 100-ból 100-szor! ADSL kapcsolaton gyakrabban, nekem az egyetemni hálón soha nem száll el. Hozzá kell tennem , hogy semmi, azaz SEMMI nem változott a kódon, egyik oldalon sem. Kíváncsi volnék, hogy valaki találkozott -e már ezzel a problémával. Köszönöm a válaszokat!

A kivétel:

java.rmi.MarshalException: error marshalling arguments; nested exception is:
javax.net.ssl.SSLException: Connection has been shutdown:
javax.net.ssl.SSLException: java.net.SocketException: Connection reset by
peer: socket write error
      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

7 Comments

  1. A kód változatlansága mellett is lehet jópár hibaok. Pl. hogy másféle platformon (oprendszer, jre verzió) futtatják, vagy más a használt hálózat késleltetése.
  2. Mekkora adatok mozognak és meddig? Mert olybá tűnik, hogy a kapcsolat bezárul (timeout-ot érdemes megnézni), mielőtt az adatok leérnének, és félig leérkezett RMI adatból nyilvánvaló, hogy nem lehet megcsinálni a (de)marshallt.
  3. Unknown User (frimen)

    Elkövettél egy hibát... az egyik, hogy RMI-t használtál, ugyanis az RMI egy rakás szar, csak félig (vagy addig sem) van a programozó kezében a kapcsolat kezelés (lásd socket és társai).

    A másik, hogy szerintem ide felesleges az SSL, mert ha snifelik is a forgalmat, mit csinál az objectom "stream"-mel? Az SSL ellen szól az is, hogy ha nem korrekt az signoja akkor gond lehet.. elszállhat 100-bol 100x...
  4. Sziasztok, sajnos RMI-vel kell foglalkoznom, és jött is a classnotfound vs marshalexeption...
    A történet úgy néz ki, hogy volt egy működő rmi kapcsolat. Másik fejlesztőkörnyezetben(eclipse -> ibm rational software architect (ami végülis szintén eclipse kicsit alakítva)) meg már nem működik, pedig a forráskódon nem volt változtatás. Az exeption egy "szokásos":
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
        java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
        java.lang.ClassNotFoundException: és itt a remote object van. jelen esetben Compute

    A sun oldalán van hozzá egy tutorial. Kínomban 1 az egyben becopypasteltem azt, de ugyan ez a hiba. Ha rákeresek, legtöbbször valami java.rmi.server.codebase propertyvel hozzák kapcsolatba. De ahol működött ott semmi ilyet nem állítottam.
    Sajnos a teljes projektet nem tudom feltölteni, mivel munkhelyen ezt sem lehet, de azt leírhatom hogy raktam össze.
    A forráskód innen van: http://java.sun.com/docs/books/tutorial/rmi/index.html
    Simán copypastelve.

    workspace/Rmi/
    /src itt van az össes osztály csak úgy nyersen package nélkül
    /resources itt egy no.policy nevű fájl aminek a tartalma:

    grant {
        permission java.security.AllPermission;
    };

    /bin ugye a classok

    Ezen kívül annyi beállítás volt még hogy 1.5-ös javaval kéne mennie.

    Valaki tudna segíteni? Fontos lenne...
  5. És mikor jön ez a kivétel? Amikor elindítod a szervert vagy amikor a klienssel akarsz rámenni?

    Java verzió be van állítva?
  6. amikor a szervert indítom.
    A projecten be van állítva az 1.5
    Hol kéne még beállítani a java verziót?
  7. most ezen túljutottam nemtudom hogy. Most az van, hogy a rmiregistryre való kapcsolódáskor állandóan access denied-et kapok, holott nincs tűzfal, és be van állítva minden engedélyes policy is.