java - Simple RMI application with client-side exception -


i use java 8 , created simple rmi application have client-side exception don't understand. using eclipse structure of application is:

---rmi_project      -----bin -------client ----------implementazionemyclassserver_stub.class ----------interfacciamyclassserver.class ----------mainclient.class -------server ----------implementazionemyclassserver.class ----------interfacciamyclassserver.class ----------implementazionemyclassserver_stub.class ----------implementazionemyclassserver_skel.class ----------mainserver.class -----src  -------client ----------interfacciamyclassserver.java ----------mainclient.java -------server ----------implementazionemyclassserver.java ----------interfacciamyclassserver.java ----------mainserver.java 

here's code:

interfacciamyclassserver.java

package client;  import java.rmi.*; // necessaria per estendere interfaccia remote  public interface interfacciamyclassserver extends remote {  int somma(int a, int b) throws remoteexception;        //unico metodo } 

implementazionemyclassserver.java

package server;  import java.rmi.*; import java.rmi.server.*;  // per utilizzare unicastremoteobject  public class implementazionemyclassserver extends unicastremoteobject implements interfacciamyclassserver{      private static final long serialversionuid = 1l;      public implementazionemyclassserver() throws remoteexception {      // costruttore         system.out.println("ok1");     }      public int somma(int a, int b) throws remoteexception{      // implementazione metodo somma definito dall'interfaccia         return a+b;     } } 

mainserver.java

package server;  import java.rmi.*;  public class mainserver {      public static void main(string[] args) {          try{             implementazionemyclassserver s1 = new   implementazionemyclassserver();              system.out.println("ok2");              naming.rebind("oggetto1", s1);              system.out.println("ok3");         }         catch(exception e){             system.out.println(e);         }     }  } 

mainclient.java

package client;  import java.net.malformedurlexception; import java.rmi.*;  public class mainclient {      public static void main(string[] args) throws malformedurlexception, remoteexception, notboundexception {          string nomeserver="localhost";        // nome del server o suo    indirizzo ip (per l'esempio localhost=127.0.0.1)         string nomeoggettoremoto="oggetto1";   // nome dell'oggetto remoto da richiedere al server          string protocollo="rmi";              //protocollo usato, può essere: rmi,ftp,http         string urloggettoremoto=protocollo+"://"+nomeserver+"/"+nomeoggettoremoto;  // url completo usato dal client per ottenere riferimento oggetto remoto sul server           // cerca all'url specificato all'interno del registro rmi l'oggetto remoto con nome "oggetto1"         // e restituisce nella var oggetto il suo riferimento per cui nelle istruzioni successive         // è possibile riferirsi all'oggetto remoto come se fosse sul client.         interfacciamyclassserver oggetto = (interfacciamyclassserver) naming.lookup(urloggettoremoto);          // uso oggetto remoto         system.out.println(oggetto.somma(2, 3));     }  } 

i not want download dynamically stub class. why got class stub , skel , copied stub class in bin\client. stub , skel classes followed following procedure:

1) set classpath=c:\javaworkspace\rmi_project\src 2) cd c:\javaworkspace\rmi_project\src 3) c:\javaworkspace\rmi_project\src>javac server/interfacciamyclassserver.java 4) c:\javaworkspace\rmi_project\src>javac  server/implementazionemyclassserver.java 5) c:\javaworkspace\rmi_project\src>rmic -v1.1 server.implementazionemyclassserver 

to run entire application followed procedure:

by prompt1:

1) set classpath=c:/javaworkspace/rmi_project/bin 2) start rmiregistry 3) java server.mainserver 

and got properly:

ok1 ok2 ok3 

by prompt2:

1) set classpath=c:/javaworkspace/rmi_project/bin 2) java client.mainclient 

where got exception:

exception in thread "main" java.lang.classcastexception: server.implementazionemyclassserver_stub cannot cast client.interfacciamyclassserver  @ client.mainclient.main(mainclient.java:18) 

the exception line 18 in mainclient not understand wrong.

you have remote interface declared in 2 packages. server side uses server package's remote interface; client side uses client package's remote interfaces. these 2 remote interfaces different. can't cast implementation of 1 other.

you can't this. need use same remote interface, in same package, @ both ends.


Comments

Popular posts from this blog

facebook - android ACTION_SEND to share with specific application only -

python - Creating a new virtualenv gives a permissions error -

javascript - cocos2d-js draw circle not instantly -