Injection of an environment entry with a default value does not work as expected in JONAS 5.1.0
If I create a EJB 3.0 and use @resource annotation for the injection of an environment entry with a default value, JONAS do not take this value into account:
Example :
@Stateless @Remote public class HelloBean implements Hello { @Resource(name="greetings") private String salutation = "Hello"; public String sayHello(String who) { return salutation + " " + who; } }
Normaly, if no value is defined int the standard descriptor, or if the doesn't exist the field must use the default value defined in the code. In Jonas 5.1.0 the field value is null (when it should be "Hello") and we have the following error :
2009-11-26 16:46:13,484 : SEVERE : RMI TCP Connection(156)-193.48.123.184 : JNDILookupHelper.getJndiName : Cannot find the JNDI name java:comp/env/greetings
javax.naming.NameNotFoundException: greetings
at org.ow2.easybeans.naming.context.ContextImpl.lookup(ContextImpl.java:144)
at org.ow2.easybeans.naming.context.ContextImpl.lookup(ContextImpl.java:138)
at org.ow2.easybeans.naming.context.ContextImpl.lookup(ContextImpl.java:138)
at org.ow2.jonas.lib.naming.java.javaURLContext.lookup(javaURLContext.java:175)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.ow2.easybeans.injection.JNDILookupHelper.getJndiName(JNDILookupHelper.java:86)
at org.ow2.easybeans.injection.JNDILookupHelper.getEnvJndiName(JNDILookupHelper.java:112)
at jee.example.hello.HelloBean.originalEasyBeans
injectedByEasyBeans(HelloBean.java)
at org.ow2.easybeans.gen.invocationcontext.jee.example.hello.HelloBean.EasyBeansInvocationContextImploriginalEasyBeans
injectedByEasyBeansDEPINJECT39797.proceed(Unknown Source)
at org.ow2.jonas.jndi.interceptors.impl.easybeans.ResourceCheckerInterceptor.intercept(ResourceCheckerInterceptor.java:103)
at org.ow2.easybeans.gen.invocationcontext.jee.example.hello.HelloBean.EasyBeansInvocationContextImploriginalEasyBeans
injectedByEasyBeansDEPINJECT39797.proceed(Unknown Source)
at org.ow2.jonas.ejb.easybeans.JOnASENCInterceptor.intercept(JOnASENCInterceptor.java:67)
at org.ow2.easybeans.gen.invocationcontext.jee.example.hello.HelloBean.EasyBeansInvocationContextImploriginalEasyBeans
injectedByEasyBeansDEPINJECT39797.proceed(Unknown Source)
at jee.example.hello.HelloBean.injectedByEasyBeans(HelloBean.java)
at org.ow2.easybeans.container.AbsFactory.injectResources(AbsFactory.java:264)
at org.ow2.easybeans.container.session.SessionFactory.create(SessionFactory.java:184)
at org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.create(StatelessSessionFactory.java:56)
at org.ow2.util.pool.impl.JPool.get(JPool.java:256)
at org.ow2.util.pool.impl.JPool.get(JPool.java:174)
at org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:111)
at org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.localCall(StatelessSessionFactory.java:130)
at org.ow2.easybeans.container.session.SessionFactory.rpcInvoke(SessionFactory.java:237)
at org.ow2.easybeans.rpc.rmi.server.RMIServerRPCImpl.getEJBResponse(RMIServerRPCImpl.java:106)
at sun.reflect.GeneratedMethodAccessor161.invoke(Unknown Source)
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.ow2.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnicastServerRef.java:167)
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)
2009-11-26 16:46:13,514 : SEVERE : RMI TCP Connection(156)-193.48.123.184 : JNDILookupHelper.getJndiName : No object was found for JNDI name java:comp/env/greetings