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

Glassfish et Payara Java Discussion :

appel d'ejb par client web


Sujet :

Glassfish et Payara Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut appel d'ejb par client web
    bonsoir,
    je suis en train de travailler sur une application de gestion d'achats
    j'utilise l'environnement glassfish tools bundle for eclipse + glass fish(serveur de deploiement) + base de données derby
    mon problème est le suivant:
    j'ai créée une servlet dans l'application cliente qui interroge lejb et en executant la servlet j'ai le message suivant:

    ATTENTION: javax.naming.NameAlreadyBoundException: comptablebean

    voila l'appel de l'ejb dans la servlet:

    Properties props = new Properties ();
    props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
    props.setProperty("org.omg.CORBA.ORBInitialPort", "3701");
    InitialContext ctx = new InitialContext(props);

    beancomptableRemote beanComp = (beancomptableRemote) ctx.lookup("comptablebean/remote");

    beanComp.afficher();




    svp si quelqu'un pourrait m'aider je serai reconnaissante.merci d'avance

  2. #2
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Essaye "asadmin list-jndi-entries" pour connaitre le nom JNDI précis à utiliser.
    Sinon, il y a ACC pour faire des injections de ressources: http://java.sun.com/developer/techni.../jws-glassfish

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut appel d'ejb par client web
    mci d'avoir repondu
    en executant la commande "asadmin list-jndi-entries" je trouve mon bean et effectivement dans le message d'erreur j'ai : NameAlreadyBoundException
    donc est ce que je le supprime et je relance men execution ou je ferai autre chose?

  4. #4
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Quand l'exception NameAlreadyBoundException est-elle levée? Sur l'appel de la commande 'asadmin'?

    Le nom retourné par la commande asadmin est celui à utiliser pour le lookup...

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut appel d'ejb par client web
    désolée si je vous derange,donc lorsque j'ai utilisé le nom retourné par "asadmin" je trouve la meme erreur d'ailleurs c'est le meme nom que j'ai utilisé dans lookup

    l'exception se leve dés que j'execute ma servlet sur la ligne du lookup comme quoi que le bean est dejà lié à l'objet!mais ce que j'essaye d'afficher aprés la ligne du lookup ne passe pas.
    ?

    __________________

  6. #6
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Je viens de relire le message initial (je pensais que c'était un client standalone, pas web). Pourquoi ne pas faire une simple injection @EJB?

    Sinon, j'ai besoin de voir le code de l'EJB, de son interface remote et de son éventuel ejb-jar.xml...

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut appel d'ejb par client web
    pour l'injection @EJB j'ai jamais utilisé donc j'ai pas une idée sinon pour le code de l'ejb est le suivant:
    **beancomptableRemote.java:

    @Remote
    public interface beancomptableRemote {
    public List <Comptable> afficheComptables();
    public void runTest();
    public void supprimerComp();
    public void modifierComp();


    }
    **beancomptable.java:

    **
    * Session Bean implementation class beancomptable
    */
    @Stateless(mappedName="comptablebean")
    @PersistenceContext (unitName="testEnity")
    //@TransactionManagement(TransactionManagementType.BEAN)


    public class beancomptable implements beancomptableRemote {

    private EntityManager em ;
    Comptable monComp;
    public beancomptable() {
    }
    ...
    //les méthodes

    **ejb-jar.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
    version="3.0">
    <display-name>testEjb</display-name>

    </ejb-jar>

    NB: pour @PersistenceContext (unitName="testEnity"):jutilise un projet JPA pour la persistence.

    jespere que ce soit clair pour vous.

  8. #8
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Dans la servlet (qui doit se trouver dans un WAR lui même dans un EAR ou se trouve également le JAR qui contient l'EJB), il suffit de déclarer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @EJB
    private beancomptableRemote beancomptable;
    et ensuit d'invoquer les méthodes sur ton bean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    beancomptable.modifierComp();
    L'équivalent à base de lookup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    InitialContext ic = new InitialContext();
    beancomptableRemote beancomptable = (beancomptableRemote) ic.lookup("comptablebean");
    beancomptable.modifierComp();

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut appel d'ejb par client web
    j'ai toujours le message d'exception et donc au lieu de servlet j'ai utilisé une paje jsp et je fais appel à mes bean avec les taglib <use bean> et presque ca marche j'ai un problème de null que je vais résoudre.
    je te remercie infiniment pour ton aide;

Discussions similaires

  1. [EJB3] Injection @EJB dans le Client Web ne fonctionne pas
    Par warwink dans le forum Java EE
    Réponses: 9
    Dernier message: 04/12/2007, 00h28
  2. Réponses: 2
    Dernier message: 05/11/2007, 13h43
  3. Réponses: 4
    Dernier message: 11/10/2006, 21h36
  4. Réponses: 3
    Dernier message: 08/09/2006, 12h35
  5. SSH par client Web sur hôte tiers
    Par gk14fire dans le forum Administration système
    Réponses: 6
    Dernier message: 16/08/2006, 10h28

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