Java rmi tuto oracle
Résolu/Fermé
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
-
6 oct. 2013 à 15:24
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 - 8 oct. 2013 à 11:48
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 - 8 oct. 2013 à 11:48
A voir également:
- Java rmi tuto oracle
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Tuto chromecast - Guide
- Java décompiler - Télécharger - Langages
7 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 oct. 2013 à 15:56
6 oct. 2013 à 15:56
Normalement tu peux faire ça sur une seule machine, il suffira d'utiliser le serveur en localhost, mais quel serveur utilises-tu ? Parce qu'ils ne permettent pas tous de faire du RMI par défaut...
Tu trouveras un peu plus d'information ici :
https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/
Tu trouveras un peu plus d'information ici :
https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 17:35
6 oct. 2013 à 17:35
aucune idée, j'essaie de faire ce tuto mais je ne sais pas quoi utiliser. il est mal fait je trouve..
je comprends pas grand chose d'ailleurs :/
je comprends pas grand chose d'ailleurs :/
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 oct. 2013 à 17:40
6 oct. 2013 à 17:40
Le tutoriel Getting Started a l'air plus simple.
Mais tu peux aussi regarder des cours en français, par exemple :
http://www.jmdoudoux.fr/java/dej/chap-rmi.htm
Mais tu peux aussi regarder des cours en français, par exemple :
http://www.jmdoudoux.fr/java/dej/chap-rmi.htm
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 18:22
6 oct. 2013 à 18:22
j'ai testé ce tutorial : https://www.youtube.com/watch?v=vkw275ptI3E
quand j'essaie de lancer le serveur j'ai cette grosse erreur...
je dois faire quoi ? oO
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:400)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at simple.rmi.server.MyServer.main(MyServer.java:33)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:390)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1185)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at sun.rmi.server.LoaderHandler.loadClassForName(LoaderHandler.java:1198)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:433)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:164)
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:201)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1589)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1494)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1748)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
... 12 more
quand j'essaie de lancer le serveur j'ai cette grosse erreur...
je dois faire quoi ? oO
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:400)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at simple.rmi.server.MyServer.main(MyServer.java:33)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:390)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.ClassNotFoundException: simple.rmi.server.MyServer_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1185)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at sun.rmi.server.LoaderHandler.loadClassForName(LoaderHandler.java:1198)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:433)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:164)
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:201)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1589)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1494)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1748)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
... 12 more
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 oct. 2013 à 18:39
6 oct. 2013 à 18:39
Il y a eu des changements lors des dernières versions de Java, ta vidéo date un peu, regarde
https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/enhancements-7.html
https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/enhancements-7.html
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 18:41
6 oct. 2013 à 18:41
hummm merci
mais je comprends pas ce que je dois faire :(
mais je comprends pas ce que je dois faire :(
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 6/10/2013 à 19:47
Modifié par KX le 6/10/2013 à 19:47
Voici un exemple complet, testé avec Java 7 sous Windows 7.
Je fais tout à la main (pas d'Eclipse ou Netbeans, juste Java)
Je suppose que tu travailles dans le dossier "C:\Workspace\RMI" et qu'il contient deux dossiers "src" et "bin".
Dans "src" je mets des sous-répertoires "ccm" puis "rmi" pour mon architecture de package et je mets les trois codes suivants :
C:\Workspace\RMI\src\ccm\rmi\Hello.java
C:\Workspace\RMI\src\ccm\rmi\Server.java
C:\Workspace\RMI\src\ccm\rmi\Client.java
Enfin, je lances un petit fichier de commandes pour compiler les classes, démarrer le registre, le serveur, puis le client :
NB. la commande "start" permet de lancer la commande dans une nouvelle fenêtre, tu devrais donc avoir trois fenêtres ouvertes : le registre (qui n'affiche rien), le serveur (qui affiche "server ready") et le client (qui affiche "Hello World !").
Je fais tout à la main (pas d'Eclipse ou Netbeans, juste Java)
Je suppose que tu travailles dans le dossier "C:\Workspace\RMI" et qu'il contient deux dossiers "src" et "bin".
Dans "src" je mets des sous-répertoires "ccm" puis "rmi" pour mon architecture de package et je mets les trois codes suivants :
C:\Workspace\RMI\src\ccm\rmi\Hello.java
package ccm.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote
{
String BIND = "ccm.rmi.Hello";
String sayHello(String name) throws RemoteException;
}
C:\Workspace\RMI\src\ccm\rmi\Server.java
package ccm.rmi;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello
{
public String sayHello(String name)
{
return "Hello "+name+" !";
}
public static void main(String args[]) throws Exception
{
Hello hello = (Hello) UnicastRemoteObject.exportObject(new Server(), 0);
Registry registry = LocateRegistry.getRegistry();
registry.bind(Hello.BIND, hello);
System.out.println("server ready");
}
}
C:\Workspace\RMI\src\ccm\rmi\Client.java
package ccm.rmi;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client
{
public static void main(String[] args) throws Exception
{
Registry registry = LocateRegistry.getRegistry("localhost");
Hello hello = (Hello) registry.lookup(Hello.BIND);
System.out.println(hello.sayHello("World"));
}
}
Enfin, je lances un petit fichier de commandes pour compiler les classes, démarrer le registre, le serveur, puis le client :
javac -d C:\Workspace\RMI\bin C:\Workspace\RMI\src\ccm\rmi\*.java
start rmiregistry -J-Djava.rmi.server.codebase=file:///C:/Workspace/RMI/bin/
start java -classpath C:\Workspace\RMI\bin ccm.rmi.Server
java -classpath C:\Workspace\RMI\bin ccm.rmi.Client
pause
NB. la commande "start" permet de lancer la commande dans une nouvelle fenêtre, tu devrais donc avoir trois fenêtres ouvertes : le registre (qui n'affiche rien), le serveur (qui affiche "server ready") et le client (qui affiche "Hello World !").
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 20:53
6 oct. 2013 à 20:53
ok je vais jeter un oeil là dessus, merci beaucoup de ton aide ;)
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 20:57
6 oct. 2013 à 20:57
juste une question si maintenant je veux essayer sur 2 ordinateurs différents... comment faut-il procéder ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 6/10/2013 à 21:05
Modifié par KX le 6/10/2013 à 21:05
Il faudrait tester parce que je ne suis pas sûr mais je pense qu'il faudrait mettre le serveur et le registre sur le même ordinateur et le client sur le deuxième ordinateur en changeant "localhost" par le nom d'accès au serveur.
Remarque : les classes Server/Hello devront être sur la machine serveur, les classes Client/Hello sur la machine client.
Remarque : théoriquement il me semble que le registre peut-être sur un troisième ordinateur, mais là ça va commencer à être compliqué à paramétrer.
Remarque : les classes Server/Hello devront être sur la machine serveur, les classes Client/Hello sur la machine client.
Remarque : théoriquement il me semble que le registre peut-être sur un troisième ordinateur, mais là ça va commencer à être compliqué à paramétrer.
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 21:07
6 oct. 2013 à 21:07
oki mais au lieu de localhost il faudrait que j'utilise l'ip de l'ordinateur à distance ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 oct. 2013 à 21:13
6 oct. 2013 à 21:13
Normalement avec l'adresse ip ça devrait fonctionner.
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
6 oct. 2013 à 22:53
6 oct. 2013 à 22:53
jai réussi avec ton exemple en local... :) merci
me reste plus qu'a tester à distance...
j'ai essayé vite fait il me dit : access denied... il y a un problème avec le parefeux ? il faut régler un truc ?
me reste plus qu'a tester à distance...
j'ai essayé vite fait il me dit : access denied... il y a un problème avec le parefeux ? il faut régler un truc ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 oct. 2013 à 23:04
6 oct. 2013 à 23:04
Ça c'est bien possible, d'autant que si j'ai bien compris tu essayes entre un mac et un win7...
Tu devrais regarder la FAQ RMI sur le site d'Oracle : https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/faq.html#firewall
Par défaut le port RMI est 1099 (tu peux t'en assurer en faisant un affichage de l'objet Registry)
Tu devrais regarder la FAQ RMI sur le site d'Oracle : https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/faq.html#firewall
Par défaut le port RMI est 1099 (tu peux t'en assurer en faisant un affichage de l'objet Registry)
capa57
Messages postés
352
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 mai 2016
13
8 oct. 2013 à 11:48
8 oct. 2013 à 11:48
ok merci je vais essayer ;)