J'ai un simple WebSocket implémenté dans JavaEE 7 que j'aimerais utiliser comme producteur JMS. Cependant, quand j'essaye d'injecter le ConnectionFactory
et le Queue
dedans comme JavaEE @Resource
je vois toujours qu'il est nul. Mon code ressemble à ceci:Injecter JMS ConnectionFactory et la file d'attente dans un WebSocket?
@Named
@ServerEndpoint("/hello")
public class WebSocketA implements Serializable {
@Resource(mappedName = "java:/JmsXA")
private ConnectionFactory connectionFactory = null;
@Resource(mappedName = "java:jboss/exported/jms/queue/test")
private Queue testQueue = null;
...
}
Y at-il une raison pour laquelle je ne peux pas injecter ces Resource
s? Cela n'est-il pas pris en charge dans JavaEE WebSockets? Je déploie sur Wildfly 8.1, et mon application est une simple WAR avec seulement la classe d'implémentation WebSocket à l'intérieur.
Il y a des problèmes connus avec CDI et WebSockets (https://java.net/jira/plugins/servlet/mobile#issue/GLASSFISH-20468) mais AFAIK ils n'affectent pas l'injection '@ Resource'. Avez-vous essayé un serveur différent, peut-être Glassfish 4 pour vous assurer que ce n'est pas un problème de Wildfly? – Baldy
Je n'ai pas. Notre environnement de déploiement est JBoss/Wildfly, nous devons donc nous assurer que nous pouvons le faire fonctionner sur cette plate-forme. Cela ne nous aide pas si cela fonctionne sur Glassfish, malheureusement. – Shadowman
Etes-vous sûr que le nom JNDI configuré est correct? Vous pouvez rechercher manuellement le nom JNDI à tester, voir, par exemple, https://github.com/wildfly/quickstart/blob/master/helloworld-jms/src/main/java/org/jboss/as/quickstarts/jms/ HelloWorldJMSClient.java –