users@glassfish.java.net

SLSB implementing interface with EJB 3.1 simplified packaging/GFv3

From: <glassfish_at_javadesktop.org>
Date: Thu, 18 Jun 2009 09:15:52 PDT

I am using the latest promoted GFv3 build. I have a stateless session bean that is being injected from a JSF 2.0 managed bean. I pared it down to the simplest possible case:

public interface IJavaSB {
    String getLanguage();
}

@Stateless public class JavaSB implements IJavaSB {
    public String getLanguage() { return "Java"; }
}

@ManagedBean(name = "test") @SessionScoped public class JavaMB {
    @EJB private JavaSB slsb;
    ...
}

I get the stack trace below. If I remove the "implements IJavaSB", all is well, and my app works.

That seems crazy. Before I file a bug report, can anyone tell me whether there is any rule in EJB3.1 that would explain this behavior?

Thanks,

Cay

Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=managed.JavaMB/slsb,Remote 3.x business interface=session.JavaSB,ejb-link=null,mappedName=session.JavaSB,refType=Session into class managed.JavaMB
        at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:98)
        at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:207)
        ... 53 more
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=managed.JavaMB/slsb,Remote 3.x business interface=session.JavaSB,ejb-link=null,mappedName=session.JavaSB,refType=Session into class managed.JavaMB
        at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:439)
        at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:217)
        at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:132)
        at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:94)
        ... 54 more
Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/managed.JavaMB/slsb' in SerialContext [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=managed.JavaMB/slsb,Remote 3.x business interface=session.JavaSB,ejb-link=null,mappedName=session.JavaSB,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'session.JavaSB#session.JavaSB' [Root exception is javax.naming.NamingException: Lookup failed for 'session.JavaSB#session.JavaSB' in SerialContext [Root exception is javax.naming.NameNotFoundException: session.JavaSB#session.JavaSB not found]]]
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:439)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:340)
        ... 57 more
Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=managed.JavaMB/slsb,Remote 3.x business interface=session.JavaSB,ejb-link=null,mappedName=session.JavaSB,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'session.JavaSB#session.JavaSB' [Root exception is javax.naming.NamingException: Lookup failed for 'session.JavaSB#session.JavaSB' in SerialContext [Root exception is javax.naming.NameNotFoundException: session.JavaSB#session.JavaSB not found]]
        at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:112)
        at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:728)
        at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:488)
        at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:142)
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:425)
        ... 60 more
Caused by: javax.naming.NamingException: Lookup failed for 'session.JavaSB#session.JavaSB' in SerialContext [Root exception is javax.naming.NameNotFoundException: session.JavaSB#session.JavaSB not found]
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:439)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:108)
        ... 64 more
Caused by: javax.naming.NameNotFoundException: session.JavaSB#session.JavaSB not found
        at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:197)
        at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:168)
        at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:58)
        at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:100)
        at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:427)
        ... 67 more
[Message sent by forum member 'cayhorstmann' (cayhorstmann)]

http://forums.java.net/jive/thread.jspa?messageID=351872