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 :
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
et le fichier de commande suivant:
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
Cela me cre queue et queue connection factory dans un annuaire JNDI en flat file : unfichier .bindings

Ensuite ma classe Java pour envoyer un message :
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();
          }
      }
  }
}
}
le fichier jndi.properties :
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