RMI + socket

RMI + socket - Programmation

Marsh Posté le 06-07-2002 à 11:50:42    

salut à tous !
voilà j'ai un petit problème dans  mon apprentissage des RMI.
je crée une application dans laquelle un serveur propose 2 services:
stocker_chaine_caractere
lire_chane_caratere
 
j'ai donc défini l'interface du serveur
puis je l'ai implémenté
puis j'ai généré les bouts-clients et bout-serveur.
ensuite j'ai implémenté mon client.
 
ensuite j'ai lancé mon registraire
et lorsque je lance mon serveur j'ai l'erreur suivante :  
"Exeption à l'enristrement: java.security.AccessControlException: access
denied(java.net.SocketPermission 127.0.0.1:1800 connect, resolve)"
 
dans l'implémentation de mon serveur j'ai rajouté la ligne suivante
pour l'autorisation au niveau des socket :  
"SocketPermission nr = new SocketPermission ("localhost:1800",
" connect,resolve" );"
 
pour lancer mon registraire :
rmiregistry 1800 &
 
voyez vous ce que j'aurais oublié, ou alors ce que j'aurais mal  
codé ?

Reply

Marsh Posté le 06-07-2002 à 11:50:42   

Reply

Marsh Posté le 06-07-2002 à 11:53:07    

ton client et ton serveur sont sur la meme machine? Quel OS?

Reply

Marsh Posté le 06-07-2002 à 11:55:13    

client et serveur sur la meme machine oui .
 
os : SuSE linux 7.1

Reply

Marsh Posté le 06-07-2002 à 12:01:42    

Bon:
 
1. Tu dis avoir donné les droits en connect,accept sur le port en question mais comment fais tu ?
 
2. Utilise tu localhost ou le loopback comme adresse du serveur ou utilise tu le NOM de ta machine. Si oui vérifie ton fichier /etc/hosts
 
De manière générale tu dois lancer ton serveur comme ca:
 

Code :
  1. java -Djava.policy.file=rmi.policy monpack.MaClasse mes params


 
où rmi.policy contient
 

Code :
  1. grant {
  2.   permission java.net.SocketPermission "*:1800", "accept,connect,listen";
  3. }


Message édité par darklord le 06-07-2002 à 12:01:52
Reply

Marsh Posté le 06-07-2002 à 15:48:06    

alors j'ai réussi à faire tourner un client et un serveur sur le même
poste mais j'ai pour le moment viré le security manager.
 
mais j'ai l'impression que le problème vient peut-être de ma
machine. En effet j'ai testé le code sur une autre station et il  
n'y a pas de problème. alors que sur ma machine le code merde.
 
et puis à part ça merci Dark_lord , vu les post que tu met, tu  
maîtrise !!!

Reply

Marsh Posté le 06-07-2002 à 16:00:15    

nawbacan a écrit a écrit :

et puis à part ça merci Dark_lord , vu les post que tu met, tu  
maîtrise !!!  




 
Bin euh pour ce cas ci j'ai tout simplement eu le meme problème sur une redhat 7.3 il y a 2semaines donc ...
 
Sinon ca marche sur ta machine avec le policy file?

Reply

Marsh Posté le 06-07-2002 à 16:00:58    

sinon c pas ta machine le problème, c'est la gestion de la sécurité qui est probablement différente. (si tu as testé ton code sur une machine windows par exemple)

Reply

Marsh Posté le 06-07-2002 à 16:06:17    

non le code je l'ai testé sur une autre machine SuSE 7.1.  
je sais absolument pas pourquoi ça ne tourne pas sur la mienne.
quand au sécurity manager, et  bien si je le déclare  et que  
j'utilise la  commande que tu m'as donné pour lancer le serveur  
ça passe toujours pas .  

Reply

Marsh Posté le 06-07-2002 à 16:13:04    

c bien sur le port 1800 que tu enregistres tes objets ?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 06-07-2002 à 16:24:56    

//le code main de mon serveur..
//l'erreur est à un rapport avec si je n'arrive pas à lancer le
//serveur..
public static void main (String args[])
{
 System.setSecurityManager(new RMISecurityManager());
 try {
  String serveurNom= "//localhost:1800/ChaineMemoire";
  ChaineMemoire serveur = new ChaineMemoireImpl();
   
  naming.rebind(serveurNom, serveur);
 }catch (Exception e) {
  system.out.println("exception a l'enregistement:" + e);
}
 
 
 
 
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed