MDB, JMS et OC4J/problème d'accès ConnectionFactory
Bonjour,
je dois constituer un jeu d'essai pour tester des OC4J liés à certaines versions d'application server.
J'ai un soucis sur un de ces jeux d'essais avec mes tests sur les Message Driven Bean (je n'en avais jamais utilisé jusqu'à présent; et j'avais encore jamais touché à J2EE y a 6 mois donc pour l'instant j'ai encore du mal).
Donc; j'arrive à faire le déploiement et "en théorie" à accéder à ma queueConnectionFactory (celle qui est paramétré par défaut).
Cependant lorsque je lance mon message depuis un Bean Facade, il ne me trouve pas la factory en question:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| javax.ejb.EJBException: Error looking up home; nested exception is: javax.naming.NameNotFoundException: java:comp/env/jms/OracleASjms
/MyQCF not found in Facade
javax.naming.NameNotFoundException: java:comp/env/jms/OracleASjms/MyQCF not found in Facade
at com.oracle.naming.J2EEContext.getSubContext(J2EEContext.java:199)
at com.oracle.naming.J2EEContext.lookup(J2EEContext.java:146)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.ApplicationContext.lookupInJavaContext(ApplicationContext
.java:306)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.ApplicationContext.unprivileged_lookup(ApplicationContext
.java:230)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.ApplicationContext.lookup(ApplicationContext.java:195)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.ejbstruts.model.FacadeBean.sendMessage(FacadeBean.java:218)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
... |
Mon appel se fait de cette manière:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public void sendMessage() {
try{
Context contexte =InitContext.getContext().getInitialContext();
//Insertion d'un message dans le bean message
QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory)
contexte.lookup("java:comp/env/jms/OracleASjms/MyQCF");
Queue queue = (Queue)contexte.lookup("java:comp/env/jms/demoQueue");
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();
QueueSession queueSession =
queueConnection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(queue);
TextMessage message = queueSession.createTextMessage();
message.setText("Bonjour!");
queueSender.send(message);
}catch(JMSException e) {throw new EJBException(e.toString());
}catch (NamingException e){throw new EJBException("Error looking up home", e);}
} |
Est ce que l'appel JNDI est correct ou est ce que je me suis planté à ce niveau?
Apparement la factory est définie avec le lien : OracleASjms/MyQCF mais je ne suis pas sur de la manière dont j'invoque la chose.