Using @In or @EJB
nimo22 Sep 25, 2008 6:35 PMIn an EJB-Project, what should I prefer to inject SessionBeans?
@In BeanInterface i;
or
@EJB BeanInterface i;
What s the real difference?
I found out, that when I tried it with @In then all works, but when I tried it with @EJB, then I get this error:
18:31:52,843 ERROR [viewhandler] Error Rendering View[/view.xhtml] java.lang.NullPointerException at MyBean.getList(MyBean.java:81) 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 org.jboss.seam.util.Reflections.invoke(Reflections.java:21) at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.persistence.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:43) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.core.ConversationInterceptor.aroundInvoke(ConversationInterceptor.java:65) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
MyBean.getList retrieves a list coming from my EJB-injected SessionBean:
MyBean { @EJB SessionBeanEJBLocal sessionBean; public List <Shift> getShiftList() { return sessionBean.getList(); }
When I do this, then all works:
MyBean { @In SessionBeanEJBLocal sessionBean; public List <Shift> getShiftList() { return sessionBean.getList(); }
But why??