2016-06-30 18 views
0

Mein Wildfly-Server führt eine Kopiermethode aus, die 30 Minuten dauert. Für jeden kopierten Artikel habe ich eine Log-Nachricht bekommen. Ater 10 Minuten der Server Druck für etwa 20 Sekunden folgende Meldung:Wildfly-Transaktionen

javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: kann nicht geöffnet Verbindung

Danach ist der Server Fortfahren mit dem Kopiervorgang. Wenn der Server jedoch fertig ist, werden alle Transaktionen zurückgesetzt. Also habe ich versucht, diese Anmerkung für meine Kopie Methode hinzufügen:

@TransactionAttribute(REQUIRES_NEW) 

Jetzt ist der Server ohne Ausnahme den Kopiervorgang läuft, aber am Ende das Protokoll sagt:

2016-06-30 14: 41: 06,262 WARN [com.arjuna.ats.jta] (Thread-1195 (HornetQ-client-global-threads-252748997)) ARJUNA016041: Vorbereitung auf < formatId = 131077, gtrid_length = 29, bqual_length = 36, tx_uid = 0: ffff7f000101: -76961d26: 577503fd: 1297, Knotenname = 1, branch_uid = 0: ffff7f000101 : -76961d26: 577503fd: 1298, subordinatenodename = null, eis_name = unbekannt uvb name> (DelegatingSession [session = ClientSessionImpl [name = c2eb2924-3eb6-11e6-8fd4-954338fa95f0, username = null, geschlossen = false, Fabrik = ClientSessionFactoryImpl [serverLocator = ServerLocatorImpl [initialConnectors = [TransportConfiguration (name = bdde9687-3eb6-11e6-8fd4-954338fa95f0, Fabrik = org-HornetQ-Core-Remoting-impl-INVM-InVMConnectorFactory) ? server-id = 0 ], discoveryGroupConfiguration = null], connectorConfig = TransportConfiguration (name = bdde9687-3eb6-11e6-8fd4-954338fa95f0, Fabrik = org-HornetQ-Core-Remoting-impl-INVM-InVMConnectorFactory) ? server-id = 0, backupConfig = null ], metaData = (jms-session = ressourcen Adapter = Inbound,)] @ 62eae143]) fehlgeschlagen mit Ausnahme XAException.XA_RBOTHER: javax.transaction.xa.XAException

Und wieder alle Transaktionen sind rolledback . Die Wildfly Admin Console Statistics scheint normal zu sein. Wenn ich versuche, weniger Elemente zu kopieren, läuft der Vorgang ohne Probleme. Ich habe auch versucht, den transaction-default-timeout-Wert zu erhöhen, aber mit dem gleichen Ergebnis.

Update: Ich habe eine MySQL-Datenbank und ich möchte eine Bean in die gleiche Tabelle mit einigen anderen Werten kopieren. Der Code ist ungefähr 1000 Zeilen.

Die Hibernate Ausnahme tritt bei Teil folgenden

try { 
    Query query = em.createQuery("SELECT g FROM PCTree g WHERE.parentKey = :parentKey ORDER BY g.orderNumber"); 
    query.setParameter("parentKey", parentKey); 
    List res = query.getResultList(); 
    return res; 
} catch (Exception e) { 
    throw new FinderException("find PCTree.findByParentKey: " + parentKey + " => " + e); 
} 

Aber ich denke, es gibt einige Verbindung/Transaktion/etc. Pool überfüllt. Die Wildfly-Statistik über die Verbindung und Transaktion scheint jedoch normal zu sein.

+1

Kopieren wo? Können Sie uns bitte den Code zeigen? – aksappy

+0

aktualisierte Frage – Dennis

+0

Diese Ausnahme bedeutet, dass bei der betroffenen Transaktion etwas schief gelaufen ist. Aktivieren Sie all Ihre Winterschlafprotokolle und show_sql = true und überprüfen Sie. – aksappy

Antwort

0

Versuchen Sie, der JNDI-Datenquelle, die Sie in WildFly konfiguriert haben, "autoreconnect" hinzuzufügen. Vergessen Sie nicht, den Server danach neu zu laden.

jdbc:mysql://localhost:3306/database?autoReconnect=true 
0

Sie haben eine begrenzte Verbindungsnummer im Datenquellenpool. Mit dieser Annotation erstellen Sie eine neue Transaktion pro Methodenaufruf. Überprüfen Sie, ob Ihre Datenquelle nicht als XA-Datenquelle konfiguriert ist, wenn Sie in derselben Transaktion nicht mehrere Ressourcen wie JMS und Datenbank benötigen. Wenn Sie wirklich XA-Transaktionen verwenden müssen, müssen Sie möglicherweise Verbindungen pro Transaktion erneut verwenden. In mehreren JBoss-Schnellstarts ist es üblich, einen gemeinsamen Transaktionsmanager zwischen einer JMS-Warteschlange und einer XA-Datenquelle zu verwenden.