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

Struts 1 Java Discussion :

Probleme ejb3 struts


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Points : 17
    Points
    17
    Par défaut Probleme ejb3 struts
    Bonjour

    je develope un simple application Struts avec des modules EJB3

    mon probleme que je n'arrive pas faire un lookup de mon ejb il me lance cette exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     javax.naming.NameNotFoundException: BookManager not bound
    et voici mon code:

    Interface:

    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
    package test;
     
    import java.util.Collection;
     
     
    import javax.ejb.Remote;
     
     
     
    @Remote
    public interface BookManager_Interface {
    public void init ();
    public void loadData();
    public long saveToDB(Book2 book);
    public Book2 loadBookById(long id);
    public void deleteBookById(long id);
    public Collection getAllBooks();
    }
    Bean:
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    package test;
     
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.Random;
     
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
     
    @Stateless
    public class BookManager implements BookManager_Interface {
    	private Collection books;
    	@PersistenceContext
    	EntityManager em;
    	public void deleteBookById(long id) {
    		em.remove(em.find(Book2.class, id));
    	}
     
    	public Collection getAllBooks() {
    		// TODO Auto-generated method stub
    		loadData();
    		return books;
    	}
     
    	public void init() {
    		// TODO Auto-generated method stub
    		// TODO Auto-generated method stub
    		Random random = new Random();
    		em.persist(new Book2(random.nextLong(), "David Roos", "Struts book", true));
    	    em.persist(new Book2(random.nextLong(), "Micheal Jackson", "Java book", true));
    	    em.persist(new Book2(random.nextLong(), "Bruce Lee", "Java2 book", false));
    	    em.persist(new Book2(random.nextLong(), "Tom Jones" ,"EJB book", true));
    	    em.persist(new Book2(random.nextLong(), "Mc Donald", "Jboss for beginners", false));
            em.persist(new Book2(random.nextLong(), "Lars Mars", "Using Myeclipse for cooking", true));
            em.persist(new Book2(random.nextLong(), "Mary Jane", "EJB or spending your weekends", true));
     
    	}
     
    	public Book2 loadBookById(long id) {
    		// TODO Auto-generated method stub
     
    		return (Book2)em.find(Book2.class, id);
    	}
     
    	public void loadData() {
    		// TODO Auto-generated method stub
            books = (Collection)em.createQuery("from Book2");
            if (books == null)
                init();
    	}
     
     
     
     
    	public long saveToDB(Book2 book) {
    		 loadData();
     
    	        // laliluna 04.10.2004 loop over collection and trying to find the book
    	        boolean bookExist = false;
    	        ArrayList booksNew = (ArrayList) books;
    	        int index = 0;
    	        for (Iterator iter = books.iterator(); iter.hasNext();) {
    	            Book2 element = (Book2) iter.next();
    	            // laliluna 04.10.2004 if book is found do an update
    	            if (element.getId() == book.getId()) {
    	            	booksNew.set(index, book);
    	                bookExist = true;
    	                break;
    	            }
    	            index++;
    	        }
     
    	        books = booksNew;
     
    	        // laliluna 04.10.2004 if book is not found, create a new book
    	        if (bookExist == false) {
    	            Random random = new Random();
    	            book.setId(random.nextLong());
    em.persist(book);	       
    }
     
    	        // laliluna 04.10.2004 save to DB ;-)
     
    	        return book.getId();
    	}
     
     
     
     
     
    }

    Puis je fais un appel dans mon action:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try {
    				 Context context = new InitialContext();
    				BookManager_Interface BM=(BookManager_Interface)context.lookup("BookManager/remote") ;
    			BM.deleteBookById(id);
    			} catch (NamingException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    à savoir que j'ai ajouté mon fichier jndi.properties à la racine.

    Si quelqu'un peut m'aider je suis preneur.

    Merci

  2. #2
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    Tu peux regarder ce post , peut-être as-tu mal initialisé le context ?

    Si tu travailles avec JBoss, tu peux aller dans la console jmx et cliquer sur service=JNDIView puis tu invoques la méthode list().

    Si l'ejb est correctement déployé tu devrais voir son nom.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Je vien de regarder mon jndiview mais je ne vois pas le context de mon appli.


    En fait j'ai fais un test : j'ai creé un EJB project et j'ai ajoouter mes ejb et sa marche nickel, alors que si je creé un projet WebDynamique et j'ajoute les memes ejb sa génére l'erreur évoquée si dessus.

    Vraiment je ne comprend pas est ce qu'il ya un Update à faire du webtools ? :je sais pas, sa commence à m'engoisser ce truc

  4. #4
    Membre confirmé Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Points : 452
    Points
    452
    Par défaut
    A mon avis quand tu crée un EJB Project sous Eclipse, il réalise certaines opérations qui ne sont pas faites dans un projet web.

    Je ne suis pas spécialiste d'EJB mais je te conseille de mettre ton poste dans le sous-forum EJB. Tu auras d'avantage de chance de trouver une réponse, étant donné que ton problème n'a rien à voir avec Struts

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    // précision du contexte pour JNDI
    // on peut aussi passer par le fichier jndi.properties
    final Hashtable<String, String> env = new Hashtable<String, String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "org.jnp.interfaces.NamingContextFactory");
    env.put(Context.URL_PKG_PREFIXES,
    "org.jboss.naming:org.jnp.interfaces");
    env.put(Context.PROVIDER_URL, "localhost:1099");
    // récupération du contexte avec la configuration
    InitialContext context = new InitialContext(env);
    // récupération du bean grâce à JNDI
    CalculetteRemote cr = (CalculetteRemote) context.lookup("CalculetteBean/remote");
    //CalculetteRemote est l'interface Remote de notre EJB
    et voila un code qui fonctionne

Discussions similaires

  1. probleme avec struts+hibernate
    Par crossmen dans le forum Struts 1
    Réponses: 3
    Dernier message: 17/05/2007, 19h07
  2. probleme avec struts menu
    Par khaledirb7 dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/03/2007, 12h57
  3. Probleme avec Struts
    Par hicham95 dans le forum Struts 1
    Réponses: 2
    Dernier message: 27/12/2006, 10h59
  4. probleme avec struts-html.tld
    Par kouts dans le forum Struts 1
    Réponses: 3
    Dernier message: 09/08/2006, 13h32
  5. [Struts] Problème avec struts-config.xml
    Par The_freeman dans le forum Struts 1
    Réponses: 6
    Dernier message: 29/01/2006, 22h55

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