IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Play! Java Discussion :

Problème client/serveur RMI avec Play


Sujet :

Play! Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème client/serveur RMI avec Play
    Bonjour à tous,

    Je viens de débuter avec RMI. J'ai crée dans projet Play un serveur simple qui renvoi la date actuel et un client qui l'affiche.

    Quand je lance le serveur et le client depuis des lignes de commandes, j'obtiens le résultat souhaité. J'ai bien la date qui est affichée.

    Cependant, quand j'essaye de récupérer cette donnée depuis une fonction de la class Applications pour l'afficher dans une page web, la méthode me renvoi cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: controllers.srvEcho_Stub (no security manager: RMI class loader disabled)
    Afin de mieux exposer mon problème, voici mon code :

    ---- Interface Serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public interface interEcho extends Remote{
     
    	public Date echo() throws RemoteException;
     
    }
    ------- Class : Serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public class srvEcho extends UnicastRemoteObject implements interEcho{
     
    	protected srvEcho() throws RemoteException {
    		super();
    	}
     
    	private static final long serialVersionUID = 1L;
     
     
    	public Date echo() throws RemoteException {
    		return new Date();
    	}
     
    	//*Pour lancer le serveur depuis le Terminal
    	public static void main (String arg[]){
     
    		if (System.getSecurityManager() == null) {
    		      System.setSecurityManager(new RMISecurityManager());
    		}
     
    		try {
    			srvEcho serveurEcho = new srvEcho();
    			Naming.rebind("srvEcho", serveurEcho);
    			System.out.println("Le serveur et pret");
    		} catch (Exception e) {
    			System.out.println("Erreur !! \n\n\t"+e.toString());
    		}
    	}
    	//*/
     
    	//* Pour lancer la serveur depuis une fonction
    	public static String Lancer (){
     
    		String rep = new String("Rep Serv : ");
     
    		if (System.getSecurityManager() == null) {
    		      System.setSecurityManager(new RMISecurityManager());
    		}
     
    		try {
    			srvEcho serveurEcho = new srvEcho();
    			Naming.rebind("srvEcho", serveurEcho);
    			System.out.println("Le serveur et pret");
    			rep += "Le serveur et pret";
    		} catch (Exception e) {
    			System.out.println("Erreur !! \n\n\t"+e.toString());
    			rep += "Le serveur et pret";
    		}
     
    		return rep;
    	}
    ----- Class : client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class cltEcho {
     
    	public cltEcho(){}
     
    	public static String getInfo(){
     
    		String message = new String("Reponse :");
    		String urlService=new String("rmi://localhost/srvEcho");
    		//String urlService=new String("rmi://Dev/Projets/play/test-RMI_Server/tmp/classes/controllers/srvEcho");
    		interEcho serveur=null;
     
    		try{
    			// localisation du service
    			serveur=(interEcho) Naming.lookup(urlService);
    			// boucle de lecture des msg à envoyer au serveur d'écho
    			Date date = (Date) serveur.echo();
    			message += date;
    			System.out.println("la reponse est: "+date);
    			} 
    		catch (Exception e){
    			System.err.println("Erreur : " + e);
    			message += "Erreur : " + e.toString();
    		}//try
     
    		return message;
    	}
     
    }
    ----- Class : Applications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Application extends Controller {
     
        public static void index() {
        	render();
        }
     
        public static void affiche() {
        	cltEcho cl = new cltEcho();
    		String message = cl.getInfo();
        	render(message);
        }
    }

    mes étapes d’exécution:
    - je démarre mon application play
    - une fois les fichiers compiler je génère le srvEcho_Stub dans le meme répertoire (tmp/classes/controllers/)
    - je lance la commande rmiregistry
    - je lance le serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -Djava.security.policy=controllers/mypolicy -Djava.rmi.server.codebase=file:C:/Dev/Projets/play/test-RMI_Server/tmp/classes/ controllers.srvEcho
    -le resultat obtenu en exécutant la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void affiche() {
        	cltEcho cl = new cltEcho();
    		String message = cl.getInfo();
        	render(message);
    }
    est l’exception mentionnée.

    Je note que les classes sont dans le même package controllers
    et si j’exécute je client depuis une ligne de commande j'ai le bon résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C:\Dev\Projets\play\test-RMI_Server\tmp\classes>java controllers/cltMain
    la reponse est: Wed Apr 11 14:56:00 CEST 2012
    Reponse :Wed Apr 11 14:56:00 CEST 2012
    avez-vous une idée ?
    Merci,

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    A priori, tu utilises une version 5 ou supérieure de Java, n'est-ce pas ?
    Alors ne génère pas le Stub. Qu'est-ce que cela donne ?

    RMI functionality comes in the package java.rmi, while most of Sun's implementation is located in the sun.rmi package. Note that with Java versions before Java 5.0 developers had to compile RMI stubs in a separate compilation step using rmic. Version 5.0 of Java and beyond no longer require this step.
    (source)
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut ça marche
    Citation Envoyé par romaintaz Voir le message
    A priori, tu utilises une version 5 ou supérieure de Java, n'est-ce pas ?
    Alors ne génère pas le Stub. Qu'est-ce que cela donne ?


    (source)
    ça marche
    merci beaucoup romaintaz

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Client Serveur RMI
    Par Malhak dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 01/03/2009, 17h57
  2. Client - Serveur RMI
    Par kalamteeji dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 28/12/2008, 15h28
  3. Problème client-serveur TELNET.
    Par 0v3rb1t dans le forum Réseau
    Réponses: 5
    Dernier message: 20/05/2007, 16h59
  4. Réponses: 3
    Dernier message: 11/12/2006, 19h57
  5. [C#] Problème client-serveur TCP
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/06/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo