Avatar billede datajesper Nybegynder
10. oktober 2001 - 14:01 Der er 5 kommentarer og
1 løsning

Enterprise Java Beans og Container Managed Transactioner

Jeg skal have indfoert noget Trasaction styring i mine EJB med CMT.

Jeg har sat alle Transaction Attributter til \" Required\" - men jeg kan ikke faa det til at virker - Den indsaetter gladeligt i den ene Tabel, selv om den fejler i den anden tabel (en fejl jeg fremtvinger) 

Mit Scenarie:
Sun\'s ReferencePlatform 1.2.1
Oracle - Thin Driver

En Session boenne, der skal indsaette i tre tabeller, ved at kalde tre forskellige Entity boenner, der hverisaer indsaetter i deres tabeller.

Den foerste gaar godt, den anden tvinger jeg til at smide en SystemException, saa der skulle laves en RollBack. - Det sker ikke !!!
Den treide fejler, da nr 2 fejler.

Skal der implementers noget i ejbLoad og ejbStore ? eller hva ?

HJAELP
/DataJesper
Avatar billede logical Nybegynder
10. oktober 2001 - 14:04 #1
Nu har jeg aldrig leget så meget med suns RI, men det du nok skal kigge på er opsætningen mod et datastore. Der er to former for Connections som er interessante, DataSource og TXDataSource. TXDataSource tilbyder transaktioner, det gør DataSource ikke.
Avatar billede datajesper Nybegynder
10. oktober 2001 - 14:13 #2
Jeg bruger foelgende til at Connecte med

private Connection connectToDB()
{
Connection c = null;
try {
      InitialContext ic = new InitialContext();
      DataSource ds = (DataSource) ic.lookup(CodedNames.DATABASE_NAME);
                    c =  ds.getConnection();
  }

catch (Exception ex) {System.out.println(ex.getMessage());}

return c;
}

Som er en DataSourc, kan det have noget med det at goere ??
/DataJesper
Avatar billede logical Nybegynder
10. oktober 2001 - 14:18 #3
Yep, så bruger du ikke transaktion mod databasen (Hvis det ellers er en ren DataSource).

Hvorfor fetcher du din egen connection. Har du Bean Managed Persistens ??
Nå, men så prøv med:
try {
      con.setAutoCommit(false);
      updatewhatever();
      con.commit();
  } catch (Exception ex) {
      try {
          con.rollback();
          throw new EJBException(\"Transaction failed: \" +
            ex.getMessage());
      } catch (SQLException sqx) {
          throw new EJBException(\"Rollback failed: \" +
              sqx.getMessage());
      }
  }
Avatar billede datajesper Nybegynder
10. oktober 2001 - 14:27 #4
Desvaerre har jeg BMPm da jeg skal arbejde op mod jdk 1.2.2 - og Sun\'s RI 1.3 kan ikke koere paa 1.2.2, saa jeg bruger RI 1.2.1, men den kan ikke lave CMP, naar der er Relationer ,elle, de enkelte tabeller ...

Men det du beskriver er det ikke BM Trancation ????

/DataJesper
Avatar billede logical Nybegynder
10. oktober 2001 - 14:31 #5
Der er forsåvidt underordnet med transaktionen, men gør mig den tjeneste og kig på om ejbstore bliver kaldt i midten af transaktionen, for det burde den faktisk ikke. Det burde køre som:

sessionbean.metode:
  start transaction {
    find entity bean
    bean1.setX();
    find another entity bean
    bean2.setY();
    find third entity bean
    bean3.setZ();
  } commit transaction {
    bean1.store();
    bean2.store();
    bean3.store();
  } rollback {
    bean1.load();
    bean2.load();
    bean3.load();
  }
Avatar billede datajesper Nybegynder
10. oktober 2001 - 14:37 #6
Ok - Tak for svaret - Jeg prover det lige af - men hvis det ikke virker, saa opretter jeg et nyt spg a la dette .......
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Netcompany A/S

Network Engineer

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Capgemini Danmark A/S

Open Application (Denmark)