Hi,
Previously I had my JMS queues and queuConnectionFactories declared in my JSF managed beans using @Resource(mappedName="jms/etcEtc"). But I read on some posts that it's best practice to declare them in the sun-web.xml and reference them by name.
So I declared a couple of resource in my sun-web.xml
<resource-ref>
<res-ref-name>QueueConnectionFactory</res-ref-name>
<jndi-name>jms/QueueConnectionFactory</jndi-name>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>QueryQueue</resource-env-ref-name>
<jndi-name>jms/QueryQueue</jndi-name>
</resource-env-ref>
And referenced them in code:
@Resource(name="QueueConnectionFactory")
private QueueConnectionFactory queueConnectionFactory;
@Resource(name="QueryQueue")
private Queue queryQueue;
I get the following error (below). Can someone tell me what I'm doing wrong here and the 'best practice' way to specify references to JMS queues from a web tier?
Caused by: javax.faces.FacesException: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Message-Destination-Ref QueryQueue_at_java.lang.String_at_null into class com.megajobindex.web.SearchManagedBean
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:340)
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:527)
... 100 more
Caused by: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Message-Destination-Ref QueryQueue_at_java.lang.String_at_null into class com.megajobindex.web.SearchManagedBean
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:387)
at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:206)
at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:127)
at com.sun.faces.vendor.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:79)
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:298)
... 101 more
Caused by: java.lang.IllegalArgumentException: Can not set javax.jms.Queue field com.megajobindex.web.SearchManagedBean.queryQueue to com.sun.enterprise.naming.SerialContext
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
at java.lang.reflect.Field.set(Field.java:657)
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:338)
... 105 more
Cheers
Adam
Stay connected to the people that matter most with a smarter inbox. Take a look
http://au.docs.yahoo.com/mail/smarterinbox