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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

[EAR / Netbeans] Plusieurs applications clientes : une marche, les autres retournent une erreur de la première


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [EAR / Netbeans] Plusieurs applications clientes : une marche, les autres retournent une erreur de la première
    Tout d'abord bonjour à tous et bonnes fêtes de fin d'année.

    Mon problème se situe donc dans le cadre du développement d'une application J2EE qui dispose d'un module EJB et de trois modules clients. Lorsque j'ai créé mon projet dans Netbeans, il m'a créé l'EAR, le module EJB ainsi qu'un module client. J'ai par la suite créé deux autres modules clients que j'ai ajouté au projet comme il faut. J'ai de même ajouté une Java Class Library au projet pour contenir les interfaces distantes pour contacter les beans de session (une interface distante par application cliente).

    Ma première application cliente, appelons-la MY-app1 (pour faire original !), est fonctionnelle et a été totalement développée (je rappelle que c'est celle qui a été créée avec le projet). Une fois celle-ci terminée, je suis donc allé dans les propriétés de mon EAR pour changer l'application à exécuter à son lancement par MY-app2 pour commencer le développement de celle-ci. Manque de pot, une erreur apparaît (alors qu'il n'y a rien dans le main de MY-app2 !), et je ne suis pas en mesure de trouver pourquoi, ni comment la corriger et pouvoir continuer mon travail. Cette erreur concerne MY-app1 (alors que cette application ne devrait pas être utilisée dans ce cas, non ?), la voici donc :

    java.lang.RuntimeException: No matching injection setter method or injection field found for injection property pouet on class fr.package.defaut.Main for component dependency Remote ejb-ref name=fr.package.defaut.Main/pouet,Remote 3.x interface =fr.package.sessions.PouetRemote,ejb-link=MY-ejb.jar#Pouet,lookup=null,mappedName=,jndi-name=java:global/MY/MY-ejb/Pouet!fr.package.sessions.PouetRemote,refType=Session
    at com.sun.enterprise.deployment.util.DefaultDOLVisitor.acceptWithCL(DefaultDOLVisitor.java:363)
    at com.sun.enterprise.deployment.util.EjbBundleValidator.accept(EjbBundleValidator.java:188)
    at com.sun.enterprise.deployment.ApplicationClientDescriptor.visit(ApplicationClientDescriptor.java:657)
    at com.sun.enterprise.deployment.archivist.AppClientArchivist.validate(AppClientArchivist.java:168)
    at org.glassfish.appclient.client.acc.FacadeLaunchable.validateDescriptor(FacadeLaunchable.java:175)
    at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:350)
    at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:311)
    at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:264)
    at org.glassfish.appclient.client.acc.agent.AppClientContainerAgent.premain(AppClientContainerAgent.java:75)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
    Caused by: java.lang.NoSuchFieldException: pouet
    at java.lang.Class.getDeclaredField(Class.java:1882)
    at com.sun.enterprise.deployment.util.DefaultDOLVisitor.acceptWithCL(DefaultDOLVisitor.java:350)
    ... 14 more
    Java Result: 1
    Pour faciliter la lecture de l'erreur, j'ai mis en gras les éléments faisant référence à mon application:
    - fr.package.defaut.Main est ma classe principale
    - pouet est ma variable privée statique de type PouetRemote précédée de la mention @EJB
    - Pouet est mon bean de session, et PouetRemote l'interface distante qui lui est associée
    - Pouet est donc dans mon module MY-ejb, tandis que PouetRemote est dans la Java Class Library MY-RemoteInterfaces.

    J'espère avoir été clair dans mon message, mais n'hésitez pas à poser des questions s'il manque quelque chose ! J'espère que quelqu'un pourra m'aider à sortir de cette impasse ...

    Merci par avance

  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
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il ne faut pas utiliser de variable "static", elle est liée au classloader et donc tu vas partager la ressource avec un grand nombre de client voir tous (ça dépend du serveur)

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/01/2009, 14h44
  2. application client-serveur avec les sockets
    Par matheo600 dans le forum C++
    Réponses: 1
    Dernier message: 20/04/2008, 17h21
  3. Ouvrir plusieurs boites de dialogues les unes après les autres
    Par troumad dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 25/02/2007, 11h55
  4. application client/serveur avec les sockets
    Par baya1 dans le forum JBuilder
    Réponses: 1
    Dernier message: 24/02/2007, 15h37

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