NoClassDefFoundError (échec d'initialisation) - et IBM Websphere MQ
Im ayant un problème sur un Ressort en fonction d'une webapp qui est en cours de déploiement sur Websphere et interagit avec IBM MQ.
Tout est bien jusqu'à ce que je tente quelques essais de défaillance.
Alors que la webapp est en place et en cours d'exécution, je m'arrête IBM MQ. Je puis invoquer la webapp pour envoyer un message de JMS. La webapp accroché à l'appel à JmsTemplate.convertAndSend et de l'exception suivante a été trouvé dans les ffdc répertoire.
Note le JmsTemplate a été initialisé à l'aide de la JNDIObjectFactoryBean où il avait eu la MQ Connexion paramètres d'Usine à partir de Websphere.
Quelqu'un peut-il expliquer la raison derrière le "Initializaton Échec" ??
[27/01/11 14:29:39:498 GMT] FFDC Exception:java.lang.NoClassDefFoundError SourceId:com.ibm.ws.asynchbeans.J2EEContext.run ProbeId:894 Reporter:com.ibm.ws.asynchbeans.J2EEContext@1280128
java.lang.NoClassDefFoundError: com.ibm.msg.client.wmq.common.internal.Reason (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1024)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:997)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.access$800(WMQMessageProducer.java:63)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.initialise(WMQMessageProducer.java:758)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.<init>(WMQMessageProducer.java:972)
at com.ibm.msg.client.wmq.internal.WMQSession.createProducer(WMQSession.java:943)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.createProducer(JmsSessionImpl.java:1162)
at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createSender(JmsQueueSessionImpl.java:131)
at com.ibm.mq.jms.MQQueueSession.createSender(MQQueueSession.java:148)
at com.ibm.mq.jms.MQQueueSession.createProducer(MQQueueSession.java:249)
at com.ibm.ejs.jms.JMSMessageProducerHandle.<init>(JMSMessageProducerHandle.java:132)
at com.ibm.ejs.jms.JMSSessionHandle.createProducer(JMSSessionHandle.java:1788)
at org.springframework.jms.core.JmsTemplate.doCreateProducer(JmsTemplate.java:968)
at org.springframework.jms.core.JmsTemplate.createProducer(JmsTemplate.java:949)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:568)
at org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:541)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:471)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:539)
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:617)
Salut Rob, je ne sais pas qui d'installation de la machine, aussi ne sais pas comment WMQ a été installé. Comment pourrais-je le vérifier?
Il serait dans /usr/mqm (AIX), /opt/mqm (UNIX/Linux) ou sur Windows, c'est généralement dans C:\Program Files\IBM\WebSphere MQ. En règle générale, si il est dans votre chemin, vous pouvez taper dspmqver pour voir la version et le numéro de version.
Version: 7.0.1.0 CMVC Niveau: p000-L090813 BuildType: IKAP (production)
Eh bien, je suis content de mettre cela comme un commentaire et non une réponse. J'étais sur la mauvaise voie.
OriginalL'auteur Alex | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
"(Échec d'initialisation)" signifie que l'initialiseur statique ("<clinit>") la méthode de la classe précédemment jeta un décoché exception. Lorsque cela se produit, la JVM des marques de la classe en tant que mauvais, et les tentatives ultérieures d'utiliser ou d'accéder à la classe le résultat de NoClassDefFoundError. La recherche de vos journaux d'erreurs qui incluent "la Raison.<clinit>" dans la trace de la pile pour trouver la cause sous-jacente.
(En général, le NoClassDefFoundError devrait inclure un "Causé par" à l'exception qui s'est produite dans l'initialiseur statique, mais pour une raison quelconque, la cause n'était pas présent ou que vous ne l'avez pas inclus dans votre trace de la pile.)
OriginalL'auteur Brett Kail
Il ressemble à un message d'absence de catalogue. Je suis en train de lire le vidage de pile comme la levée d'une exception (NoClassDefFound) est d'essayer d'accéder à quelque chose dans son constructeur. La catégorie manquante peut être la cause réelle ou le message manquant peut être masquant la véritable exception, selon la façon dont il a été jeté de cours. Pouvez-vous mettre un bloc catch et manuellement à pied les exceptions imbriquées?
Même si cette exception n'est pas partie d'un héritage d'une exception, il peut également signifier qu'elle a été instancié dans un bloc catch, de une exception inconnue. Je ne m'attends pas à cette question dans d'IBM MQ code, mais on ne sait jamais.
Oui, si il n'y avait qu'un seul catalogue. Il peut y avoir plusieurs catalogues. En outre, il pourrait être un seul message manquant à partir d'un catalogue de ce qui existe.
OriginalL'auteur Kelly S. French