J'utilise 5.1.x jboss, EJB3.0Transaction est alternée Timeouts
Je MDB qui écoute file d'attente JMS. Lorsque le MDB prend un message, il envoie un message via TCP à un modem. parfois que modem ne marche pas de réponse lorsque le serveur est en attente d'une réponse:
byte[] byteData = receive(is);
coz je ne peux pas le Délai d'exécution sur InputStream. Ainsi, grâce au conteneur EJB, le délai de transaction (qui est là par défaut) annule l'opération, puis une nouvelle tentative est exécutée à nouveau.
ce mécanisme par défaut fonctionne bien pour moi, le problème est:
Parfois, la transaction arrive jamais à expiration, et après longtemps, je reçois le texte suivant msg dans la console:
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TransactionReaper_18] - TransactionReaper::check timeout for TX a6b2232:5f8:4d3591c6:76 in state RUN
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicAction_58] - Abort of action id a6b2232:5f8:4d3591c6:76 invoked while multiple threads active within it.
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.CheckedAction_2] - CheckedAction::check - atomic action a6b2232:5f8:4d3591c6:76 aborting with 1 threads active!
15:18:22,578 WARN [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TransactionReaper_7] - TransactionReaper::doCancellations worker Thread[Thread-10,5,jboss] successfully canceled TX a6b2232:5f8:4d3591c6:76
Tous idée quel est le problème? et pourquoi parfois ça marche et parfois ça ne marche pas?
merci,
ray.
Comment pourrais-je gérer? Je le veux pour 'interrompre' le fil en cours d'exécution. 10x – rayman
utilisez un indicateur pour indiquer une interruption et sur cette base, le thread doit arrêter sa tâche en cours d'exécution s'il est défini. –
Oui, mais encore Vous dites que le délai d'attente de transaction ne sera pas en mesure d'expirer aussi des threads supplémentaires qui s'exécutent dans le thread lui-même. Je veux réaliser ceci, comment pourrais-je l'implémenter? 10x. – rayman