Bonjour,
Je me lance dans une application distribuée, et pour comprendre les
mécanismes du RMI, j'ai copié l'exemple d'un bouquin. Un truc tout
simple avec un objet renvoyant une chaine de caractères.
Voici les quelques problèmes auquelles je suis confrontés.
- Si je lance le registre RMI par JBuilder, l'application serveur
plante avec une exception d'authorisation.
- Si je lance le registre RMI et l'application serveur sous une fenêtre
DOS, l'application serveur plante avec une exception d'authorisation.
- Si je lance le registre RMI sous une fenêtre DOS, l'application
serveur et l'application cliente dans JBuilder, l'application serveur et
l'application cliente fonctionnent correctement, a condition que
l'ensemble des classes soient dans le même dossier.
- Mais si l'ensemble des classes serveur sont dans un dossier et
l'application cliente dans une autre, l'application serveur fonctionne,
mais lorsque je lance l'application cliente elle lance l'exception:
java.rmi.UnmarshallException: error unmarshalling return; nested
exception is:
java.lang.ClassNotFoundException: rmiserver.ProductImpl_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknow Source)
etc...
Pouvez-vous s'il vous plait m'expliquer pourquoi j'ai ces différentes
erreurs, qu'es-ce que je n'ai pas fait correctement, et qu'es ce qu'il
faut que je fasse pour que ça fonctionne.
Merci beaucoup.
Bonjour,
Je me lance dans une application distribuée, et pour comprendre les
mécanismes du RMI, j'ai copié l'exemple d'un bouquin. Un truc tout
simple avec un objet renvoyant une chaine de caractères.
Voici les quelques problèmes auquelles je suis confrontés.
- Si je lance le registre RMI par JBuilder, l'application serveur
plante avec une exception d'authorisation.
- Si je lance le registre RMI et l'application serveur sous une fenêtre
DOS, l'application serveur plante avec une exception d'authorisation.
- Si je lance le registre RMI sous une fenêtre DOS, l'application
serveur et l'application cliente dans JBuilder, l'application serveur et
l'application cliente fonctionnent correctement, a condition que
l'ensemble des classes soient dans le même dossier.
- Mais si l'ensemble des classes serveur sont dans un dossier et
l'application cliente dans une autre, l'application serveur fonctionne,
mais lorsque je lance l'application cliente elle lance l'exception:
java.rmi.UnmarshallException: error unmarshalling return; nested
exception is:
java.lang.ClassNotFoundException: rmiserver.ProductImpl_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknow Source)
etc...
Pouvez-vous s'il vous plait m'expliquer pourquoi j'ai ces différentes
erreurs, qu'es-ce que je n'ai pas fait correctement, et qu'es ce qu'il
faut que je fasse pour que ça fonctionne.
Merci beaucoup.
Bonjour,
Je me lance dans une application distribuée, et pour comprendre les
mécanismes du RMI, j'ai copié l'exemple d'un bouquin. Un truc tout
simple avec un objet renvoyant une chaine de caractères.
Voici les quelques problèmes auquelles je suis confrontés.
- Si je lance le registre RMI par JBuilder, l'application serveur
plante avec une exception d'authorisation.
- Si je lance le registre RMI et l'application serveur sous une fenêtre
DOS, l'application serveur plante avec une exception d'authorisation.
- Si je lance le registre RMI sous une fenêtre DOS, l'application
serveur et l'application cliente dans JBuilder, l'application serveur et
l'application cliente fonctionnent correctement, a condition que
l'ensemble des classes soient dans le même dossier.
- Mais si l'ensemble des classes serveur sont dans un dossier et
l'application cliente dans une autre, l'application serveur fonctionne,
mais lorsque je lance l'application cliente elle lance l'exception:
java.rmi.UnmarshallException: error unmarshalling return; nested
exception is:
java.lang.ClassNotFoundException: rmiserver.ProductImpl_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknow Source)
etc...
Pouvez-vous s'il vous plait m'expliquer pourquoi j'ai ces différentes
erreurs, qu'es-ce que je n'ai pas fait correctement, et qu'es ce qu'il
faut que je fasse pour que ça fonctionne.
Merci beaucoup.
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes téléchargeables à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes téléchargeables à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes téléchargeables à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes téléchargeables
à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu as confirmé ce dont je me doutais: c'est mon codebase qui déconne.
J'avais écrit:
-Djava.rmi.server.codebase="file:/d:/TestRMI/RMIServer/classes/"
C'est pour celà que ça fonctionne lorsque les classes serveur et
clientes sont dans le même répertoire: c'est une adresse locale.
Par contre je n'arrive pas à l'écrire correctement, je n'ai pas trouvé
la doc trés explicite sur le sujet. Si tu pouvais m'aider...
Je te donne les différents paramètres.
Nom de machine: ServeurHttp (elle fait également office de serveur web,
mais le dossier TestRMI ne se trouve pas dans l'arborescence du service
web).
chemin des classes serveur, interface, objet distribué, stub et
skeleton: d:/TestRMI/RMIServer/classes/rmiserver/
rmiserveur étant le nom du package.
D'avance merci beaucoup.
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes téléchargeables
à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu as confirmé ce dont je me doutais: c'est mon codebase qui déconne.
J'avais écrit:
-Djava.rmi.server.codebase="file:/d:/TestRMI/RMIServer/classes/"
C'est pour celà que ça fonctionne lorsque les classes serveur et
clientes sont dans le même répertoire: c'est une adresse locale.
Par contre je n'arrive pas à l'écrire correctement, je n'ai pas trouvé
la doc trés explicite sur le sujet. Si tu pouvais m'aider...
Je te donne les différents paramètres.
Nom de machine: ServeurHttp (elle fait également office de serveur web,
mais le dossier TestRMI ne se trouve pas dans l'arborescence du service
web).
chemin des classes serveur, interface, objet distribué, stub et
skeleton: d:/TestRMI/RMIServer/classes/rmiserver/
rmiserveur étant le nom du package.
D'avance merci beaucoup.
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes téléchargeables
à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu as confirmé ce dont je me doutais: c'est mon codebase qui déconne.
J'avais écrit:
-Djava.rmi.server.codebase="file:/d:/TestRMI/RMIServer/classes/"
C'est pour celà que ça fonctionne lorsque les classes serveur et
clientes sont dans le même répertoire: c'est une adresse locale.
Par contre je n'arrive pas à l'écrire correctement, je n'ai pas trouvé
la doc trés explicite sur le sujet. Si tu pouvais m'aider...
Je te donne les différents paramètres.
Nom de machine: ServeurHttp (elle fait également office de serveur web,
mais le dossier TestRMI ne se trouve pas dans l'arborescence du service
web).
chemin des classes serveur, interface, objet distribué, stub et
skeleton: d:/TestRMI/RMIServer/classes/rmiserver/
rmiserveur étant le nom du package.
D'avance merci beaucoup.
Le codebase doit être une URL valide.
Si c'est un URL http tu dois forcément avoir un alias dans ton serveur web
qui pointe vers le répertoire où se trouve les classes téléchargeables.
"Albert Kunzunsky" a écrit dans le message
de
news: 41af0f12$0$30451$Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes
téléchargeables
àl'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu as confirmé ce dont je me doutais: c'est mon codebase qui déconne.
J'avais écrit:
-Djava.rmi.server.codebase="file:/d:/TestRMI/RMIServer/classes/"
C'est pour celà que ça fonctionne lorsque les classes serveur et
clientes sont dans le même répertoire: c'est une adresse locale.
Par contre je n'arrive pas à l'écrire correctement, je n'ai pas trouvé
la doc trés explicite sur le sujet. Si tu pouvais m'aider...
Je te donne les différents paramètres.
Nom de machine: ServeurHttp (elle fait également office de serveur web,
mais le dossier TestRMI ne se trouve pas dans l'arborescence du service
web).
chemin des classes serveur, interface, objet distribué, stub et
skeleton: d:/TestRMI/RMIServer/classes/rmiserver/
rmiserveur étant le nom du package.
D'avance merci beaucoup.
Le codebase doit être une URL valide.
Si c'est un URL http tu dois forcément avoir un alias dans ton serveur web
qui pointe vers le répertoire où se trouve les classes téléchargeables.
"Albert Kunzunsky" <albert.kunzunsky@laposte.net> a écrit dans le message
de
news: 41af0f12$0$30451$8fcfb975@news.wanadoo.fr...
Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes
téléchargeables
à
l'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu as confirmé ce dont je me doutais: c'est mon codebase qui déconne.
J'avais écrit:
-Djava.rmi.server.codebase="file:/d:/TestRMI/RMIServer/classes/"
C'est pour celà que ça fonctionne lorsque les classes serveur et
clientes sont dans le même répertoire: c'est une adresse locale.
Par contre je n'arrive pas à l'écrire correctement, je n'ai pas trouvé
la doc trés explicite sur le sujet. Si tu pouvais m'aider...
Je te donne les différents paramètres.
Nom de machine: ServeurHttp (elle fait également office de serveur web,
mais le dossier TestRMI ne se trouve pas dans l'arborescence du service
web).
chemin des classes serveur, interface, objet distribué, stub et
skeleton: d:/TestRMI/RMIServer/classes/rmiserver/
rmiserveur étant le nom du package.
D'avance merci beaucoup.
Le codebase doit être une URL valide.
Si c'est un URL http tu dois forcément avoir un alias dans ton serveur web
qui pointe vers le répertoire où se trouve les classes téléchargeables.
"Albert Kunzunsky" a écrit dans le message
de
news: 41af0f12$0$30451$Tu devrais jeter un coup d'oeil sur
http://java.sun.com/j2se/1.4.2/docs/guide/rmi/codebase.html
Le serveur RMI doit spécifier l'emplacement des classes
téléchargeables
àl'aide de la propriété codebase.
Avant toutes choses merci beaucoup.
Tu as confirmé ce dont je me doutais: c'est mon codebase qui déconne.
J'avais écrit:
-Djava.rmi.server.codebase="file:/d:/TestRMI/RMIServer/classes/"
C'est pour celà que ça fonctionne lorsque les classes serveur et
clientes sont dans le même répertoire: c'est une adresse locale.
Par contre je n'arrive pas à l'écrire correctement, je n'ai pas trouvé
la doc trés explicite sur le sujet. Si tu pouvais m'aider...
Je te donne les différents paramètres.
Nom de machine: ServeurHttp (elle fait également office de serveur web,
mais le dossier TestRMI ne se trouve pas dans l'arborescence du service
web).
chemin des classes serveur, interface, objet distribué, stub et
skeleton: d:/TestRMI/RMIServer/classes/rmiserver/
rmiserveur étant le nom du package.
D'avance merci beaucoup.
Bien, j'ai bien progressé depuis ton dernier message. Effectivement, avec un
alias dans le serveur web ça marche beaucoup mieux. Même si j'ai pas mal
tourné en rond parce que tous les bouquins codent l'URL dans le codebase
avec:
....codebase=http://alias/
alors qu'il faut écrire:
...codebase=http:/alias/
Il n'y a qu'un seul / apres http:
Donc grace à ton aide, j'ai réussi à faire fonctionner la classe server.
Mais j'ai toujours des problèmes coté client.
Quand je lance ma classe client par
D:TestRMIRMIClientclasses>java -Dsecurity.policy=file:D:/TestRMI/RMIClien
t/client.policy rmiclient.ProductClient
sous JBuilder il me lève une exception:
java.rmi.NotBoundException
et sous DOS il me lève une exception:
java.security.AccesControlException: acces denied
(java.net.SocketPermission 127.0.0.1:1099 connect, resolve)
et tous les deux à la ligne Naming.lookup(....)
Bien, j'ai bien progressé depuis ton dernier message. Effectivement, avec un
alias dans le serveur web ça marche beaucoup mieux. Même si j'ai pas mal
tourné en rond parce que tous les bouquins codent l'URL dans le codebase
avec:
....codebase=http://alias/
alors qu'il faut écrire:
...codebase=http:/alias/
Il n'y a qu'un seul / apres http:
Donc grace à ton aide, j'ai réussi à faire fonctionner la classe server.
Mais j'ai toujours des problèmes coté client.
Quand je lance ma classe client par
D:TestRMIRMIClientclasses>java -Dsecurity.policy=file:D:/TestRMI/RMIClien
t/client.policy rmiclient.ProductClient
sous JBuilder il me lève une exception:
java.rmi.NotBoundException
et sous DOS il me lève une exception:
java.security.AccesControlException: acces denied
(java.net.SocketPermission 127.0.0.1:1099 connect, resolve)
et tous les deux à la ligne Naming.lookup(....)
Bien, j'ai bien progressé depuis ton dernier message. Effectivement, avec un
alias dans le serveur web ça marche beaucoup mieux. Même si j'ai pas mal
tourné en rond parce que tous les bouquins codent l'URL dans le codebase
avec:
....codebase=http://alias/
alors qu'il faut écrire:
...codebase=http:/alias/
Il n'y a qu'un seul / apres http:
Donc grace à ton aide, j'ai réussi à faire fonctionner la classe server.
Mais j'ai toujours des problèmes coté client.
Quand je lance ma classe client par
D:TestRMIRMIClientclasses>java -Dsecurity.policy=file:D:/TestRMI/RMIClien
t/client.policy rmiclient.ProductClient
sous JBuilder il me lève une exception:
java.rmi.NotBoundException
et sous DOS il me lève une exception:
java.security.AccesControlException: acces denied
(java.net.SocketPermission 127.0.0.1:1099 connect, resolve)
et tous les deux à la ligne Naming.lookup(....)
Albert Kunzunsky wrote:Bien, j'ai bien progressé depuis ton dernier message. Effectivement,
avec un
alias dans le serveur web ça marche beaucoup mieux. Même si j'ai pas mal
tourné en rond parce que tous les bouquins codent l'URL dans le codebase
avec:
....codebase=http://alias/
alors qu'il faut écrire:
...codebase=http:/alias/
Il n'y a qu'un seul / apres http:
non non, la première doit marcher aussi. Tu dois préciser des urls valides
dans le codebase, du
genre http://monserveur.mondomaine/chemin/malib.jar. Tu peux en mettre
plusieurs en les séparant par
des espaces
Donc grace à ton aide, j'ai réussi à faire fonctionner la classe server.
Mais j'ai toujours des problèmes coté client.
Quand je lance ma classe client par
D:TestRMIRMIClientclasses>java -Dsecurity.policy=file:D:/TestRMI/RMIClien
t/client.policy rmiclient.ProductClient
sous JBuilder il me lève une exception:
java.rmi.NotBoundException
tu n'as pas du faire un Registry.(re)bind() de l'objet côté serveur
et sous DOS il me lève une exception:
java.security.AccesControlException: acces denied
(java.net.SocketPermission 127.0.0.1:1099 connect, resolve)
et tous les deux à la ligne Naming.lookup(....)
tu n'as pas les droits pour faire le lookup. Es-tu sûr de ton fichier
policy ?
Sébastien
Albert Kunzunsky wrote:
Bien, j'ai bien progressé depuis ton dernier message. Effectivement,
avec un
alias dans le serveur web ça marche beaucoup mieux. Même si j'ai pas mal
tourné en rond parce que tous les bouquins codent l'URL dans le codebase
avec:
....codebase=http://alias/
alors qu'il faut écrire:
...codebase=http:/alias/
Il n'y a qu'un seul / apres http:
non non, la première doit marcher aussi. Tu dois préciser des urls valides
dans le codebase, du
genre http://monserveur.mondomaine/chemin/malib.jar. Tu peux en mettre
plusieurs en les séparant par
des espaces
Donc grace à ton aide, j'ai réussi à faire fonctionner la classe server.
Mais j'ai toujours des problèmes coté client.
Quand je lance ma classe client par
D:TestRMIRMIClientclasses>java -Dsecurity.policy=file:D:/TestRMI/RMIClien
t/client.policy rmiclient.ProductClient
sous JBuilder il me lève une exception:
java.rmi.NotBoundException
tu n'as pas du faire un Registry.(re)bind() de l'objet côté serveur
et sous DOS il me lève une exception:
java.security.AccesControlException: acces denied
(java.net.SocketPermission 127.0.0.1:1099 connect, resolve)
et tous les deux à la ligne Naming.lookup(....)
tu n'as pas les droits pour faire le lookup. Es-tu sûr de ton fichier
policy ?
Sébastien
Albert Kunzunsky wrote:Bien, j'ai bien progressé depuis ton dernier message. Effectivement,
avec un
alias dans le serveur web ça marche beaucoup mieux. Même si j'ai pas mal
tourné en rond parce que tous les bouquins codent l'URL dans le codebase
avec:
....codebase=http://alias/
alors qu'il faut écrire:
...codebase=http:/alias/
Il n'y a qu'un seul / apres http:
non non, la première doit marcher aussi. Tu dois préciser des urls valides
dans le codebase, du
genre http://monserveur.mondomaine/chemin/malib.jar. Tu peux en mettre
plusieurs en les séparant par
des espaces
Donc grace à ton aide, j'ai réussi à faire fonctionner la classe server.
Mais j'ai toujours des problèmes coté client.
Quand je lance ma classe client par
D:TestRMIRMIClientclasses>java -Dsecurity.policy=file:D:/TestRMI/RMIClien
t/client.policy rmiclient.ProductClient
sous JBuilder il me lève une exception:
java.rmi.NotBoundException
tu n'as pas du faire un Registry.(re)bind() de l'objet côté serveur
et sous DOS il me lève une exception:
java.security.AccesControlException: acces denied
(java.net.SocketPermission 127.0.0.1:1099 connect, resolve)
et tous les deux à la ligne Naming.lookup(....)
tu n'as pas les droits pour faire le lookup. Es-tu sûr de ton fichier
policy ?
Sébastien
La classe ProductServer (qui lance l'application serveur)
package rmiserver;
import java.rmi.*;
import java.rmi.server.*;
public class ProductServer
{
public static void main(String args[])
{
try
{
System.out.println("Construction et implémentation du serveur...");
ProductImpl p1 = new ProductImpl("Objet 1");
ProductImpl p2 = new ProductImpl("Objet 2");
System.out.println("Liaison des implémentations du serveur à la base
de registre...");
Naming.rebind("ob1", p1);
Naming.rebind("ob2", p2);
System.out.println("Attente des invocations des clients...");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public ProductServer()
{
}
}
{
public static void main(String[] args)
{
System.setProperty("java.security.policy", "client.policy");
System.setSecurityManager(new RMISecurityManager());
String url = "rmi:/Http-1j901-1/";
try
{
Product c1 = (Product) Naming.lookup(url + "ob1");
Product c2 = (Product) Naming.lookup(url + "ob2");
System.out.println(c1.getDescription());
System.out.println(c2.getDescription());
}
catch(Exception e)
{
// System.out.println(e.toString());
e.printStackTrace();
}
}
Et pour finir le fichier .policy
grant
{
permission java.net.SocketPermission "*:1024-65535", "connect";
};
Tu vois, c'est vraiment l'application de base pour comprendre les mécanismes
RMI.
C'est un copier/coller à partir d'un bouquin Java. Donc a prioris le code
n'est pas en cause.
Les classes serveurs sont dans: d:/TestRMI/RMIServer/classes/rmiserver/
L'alias du serveur web pointe sur: d:/TestRMI/RMIServer/classes/
Les classes clientes sont dans d:/TestRMI/RMIClient/classes/rmiclient/
Il y a quand même des réactions bizzares. Par exemple pourquoi lorsque je
lance l'application depuis JBuilder ou depuis DOS, l'esception levée n'est
pas la même.
C'est pourtant la même classe...
Bon, si tu peux me filler un coup de main pour comprendre l'ensemble... Je
te remercie d'avance.
La classe ProductServer (qui lance l'application serveur)
package rmiserver;
import java.rmi.*;
import java.rmi.server.*;
public class ProductServer
{
public static void main(String args[])
{
try
{
System.out.println("Construction et implémentation du serveur...");
ProductImpl p1 = new ProductImpl("Objet 1");
ProductImpl p2 = new ProductImpl("Objet 2");
System.out.println("Liaison des implémentations du serveur à la base
de registre...");
Naming.rebind("ob1", p1);
Naming.rebind("ob2", p2);
System.out.println("Attente des invocations des clients...");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public ProductServer()
{
}
}
{
public static void main(String[] args)
{
System.setProperty("java.security.policy", "client.policy");
System.setSecurityManager(new RMISecurityManager());
String url = "rmi:/Http-1j901-1/";
try
{
Product c1 = (Product) Naming.lookup(url + "ob1");
Product c2 = (Product) Naming.lookup(url + "ob2");
System.out.println(c1.getDescription());
System.out.println(c2.getDescription());
}
catch(Exception e)
{
// System.out.println(e.toString());
e.printStackTrace();
}
}
Et pour finir le fichier .policy
grant
{
permission java.net.SocketPermission "*:1024-65535", "connect";
};
Tu vois, c'est vraiment l'application de base pour comprendre les mécanismes
RMI.
C'est un copier/coller à partir d'un bouquin Java. Donc a prioris le code
n'est pas en cause.
Les classes serveurs sont dans: d:/TestRMI/RMIServer/classes/rmiserver/
L'alias du serveur web pointe sur: d:/TestRMI/RMIServer/classes/
Les classes clientes sont dans d:/TestRMI/RMIClient/classes/rmiclient/
Il y a quand même des réactions bizzares. Par exemple pourquoi lorsque je
lance l'application depuis JBuilder ou depuis DOS, l'esception levée n'est
pas la même.
C'est pourtant la même classe...
Bon, si tu peux me filler un coup de main pour comprendre l'ensemble... Je
te remercie d'avance.
La classe ProductServer (qui lance l'application serveur)
package rmiserver;
import java.rmi.*;
import java.rmi.server.*;
public class ProductServer
{
public static void main(String args[])
{
try
{
System.out.println("Construction et implémentation du serveur...");
ProductImpl p1 = new ProductImpl("Objet 1");
ProductImpl p2 = new ProductImpl("Objet 2");
System.out.println("Liaison des implémentations du serveur à la base
de registre...");
Naming.rebind("ob1", p1);
Naming.rebind("ob2", p2);
System.out.println("Attente des invocations des clients...");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public ProductServer()
{
}
}
{
public static void main(String[] args)
{
System.setProperty("java.security.policy", "client.policy");
System.setSecurityManager(new RMISecurityManager());
String url = "rmi:/Http-1j901-1/";
try
{
Product c1 = (Product) Naming.lookup(url + "ob1");
Product c2 = (Product) Naming.lookup(url + "ob2");
System.out.println(c1.getDescription());
System.out.println(c2.getDescription());
}
catch(Exception e)
{
// System.out.println(e.toString());
e.printStackTrace();
}
}
Et pour finir le fichier .policy
grant
{
permission java.net.SocketPermission "*:1024-65535", "connect";
};
Tu vois, c'est vraiment l'application de base pour comprendre les mécanismes
RMI.
C'est un copier/coller à partir d'un bouquin Java. Donc a prioris le code
n'est pas en cause.
Les classes serveurs sont dans: d:/TestRMI/RMIServer/classes/rmiserver/
L'alias du serveur web pointe sur: d:/TestRMI/RMIServer/classes/
Les classes clientes sont dans d:/TestRMI/RMIClient/classes/rmiclient/
Il y a quand même des réactions bizzares. Par exemple pourquoi lorsque je
lance l'application depuis JBuilder ou depuis DOS, l'esception levée n'est
pas la même.
C'est pourtant la même classe...
Bon, si tu peux me filler un coup de main pour comprendre l'ensemble... Je
te remercie d'avance.