Bonjour,
Je viens d'installer WebSphere MQ 6.0 (trial).
J'ai creer un Gestionnaire de file d'attente "mymgr" et une file d'attente MYQUEUE.
Apparament le serveur fonctionne bien, j'ai fais des test d'envoi de messages avec l'utilitaire "Testeur D'API Webphere MQ".
Maintenant je souhaite envoyer et recuperer des messages dans cette file d'attente.
Pour "acceder" a MQ via JNDI, j'utlise l'utilitaire JMSAdmin avec le script de config suivant :
et le fichier de commande suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory PROVIDER_URL=file:/C:/jndi/JNDI-Directory SECURITY_AUTHENTICATION=none
Cela me cre queue et queue connection factory dans un annuaire JNDI en flat file : unfichier .bindings
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def ctx(jms) chg ctx(jms) def qcf(MQqcf) qmgr(urgMgr) hostname(127.0.0.1) port(1414) transport(client) def q(MQueue) QUEUE(MYQUEUE) targclient(MQ) dis ctx end
Ensuite ma classe Java pour envoyer un message :
le fichier jndi.properties :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public class Sender { public static void main(String[] args) { Context context = null; ConnectionFactory factory = null; Connection connection = null; String factoryName = "jms\\MQqcf"; String destName = "jms\\MQueue"; Destination dest = null; Session session = null; MessageProducer sender = null; String text = " message de test"; try { // create the JNDI initial context. Properties properties = new Properties(); FileInputStream fis = new FileInputStream("E:/eclipse_3.0.1/workspace/Test/com/test/jms/jndi.properties"); properties.load(fis); fis.close(); context = new InitialContext(properties); Object obj = context.lookup(factoryName); factory = (ConnectionFactory) obj; // look up the Destination dest = (Destination) context.lookup(destName); // create the connection connection = factory.createConnection(); // create the session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // create the sender sender = session.createProducer(dest); // start the connection, to enable message sends connection.start(); TextMessage tmessage = session.createTextMessage(); // tmessage.setText(text + (i + 1)); tmessage.setText(text); sender.send(tmessage); System.out.println("message Sent"); } catch (Throwable exception) { exception.printStackTrace(); } finally { // close the context if (context != null) { try { context.close(); } catch (NamingException exception) { exception.printStackTrace(); } } // close the connection if (connection != null) { try { connection.close(); } catch (JMSException exception) { exception.printStackTrace(); } } } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 java.naming.provider.url=file:/C:/jndi/JNDI-Directory java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory java.naming.security.principal=none
et voici le messgae d'erreur :
javax.naming.NamingException: unexpected exception [Root exception is javax.jms.JMSException: MQJMS1006: Valeur incorrecte pour tempQPrefix : ]; remaining name 'jms\MQqcf'
at com.sun.jndi.fscontext.FSContext.generateNamingException(FSContext.java:806)
at com.sun.jndi.fscontext.RefFSContext.lookup(RefFSContext.java:149)
at com.sun.jndi.fscontext.FSContext.lookup(FSContext.java:127)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at com.test.jms.Sender.main(Sender.java:52)
Caused by: javax.jms.JMSException: MQJMS1006: Valeur incorrecte pour tempQPrefix :
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:572)
at com.ibm.mq.jms.MQQueueConnectionFactory.setTempQPrefix(MQQueueConnectionFactory.java:443)
at com.ibm.mq.jms.MQQueueConnectionFactory.setFromReference(MQQueueConnectionFactory.java:400)
at com.ibm.mq.jms.MQQueueConnectionFactoryFactory.populateQCF(MQQueueConnectionFactoryFactory.java:75)
at com.ibm.mq.jms.MQQueueConnectionFactoryFactory.getObjectInstance(MQQueueConnectionFactoryFactory.java:53)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
at com.sun.jndi.fscontext.RefFSContext.lookup(RefFSContext.java:146)
... 3 more
Cette exeption se produit sur le lookup de la QueueFactory
Je ne comprend pas ce qui se passe.
Merci d'avance pour vos réponse et pour votre patience a lire tout ca.
@+
LÔic
Partager