JOnAS XDoclet – accéder à l’interface locale des EJBs
Vous générez vos EJBs avec XDoclet et les déployez dans JOnAS ? Et vous n’arrivez à pas accéder à l’interface locale ?
Dès que vous faites un appel à la méthode :
MyEJBServiceUtil.getLocalHome();
L’exception suivante est levée :
javax.naming.NameNotFoundException: MyEJBServiceLocal at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:95) at javax.naming.InitialContext.lookup(InitialContext.java:355) at org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140) at org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150) at javax.naming.InitialContext.lookup(InitialContext.java:351) at org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:118) at javax.naming.InitialContext.lookup(InitialContext.java:351) at com.company.project.ejb.MyEJBServiceUtil.lookupHome(MyEJBServiceUtil.java:22) at com.company.project.ejb.MyEJBServiceUtil.getLocalHome(MyEJBServiceUtil.java:64) at com.company.project.ejb.MyEJBServiceBean.myService(MyEJBServiceBean.java:112) at org.objectweb.jonas_gen.com.company.project.ejb.JOnASMyEJBService_69323337Remote.myService(JOnASMyEJBService_69323337Remote.java:56) 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:585) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294) at org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnicastServerRef.java:143) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) at java.lang.Thread.run(Thread.java:595)
En fait, JOnAS ne permet pas de configurer la référence JNDI de votre interface locale. Cette référence est obligatoirement égale à la référence JNDI de l’interface distante à laquelle il est ajouté la chaîne de caractère _L
. Ainsi, si la référence distante JNDI de votre EJB est MyEJBService
, la référence locale est MyEJBService_L
.
Donc, pour cet exemple, les tags XDoclet à positionner sont :
/* * @ejb.bean * name="MyEJBService" * type="Stateless" * view-type="local" * jndi-name="MyEJBService" * local-jndi-name="MyEJBService_L" * @jonas.bean * ejb-name="MyEJBService" * jndi-name="MyEJBService" */
Maintenant, vous êtes capable de récupérer l’interface locale d’un EJB généré avec XDoclet et déployé sous JOnAS.
https://blog.lecacheur.com/2006/09/08/jonas-xdoclet-acceder-a-l-interface-locale-des-ejbs/Java EEejb,jonas,xdocletVous générez vos EJBs avec XDoclet et les déployez dans JOnAS ? Et vous n'arrivez à pas accéder à l'interface locale ? Dès que vous faites un appel à la méthode : MyEJBServiceUtil.getLocalHome(); L'exception suivante est levée : javax.naming.NameNotFoundException: MyEJBServiceLocal at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:95) at javax.naming.InitialContext.lookup(InitialContext.java:355) at org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:140) at org.objectweb.carol.jndi.spi.AbsContext.lookup(AbsContext.java:150) at javax.naming.InitialContext.lookup(InitialContext.java:351) at org.objectweb.carol.jndi.spi.MultiContext.lookup(MultiContext.java:118) at javax.naming.InitialContext.lookup(InitialContext.java:351) at com.company.project.ejb.MyEJBServiceUtil.lookupHome(MyEJBServiceUtil.java:22) at com.company.project.ejb.MyEJBServiceUtil.getLocalHome(MyEJBServiceUtil.java:64) at com.company.project.ejb.MyEJBServiceBean.myService(MyEJBServiceBean.java:112) at org.objectweb.jonas_gen.com.company.project.ejb.JOnASMyEJBService_69323337Remote.myService(JOnASMyEJBService_69323337Remote.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
Laisser un commentaire