Avatar billede cortex2k Nybegynder
05. januar 2004 - 20:28 Der er 11 kommentarer og
1 løsning

Styring af samtidighed med EJB

Hejsa Eksperter

Jeg har fået lavet et dist. lagerstyringssystem der indeholder et centralt lager med en database, som så kan tilgåes af flere klienter gennem en browser.

Mit spørgsmål er nu: Kan det ske at 2 brugere kan ændre attributter på samme vare, eller bliver det automatisk håndteret af EJB containeren? Har bare læst at mange benytter "Version Numbering Pattern" til samtidighedskontrol.

Hvis EJB håndterer dette hvorfor så bruge den?
Avatar billede arne_v Ekspert
05. januar 2004 - 20:41 #1
Hvis du bruger rene database operationer i form af en serie SQL
statements, så vil EJB containerens og databasens transaktioner
beskytte mod samtidigheds problemer.

Hvis du bruger "hent data" + "manuel editering af data" + "gem rettede data",
så kan hverken EJB containeren eller databasen beskytte dig mod
samtidigheds problemer.

Det problem løses typisk med Version Number Pattern. Som er meget brugt
i J2EE sammenhæng.
Avatar billede cortex2k Nybegynder
05. januar 2004 - 21:31 #2
Nu skal det lige siges at jeg er ret ny til J2EE og ved ikke helt hvad du mener med: Hvis du bruger "hent data" + "manuel editering af data" + "gem rettede data"?
Avatar billede arne_v Ekspert
05. januar 2004 - 21:35 #3
client (web browser eller Swing GUI) henter en record, brugeren sidder
og kigger lidt på den og retter i den i en 1-5 minutter, hvorefter brugeren
måske klikker gem record
Avatar billede arne_v Ekspert
05. januar 2004 - 21:36 #4
Meget meget almindeligt.

Og umuligt at håndtere samtidigheds problemer med traditionelle
transactions.
Avatar billede cortex2k Nybegynder
05. januar 2004 - 21:47 #5
Okay men måden man henter en record i en db er vel næsten altid vha SQL statements er det ikke?
Avatar billede arne_v Ekspert
05. januar 2004 - 21:53 #6
I sidste ende vil det altid være via JDBC og SQL statements.

Men set fra din applikations side kan du bruge:
  - direkte JDBC fra web app
  - direkte JDBC fra session beans
  - CMP entity beans
  - et persisterings framework baseret på JDO
Avatar billede cortex2k Nybegynder
05. januar 2004 - 21:58 #7
okay så det du siger er altså at hvis man bruger Container Managed Persistent entity beans så vil det være relevant at bruge Version Number Pattern? Sorry hvis jeg spørger meget men det er fordi at jeg gerne vil kunne introducere dette pattern når jeg skal til eksamen.
Avatar billede arne_v Ekspert
05. januar 2004 - 22:03 #8
Version Number Pattern vil være relevant for det jeg kalder
"hent data" + "manuel editering af data" + "gem rettede data"
funktionalitet uanset om du bruger CMP, JDO eller JDBC (eller
C eller Visual Basic og ADO).
Avatar billede cortex2k Nybegynder
05. januar 2004 - 22:21 #9
Okay nu er jeg ved at have fat i det.

Lige en sidste ting: ved CMP står containeren selv for styring af sql kald til DB som jeg har forstået det.

Vil det sige at det er fordi at de data der trækkes op smides i en entity bean og der derved kan være 2 bønner med samme data der bliver rettet af 2 forskellige brugere eller systemet at det vil være klogt at bruge Version number pattern?

Hvis du gerne vil have nogle ekstra point for de ekstra spørgsmål skal du bare sige til
Avatar billede arne_v Ekspert
05. januar 2004 - 22:24 #10
Der vil kun være 1 instans af en entity bean for en bestemt række.

Men data fra den instans kan godt være sendt til flere brugere.

Og uden Version Number Pattern vil den der gemmer sidst overskrive
rettelserne fra den der gemmer først - uden advarsel !
Avatar billede arne_v Ekspert
05. januar 2004 - 22:25 #11
Jeg mener stadig at vi er inden for de oprindelige 60 point.
Avatar billede cortex2k Nybegynder
05. januar 2004 - 22:27 #12
Okay mange tak for svarene. Nu vil jeg heller ikke forstyrre mere ;-)
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