Transaktions-Manager nicht immer ROLLBACKed

In meiner Anwendung sind wir mit TX-Manager.
Meine Anwendung basiert auf JSF und RF3.3 mit JDBC-Konnektivität zu MYSQL
Hier ist das Szenario:-

  1. Benutzer geben Sie den Wert in der GUI.
  2. nach dem sammeln alle Daten, die in der Backing-Bean bekomme ich die Instanz von Transaktions-Manager.
  3. Dann beginne ich den TX.
  4. Alle Werte eingefügt werden, in DB1.
  5. SOAP-Aufruf zum einfügen von Werten in eine andere DB2.
  6. Im Fall der insertion in DB2 schlägt fehl, Eintrag aus DB1 Rollen sollten, zurück.
    7.Für diese verwende ich Texas.rollBack().

Problem ist, obwohl tx.- rollBack wird noch ausgeführt, dann wird der Eintrag nicht entfernt.
Ich habe versucht deklarieren afterRollBackAction und feuerte eine delete-query in "DB1", aber es gibt mir eine Ausnahme

org.jboss.util.NestedSQLException: Transaction TransactionImple < ac, BasicAction: a7c198d:6:4eccc549:a status: ActionStatus.ABORTED > cannot proceed STATUS_ROLLEDBACK; - nested throwable: (javax.transaction.RollbackException: Transaction TransactionImple < ac, BasicAction: a7c198d:6:4eccc549:a status: ActionStatus.ABORTED > cannot proceed STATUS_ROLLEDBACK)

Überprüfte ich mein code richtig..Es ist nicht die Ausnahme (NPE oder SQL oder Jede andere Art von Ausnahme geworfen)..

Können Sie mir bitte sagen, warum der TX ist kein Rückgängigmachen und löschen den Eintrag aus der DB1?

Code-Snippet :-

try
{
txManager.begin()

cStmt.setString(1,Name);
cStmt.setString(2,Address);
cStmt.setString(3,Number);
cStmt.registerOutParameter(10, java.sql.Types.INTEGER);
cStmt.execute();
int errorCode=cStmt.getShort(10);
if(errorCode==0)
{
WebService Stub =new WebServiceStub();
CreateIdentity create=new CreateIdentity();
create.setName(Name);
create.setAddress(Address);
create.setNumber(Number);
CreateIdentityResponse createResponse=stub.createIdentity(create);
int errorCodeFromWebService=createResponse.getMsg();
 switch(errorCodeFromWebService)
{
case 0:
errorCode=0;
 txmanager.commit();

break;
case -1:
txManager.rollback();
break;
default:
txManager.rollback();
}
else
{
txManager.rollback();
}
return errorCode;

Obwohl txManager.rollback aufgerufen wird, aber rollback selbst nicht passiert ist. Ich habe versucht, mit Aktionen vor und nach dem rollback, aber ohne Erfolg.

  • Sind Ihre Tabellen InnoDB? Wenn Sie MyISAM -, dann sind Sie nicht unter Kontrolle der Vorgänge und können nicht zurückgesetzt werden.
Schreibe einen Kommentar