Les EJB

Les EJB - Java - Programmation

Marsh Posté le 24-11-2010 à 17:10:23    

Bonjour,
 
J'ai fais un Stateless EJB très simple, qui permet d'additionner ou de soustraire deux entiers, mais je bloque au niveau du client qui dois utiliser cet EJB (je l'ai pris à partir d'un exemple que j'ai trouvé). il m'affiche une Exception lors de l'exécution et je comprend pas pourquoi ?
 
J'utilise NetBeans 6.9.1 avec GlassFish Server 3.
 
La classe de l'EJB :

Code :
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package CoursBean;
  6. import javax.ejb.Stateless;
  7. /**
  8. *
  9. * @author Moi
  10. */
  11. @Stateless
  12. public class CalcBean implements CalcBeanRemote
  13. {
  14.     public int add(int a , int b)
  15.     {
  16.         System.out.println("Addition" );
  17.         return a+b;
  18.     }
  19.     public int sub(int a , int b)
  20.     {
  21.         System.out.println("Soustraction" );
  22.         return a - b;
  23.     }
  24.    
  25.     // Add business logic below. (Right-click in editor and choose
  26.     // "Insert Code > Add Business Method" )
  27. }


 
L'interface de l'EJB:

Code :
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package CoursBean;
  6. import javax.ejb.Remote;
  7. /**
  8. *
  9. * @author Moi
  10. */
  11. @Remote //accéssible à partir d'un client distant
  12. public interface CalcBeanRemote {
  13.     public int add(int a , int b);
  14.     public int sub(int a , int b);
  15.    
  16. }


 
Et un client :

Code :
  1. package clienbean;
  2. import CoursBean.CalcBeanRemote;
  3. import javax.naming.InitialContext;
  4. import javax.naming.NamingException;
  5. public class Main {
  6.     public static void main(String[] args) throws NamingException {
  7.         InitialContext ic = new InitialContext();
  8.         CalcBeanRemote calcul = (CalcBeanRemote) ic.lookup("cours.CalcBeanRemote" );
  9.         System.out.println(calcul.add(5, 4));
  10.         System.out.println(calcul.sub(5, 4));
  11.     }
  12. }


 
quand j'exécute le client il me sort l'exception suivante:

Code :
  1. run:
  2. 24 nov. 2010 17:02:36 com.sun.enterprise.transaction.JavaEETransactionManagerSimplified initDelegates
  3. INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
  4. Exception in thread "main" javax.naming.NamingException: Lookup failed for 'cours.CalcBeanRemote' in SerialContext ,orb'sInitialHost=localhost,orb'sInitialPort=3700 [Root exception is javax.naming.NameNotFoundException: cours.CalcBeanRemote not found]
  5.         at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
  6.         at javax.naming.InitialContext.lookup(InitialContext.java:392)
  7.         at clienbean.Main.main(Main.java:12)
  8. Caused by: javax.naming.NameNotFoundException: cours.CalcBeanRemote not found
  9.         at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:197)
  10.         at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:168)
  11.         at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:58)
  12.         at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:89)
  13.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  14.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  15.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  16.         at java.lang.reflect.Method.invoke(Method.java:597)
  17.         at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:146)
  18.         at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:176)
  19.         at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:682)
  20.         at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:216)
  21.         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1841)
  22.         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1695)
  23.         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1078)
  24.         at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:221)
  25.         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:797)
  26.         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:561)
  27.         at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2558)
  28.         at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:492)
  29.         at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528)
  30. Java Result: 1
  31. BUILD SUCCESSFUL (total time: 5 seconds)


 
Merci


Message édité par man_u le 24-11-2010 à 17:12:35
Reply

Marsh Posté le 24-11-2010 à 17:10:23   

Reply

Marsh Posté le 24-11-2010 à 23:12:23    

Je doute que

 

CalcBeanRemote calcul = (CalcBeanRemote) ic.lookup("cours.CalcBeanRemote" );

 

soit le nom correct de ton ejb. Faudrait voir comment glassfish nomme par défaut les ejb dans l'annuaire jndi.

 

essaye juste  

 

CalcBeanRemote calcul = (CalcBeanRemote) ic.lookup("CalcBean" );


Message édité par exhortae le 24-11-2010 à 23:12:43
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed