[ afrodom @ 03.06.2009. 10:28 ] @
Jednostavno nema sanse da registrujem partikularni objekat u rmi naming registry?! Cim to pokusam dobijam 1. Caused by : java.rmi.UnmarshalException: error unmarshaling arguments; nested exception is : java.langClassNotFoundException : HelloImpl_Stub . To je jedan prosta vezba, naobicnije korscenje rmi-a, za koje bih se mogao zakleti da je radilo davno. Medjutim, cui=o sam ja i JDK zna da zeza, po tom pitanju. Ali opet, voleo bih da mi neko ukaze na propust koji sam napravio. Dakle pomenuta greska se javlja svaki put, na svakom primeru, koji sam sa jedno 10 sajtova pokusavao da aktiviram. Evo jedan obican primer koji takodje proizvodi dati exception : 1. interface code] import java.rmi.*; public interface Hello extends Remote { public String getGreeting() throws RemoteException; } [/code] 2.implementation class 2.Create implementatio class; Code: import java.rmi.*; import java.rmi.server.*; public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws RemoteException{ //No action needed here. } public String getGreeting() throws RemoteException { return ("Hello there!"); } } 3.Simulacija servera, za 'vezivanje' rmi objekta 3. create server simulation, for naming binding Code: import java.rmi.*; public class HelloServer { private static final String HOST = "localhost"; public static void main(String[] args) throws Exception { //Create a reference to an //implementation object... HelloImpl temp = new HelloImpl(); //Create the string URL holding the //object's name... String rmiObjectName = "rmi://" + HOST + "/Hello"; //(Could omit host name here, since 'localhost' //would be assumed by default.) //'Bind' the object reference to the name... Naming.rebind(rmiObjectName,temp); //Display a message so that we know the process //has been completed... System.out.println("Binding complete...\n"); } } 4.Clijent rmi servisa 4. the client of RMI service Code: import java.rmi.*; public class HelloClient { private static final String HOST = "localhost"; public static void main(String[] args) { try { //Obtain a reference to the object from the //registry and typecast it into the appropriate //type... Hello greeting = (Hello)Naming.lookup("rmi://" + HOST + "/Hello"); //Use the above reference to invoke the remote //object's method... System.out.println("Message received: " + greeting.getGreeting()); } catch(ConnectException conEx) { System.out.println( "Unable to connect to server!"); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); System.exit(1); } } } 5. compilacija classa : Code: javac Hello.java javac HelloImpl.java javac HelloServer.java javac HelloClient.java 6.compilacija Impl. klase korsteci rmic : Code: rmic HelloImpl 7.Startovanje registry servisa, aktivacijom command prompta u root folderu Code: registry 8. poziv server Code: java HelloServer 9.poziv clijenta Code: java HelloClient I kao sto rekoh, pomenuta greska se javlja bez obzira na vezbu. Hvala unapred |