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

Java Discussion :

JavaRMI && UnmarshallException


Sujet :

Java

  1. #1
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut JavaRMI && UnmarshallException
    Bonjour,
    Cela fait un bout de temps que je n'ai pas bossé le RMI et j'étais en train de réviser un peu en faisant un prog tout simple de gestion de compte bancaire.
    Les fonctionalités offertes par ce service sont l'authentification, créditer / débiter son compte. Sauf que j'ai un UnmarshallException coté client.
    J'ai voulu passer mes objets par valeur (implements Remote) et je crois que c'est là que ça coince. Est ce qq1 peut m'aider svp?

    Voici le code de mon interface :
    Code java : 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
     
    package fr.grosdim.bankaccount.server;
     
    import java.rmi.Remote;
    import java.rmi.RemoteException;
     
    import fr.grosdim.bankaccount.bean.Compte;
     
    public interface IBankAccount extends Remote {
     
    	/**
             * @param code
             * @return
             * @throws RemoteException
             */
    	public Compte authentication(String code) throws RemoteException;
     
    	/**
             * @param compte
             * @param solde
             * @throws RemoteException
             */
    	public void crediter(Compte compte, int solde) throws RemoteException;
     
    	/**
             * @param compte
             * @param solde
             * @throws RemoteException
             */
    	public void debiter ( Compte compte, int solde) throws RemoteException;
     
    	/**
             * @param code
             * @return
             * @throws RemoteException
             */
    	public Compte getCompte ( String code) throws RemoteException;
    }


    Voici son implémentation
    Code java : 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
    53
    54
    55
    56
    57
    58
     
    package fr.grosdim.bankaccount.server;
     
    import java.rmi.RemoteException;
    import java.util.HashMap;
    import java.util.Map;
     
    import fr.grosdim.bankaccount.bean.Compte;
     
    public class BankAccount implements IBankAccount {
     
    	private Map<String, Compte> listCompte = new HashMap<String, Compte>();
     
    	public BankAccount() {
    		super();
    		putCompte("Bob", new Compte("Bob", 1500));
    		putCompte("alice", new Compte("Alice", 3500));
    		putCompte("trudy", new Compte("Trudy", 200));
    		putCompte("jack", new Compte("Jack", 10000));
    		putCompte("claire", new Compte("Claire", 20000));
    	}
     
    	@Override
    	public Compte authentication(String code) throws RemoteException {
    		// TODO Auto-generated method stub
    		if (listCompte.containsKey(code.toLowerCase()))
    			return getCompte(code);
    		return null;
    	}
     
    	@Override
    	public void crediter(Compte compte, int solde) throws RemoteException {
    		// TODO Auto-generated method stub
    		System.out.println( compte.getResponsable() );
    		int oldSolde = compte.getSolde();
    		int newSolde = oldSolde + solde;
    		compte.setSolde(newSolde);
    	}
     
    	@Override
    	public void debiter(Compte compte, int solde) throws RemoteException {
    		// TODO Auto-generated method stub
    		int oldSolde = compte.getSolde();
    		int newSolde = oldSolde - solde;
    		compte.setSolde(newSolde);
    	}
     
    	public void putCompte(String code, Compte c) {
    		listCompte.put(code, c);
    	}
     
    	@Override
    	public Compte getCompte(String code) throws RemoteException {
    		System.out.println(" code ");
    		return listCompte.get(code);
     
    	}
    }

    Voici le code du serveur :
    Code java : 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
     
    package fr.grosdim.bankaccount.server;
     
    import java.rmi.AlreadyBoundException;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    import java.rmi.server.UnicastRemoteObject;
     
    public class ServerBankAccount {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		IBankAccount bankAccount = new BankAccount();
    		try {
    			UnicastRemoteObject.exportObject(bankAccount,0);
    			Registry registry = LocateRegistry.createRegistry(15000);
    			//Registry registry = LocateRegistry.getRegistry("127.0.0.1");
    			registry.bind("bankAccount", bankAccount);
    			System.out.println( "Server BankAccount launched ....");
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (AlreadyBoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
     
    }

    Voici le code du client Trudy :

    Code java : 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
     
    package fr.grosdim.bankaccount.client;
     
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
     
    import fr.grosdim.bankaccount.bean.Compte;
    import fr.grosdim.bankaccount.server.IBankAccount;
     
    public class TrudyClient {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Registry registry;
    		try {
    			registry = LocateRegistry.getRegistry(15000);
    			IBankAccount bankAccount = (IBankAccount) registry
    					.lookup("bankAccount");
     
    			Compte compte = bankAccount.authentication("trudy");
     
    			if (compte == null) {
    				System.out.println(" User not found ");
    			}
     
    			bankAccount.crediter(compte, 10000);
     
    			Compte c = bankAccount.getCompte(compte.getResponsable().toLowerCase());
     
    			System.out.println(c.toString());
     
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NotBoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
     
    }

    Code de la classe Compte
    Code java : 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
    53
    54
    55
     
     /**
     * 
     */
    package fr.grosdim.bankaccount.bean;
     
    import java.rmi.Remote;
     
    /**
     * @author dimitri
     * 
     */
    public class Compte implements Remote {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	private String responsable;
     
    	private int solde;
     
    	public Compte() {
    		this("", 0);
    	}
     
    	public Compte(String responsable, int solde) {
    		super();
    		this.responsable = responsable;
    		this.solde = solde;
    	}
     
    	public String getResponsable() {
    		return responsable;
    	}
     
    	public void setResponsable(String responsable) {
    		this.responsable = responsable;
    	}
     
    	public int getSolde() {
    		return solde;
    	}
     
    	public void setSolde(int solde) {
    		this.solde = solde;
    	}
     
    	@Override
    	public String toString() {
    		return "Bonjour " + this.responsable + "\nVotre solde est de "
    				+ this.solde;
    	}
    }

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    As tu bien généré et distribué les classes skeleton et stub?

  3. #3
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    C'est à dire ??

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    As tu bien généré et distribué les classes skeleton et stub?
    ce n'est plus nécessaire . donc le problème est ailleurs.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    ce n'est plus nécessaire . donc le problème est ailleurs.
    Je vois que je suis vieux jeu
    ce n'est plus nécessaire depuis la version 5 il parait.

  6. #6
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    j'ai le meme probleme que vous et je n'arrive toujours pas à le régler...

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