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

Langage Java Discussion :

Problème avec invoke


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut Problème avec invoke
    Bonjour à tous,

    J'ai un souci lors de l'appel d'une de mes méthodes:

    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
     
     private void register(Class dbInterface, Mapping mapping) {
     
        	Class service = null;
        	Object oService = null;
        	Method method = null;
     
    		try {
    			//Class serviceTest = Class.forName("com.sinser.nms.businessservice.database.AccessLogsDb");
    			if (mapping.getFlagService().equals("0")) {		
    				service = Class.forName(mapping.getServiceDB());
    			}
    			else {
    				service = Class.forName(mapping.getServiceDAO());
    			}
     
    			method = service.getMethod("getInstance", new Class[0]);
    			//oService = method.invoke(null, new Object[0]);
    			oService = (Object) method.invoke(service, new Object[0]);
     
    		} catch (Exception e) {
    			log.error("Instantiate Class failed", e);
    		}
     
    		sor.put(dbInterface.getName(), oService);
    		sor.put(dbInterface, oService);
     
        }
    Lorsque je l'appelle j'ai un problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    method.invoke(service, new Object[0]);
    Si je fais un "ctrl+shift+i" dans eclipse avant l'init de la variable j'ai le message suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    the method invoke(Class, Object[]) is undefined....
    Ce que je ne comprends pas, c'est que cette méthode est appellée lors du démarrage de l'application et je n'ai aucune erreur.
    L'erreur à lieu lors de son appel via le client.*

    Merci à tous

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ta méthode getInstance() est static ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut
    Bonjour,

    Oui ma méthode "getInstance" est static

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si elle est static sans paramètre, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oService = (Object) method.invoke(null, null);
    Sinon, il faudrait déjà être sûr que "method" n'est pas NULL.
    La méthode est bien "public" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut
    La méthode est bien public et "method' n'est pas NULL.
    J'ai déjà essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oService = (Object) method.invoke(null, null);
    mais c'est du pareil au même.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yaya0057 Voir le message
    Ce que je ne comprends pas, c'est que cette méthode est appellée lors du démarrage de l'application et je n'ai aucune erreur.
    L'erreur à lieu lors de son appel via le client.*
    Je n'avais pas fait attention à ceci...

    Quelle est l'architecture de ton application au juste ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut
    Application client/server.
    Le server fonctionne sous tomcat avec un client swing.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est bien ce que je pensais...

    Tu utlises RMI ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut
    Je ne sais absolument pas si on utilise RMI, mais admettons, où est ce que cela m'emmene?

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Par défaut
    Après un rapide regard sur l'appli, on effectue des requête HTTP pour dialoguer entre le server et le client

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si tu utilises RMI, tu vas peut-être être obligé de regénérer les Stubs/Skeletons (voir ceci)

    Bref, dans ce genre d'application, quand le client invoke une méthode distante, il y a certaines contraintes.
    Les objets passés doivent être "serializable", il faut veiller au serialVersionUID, le client doit avoir une définition des objets utilisé, etc...

    Plus d'informations serait utile...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème réflexivité avec invoke
    Par Gibob dans le forum Langage
    Réponses: 12
    Dernier message: 10/01/2014, 16h11
  2. Problème avec Thread et invoke pour maj une textbox
    Par drichnifu dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/03/2012, 17h36
  3. Problèmes avec P/Invoke
    Par GuiNark dans le forum C#
    Réponses: 1
    Dernier message: 14/11/2011, 19h38
  4. Problème avec org.apache.axis.client.invoke()
    Par safi11 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 23/08/2010, 11h38
  5. Petit problème avec invoke
    Par bwarff dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/01/2008, 18h02

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