2016-07-06 1 views
1

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(); 
+1

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

+0

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

+0

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

Répondre

1

Je pense généralement ce serait géré administrativement avec config plutôt que dans votre programmation code de l'application. Par exemple. Voir this article pour quelques exemples.

Vous n'êtes pas sûr que vous puissiez faire beaucoup de choses en configurant les paramètres de regroupement de connexion WebSphere. Cela semble pointer vers la configuration du fournisseur MQ lui-même (par exemple, les canaux).

+0

Je ne vois pas la réponse à mon problème plus immédiat au lien, mais il y a beaucoup d'informations précieuses sur le traitement des déconnexions du serveur MQ que je n'ai pas encore commencé à traiter. Je vous remercie. – tzimnoch