Bonjour à tous,
J'ai créé un projet enterprise avec maven, netbeans7.2 et glassfish3.1. J'ai généré les classes Facade dans le module EJB et les classes JSF Controller dans le module web.
Je veut injecter les EJB Facade dans les controleurs JSF mais ça ne marche pas.
J'ai bien cherché et je lit toujours que l'injection par @EJB est possible dans tout bean géré par le conteneur (dont les JSF Managed Beans) mais malgèr les essais et même avec JNDI je n'arrive pas à faire fonctionner l'application. Je ne comprend pas le problème, j'espère avoir votre aide.
Quand je lance l'application et je demande la page faisant appel à AirportController j'ai le message d'erreur suivant:
Je joint les codes source du projet:
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 SEVERE: javax.naming.NamingException: Lookup failed for 'java:global/FLAMS-ear_1.0-SNAPSHOT/FLAMS-ejb-1.0-SNAPSHOT/AirportFacade' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: FLAMS-ear_1.0-SNAPSHOT] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) at javax.naming.InitialContext.lookup(InitialContext.java:411) at javax.naming.InitialContext.lookup(InitialContext.java:411) at com.procc.backing.AirportController.init(AirportController.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.glassfish.faces.integration.GlassFishInjectionProvider$2.run(GlassFishInjectionProvider.java:382) at java.security.AccessController.doPrivileged(Native Method) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokeLifecycleMethod(GlassFishInjectionProvider.java:376) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:306) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:229) at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103) at com.sun.el.parser.AstValue.getTarget(AstValue.java:149) at com.sun.el.parser.AstValue.getType(AstValue.java:84) at com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:200) at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98) at org.primefaces.component.datatable.DataTable.isLazy(DataTable.java:968) at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:191) at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:108) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:61) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:45) at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:185) at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:108) at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:57) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:45) at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) Caused by: javax.naming.NameNotFoundException: FLAMS-ear_1.0-SNAPSHOT at com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:310) at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:218) at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:219) at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77) at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505) ... 77 more
module FLAMS-ejb:
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 / public abstract class AbstractFacade<T> { private Class<T> entityClass; public AbstractFacade(Class<T> entityClass) { this.entityClass = entityClass; } protected abstract EntityManager getEntityManager(); public void create(T entity) { getEntityManager().persist(entity); } .... // méthodes crud
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @Stateless public class AirportFacade extends AbstractFacade<Airport> implements AirportFacadeLocal{ @PersistenceContext(unitName = "flams_pu") private EntityManager em; @Override protected EntityManager getEntityManager() { return em; } public AirportFacade() { super(Airport.class); } }Module FLAMS-web:
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 @Local public interface AirportFacadeLocal { void create(Airport alert); void edit(Airport alert); void remove(Airport alert); Airport find(Object id); List<Airport> findAll(); List<Airport> findRange(int[] range); int count(); }
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 public abstract class AbstractController<T> { private AbstractFacade<T> ejbFacade; private Class<T> itemClass; private T selected; private List<T> items; private enum PersistAction { CREATE, DELETE, UPDATE } public AbstractController() { }merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @ManagedBean(name="airportController") @ViewScoped public class AirportController extends AbstractController<Airport> implements Serializable { @EJB public AirportFacade ejbFacade; public AirportController() { super(Airport.class); } }
Partager