Frage

Ich verwende ibatis im Frühjahr zu schreiben, um mysql.

ich einen intermittierenden Fehler haben. Bei jedem Zyklus eines Prozesses schreibe ich zwei Zeilen in den db. Der nächste Zyklus las ich in den Zeilen aus dem vorherigen Zyklus. Manchmal (einmal in 30, manchmal öfter, mal weniger) bekomme ich nur wieder eine Zeile aus der db.

Ich habe alles Caching ausgeschaltet ich mich vorstellen kann. Meine sqlmap-config.xml nur sagt:

<sqlMapConfig>
<settings enhancementEnabled="false" statementCachingEnabled="false" classInfoCacheEnabled="false"/>

<sqlMap resource="ibatis/model/cognitura_core.xml"/>

Gibt es eine Asynchronität oder auch Caching Feder oder iBatis oder die MySQL-Treiber, dass ich fehle?

Mit Feder 3.0.5, 2.3.5 Mybatis, mysql-connector-java 5.0.5

EDIT 1:

Könnte es sein, weil ich einen Pool von Verbindungen bin mit (c3p0)? Ist es möglich, der Einsatz noch läuft, wenn ich lese. Es ist komisch, aber ich dachte, alles würde synchron werden auftreten, wenn ich asynch explizit deklariert?

War es hilfreich?

Lösung

Rufst du SqlSession.commit () nach den Einsätzen? C3P0 asynchron „schließt“ die Verbindungen, die unter den Abdeckungen verpflichten können anrufen. Das könnte das Verhalten erklären Sie sehen.

Andere Tipps

Ich bin immer ein ähnliches Verhalten. Das ist, was ich tue. Ich habe eine alte Version von iBatis ich nicht für eine Modernisierung planen. Sie können ganz einfach diese in einen Dekorateur bewegen.

SqlMapSession session = client.openSession();
try {
    try {
        session.startTransaction();
        // do work
        session.commitTransaction();
        // The transaction should be committed now, but it doesn't always happen.
        session.getCurrentConnection().commit(); // Commit again :/
    } finally {
        session.endTransaction();
    }
} finally {
    session.close(); // would be nice if it was 'AutoCloseable'
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top