Ich verwende Hibernate 3.6.0 mit JBoss 6.0-Final und meine Datenbank ist MS-SQL Server 2008 .
Ich muss Mitarbeiterdaten vom LDAP-Server abrufen und diese in die Datenbank einfügen - die Anzahl der LDAP-Einträge beträgt 180.000 oder mehr.
Ich verwende die bean-verwaltete Transaktion , weil CMT meine Transaktion nie festgeschrieben wird (wegen der hohen Anzahl an Einfügevorgängen). .
Die Logik ist: In einer While-Schleife bin ich immer noch dabei, & amp; Erstellen von Einträgen in der Datenbank mit JPA (Hibernate). So habe ich eine lange Reihe von Fetch-Create-Aktivitäten als Teil einer staatenlosen EJB-API. Ich rufe EntityManager.flush () / clear () und Commit-Transaktion nach der Verarbeitung alle 20 Datensätze auf.
Ich erhalte folgende WARN-Nachricht in JBoss Serevr.log, nachdem ich 40.000 Datensätze eingefügt habe.
Nicht sicher, ob es wirklich eine Warnung oder ein Fehler ist?
Obwohl ich diesen Fehler bekomme, läuft der Server noch und fährt mit dem Einfügen neuer Datensätze in DB fort.
Kann jemand vorschlagen, wenn ich etwas falsch mache? Oder was verursacht diesen Fehler?
Gibt es eine Möglichkeit, das EJB-Zeitlimit zu erhöhen ?
? %Vor%Jede Hilfe wird sehr geschätzt.
Gemäß Ihrem eigenen Kommentar (um ein konkretes Beispiel zu nennen), können Sie, wenn Sie ein Transaktions-Timeout erhöhen müssen, eine Annotation für die Methode der Klasse verwenden, die Ihre Transaktionsgrenze definiert (normalerweise eine "Fassaden" -Implementation). .
Zum Beispiel mit org.springframework.transaction.annotation.Transactional
Es scheint, dass Sie dies für eine einmalige Datenkonvertierungsaufgabe und nicht für den laufenden Produktionscode benötigen, daher ist es wahrscheinlich vertretbar, die Zeitüberschreitung zu erhöhen. Andernfalls wäre es sinnvoll, die Verarbeitung in kleinere Blöcke zu chargen und jede einzelne Transaktion zu einer eindeutigen Transaktion zu machen, die innerhalb des Standard-Timeout für Ihr System abgeschlossen werden soll.
Diese Website fasst ein Paar zusammen von mehr Möglichkeiten, das Transaktions-Timeout von jboss zu ändern. Sie können es beispielsweise in Ihrer Konfigurationsdatei standalone.xml als Subsystem wie folgt angeben:
%Vor%Alternative Anpassung des Transaktions-Timeout-Parameters über die jboss Admin-Plattform unter Subsysteme- & gt; transaction- & gt; Time Out
Vielleicht hilft das.