Lorsque mon serveur MQ devient indisponible, l'appel à QueueConnectionFactory.createQueueConnection() et, éventuellement, se bloque (1-2 minutes plus tard) « javax.transaction.TransactionRolledbackException: Transaction est terminée en raison "timeout" est lancé.QueueConnectionFactory.createQueueConnection() ne pas retourner ou lancer une exception
Je ne trouve pas d'appel JavaEE pour définir un délai d'attente pour la fonction.
Existe-t-il un moyen de faire échouer cette fonction plus rapidement ou de lancer une exception sur WebSphere lorsque le serveur MQ ne peut pas être atteint?
Le QCF est accessible par injection de dépendance.
@Resource(name = "jndi-name-for-QCF")
private QueueConnectionFactory queueConnectionFactory;
…
// this line is timing out.
QueueConnection connection = queueConnectionFactory.createQueueConnection();
Lorsque le serveur MQ est arrêté, une exception IOException ne doit-elle pas être lancée? S'il vous plaît clarifier s'il me manque quelque chose ici. – Haxiel
Je m'attendrais à quelque chose comme ça et c'est ce que je veux, mais ce n'est pas le cas pour moi. L'appel createQueueConnection() se bloque simplement et, éventuellement, le conteneur EJB expire la transaction. createQueueConnection() peut être bloqué dans une boucle essayant de se reconnecter au serveur. Je ne sais pas. J'ai essayé de définir la propriété QCF avancée reconnect = DISABLED, mais avec le même comportement. – tzimnoch
Clarification supplémentaire: le délai d'expiration de la transaction se produit-il lorsque l'application se connecte _pendant_ que le QMGR est mis au repos? Que se passe-t-il lorsque vous essayez _after_ le QMGR est complètement fermé? – Haxiel