Bonsoir,
J'ai repris un tutoriel de débutant pour faire ma premier mini appli en EJB3. J'ai ces classes là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 package com.business; import javax.ejb.Local; import javax.ejb.Remote; @Remote public interface PremierEJB3 { public String ditBonjour(String aQui); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package com.business; import javax.ejb.EJB; import javax.ejb.Remote; import javax.ejb.Stateless; @Stateless public class PremierEJB3Bean implements PremierEJB3 { @EJB private PremierEJB3 premierEJBLocal; public String ditBonjour(String aQui) { return "Bonjour " + aQui + " !!!"; } }En Remote, ça marche bien.
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 package com.jp; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import com.business.PremierEJB3; public class ClientPremierEJB3 { public static void main(String[] args) { try { Context context = new InitialContext(); PremierEJB3 beanRemote = (PremierEJB3)context.lookup("PremierEJB3Bean/Remote"); System.out.println(beanRemote.ditBonjour("ClientPremierEJB3")); } catch (NamingException e) { e.printStackTrace(); } } }
Mais dès que j'annote l'interface par @Local, ça ne fonctionne pas.
J'ai essayé d'appeler mon session bean comme ça :
erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part PremierEJB3 beanRemote = (PremierEJB3)context.lookup("PremierEJB3Bean/Local");puis comme ça :javax.naming.NameNotFoundException: Local not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
at org.jnp.server.NamingServer.getObject(NamingServer.java:785)
at org.jnp.server.NamingServer.lookup(NamingServer.java:443)
at org.jnp.server.NamingServer.lookup(NamingServer.java:399)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.jp.ClientPremierEJB3.main(ClientPremierEJB3.java:17)
erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part (PremierEJB3)context.lookup("PremierEJB3Bean");Comment appeler un session bean en Local?Exception in thread "main" java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to com.business.PremierEJB3
at com.jp.ClientPremierEJB3.main(ClientPremierEJB3.java:17)
Merci pour vos réponses.
Partager