Avatar billede trp79 Nybegynder
20. april 2003 - 15:30 Der er 10 kommentarer og
1 løsning

RMI J2EE

Kan man køre RMI på en clustered J2EE applikations server?
Og stadig benytte de fordele som clustered J2EE applikations server tilbyder?
Avatar billede arne_v Ekspert
20. april 2003 - 16:51 #1
1)  Du kan ikke bruge JBoss, da JBoss JNDI bruger samme port som RMIRegistry.

2)  Medmindre du har nogle meget specielle krav, så har du ikke brug
    for at køre RMI. For langt langt de fleste formål er en stateless
    session bean en udmærket erstatning for en RMI server.
Avatar billede trp79 Nybegynder
20. april 2003 - 17:03 #2
Det jeg tænker på var at gøre brug af en at-most-once (invocation) semantics, blot med det formål at sikre, at fx en hævning i en bank kun bliver udført en gang. Hvis du kan følge mig?
Avatar billede arne_v Ekspert
20. april 2003 - 17:14 #3
Nej - du har tabt mig.


Hvad er det du ville gøre i RMI ?
Avatar billede trp79 Nybegynder
20. april 2003 - 17:28 #4
Det er ren teori det her, ikke noget jeg er ved at gøre i praksis.
Jeg ved at RMI tilbyder at-most-once invocation semantics, som gør at invoker (klienten) modtager et resultat, der fortæller om et metodekald blev udført præcis een gang eller slet ikke udført.
Hvis man så forestiller sig en bank (lavet i rmi). Så hæver en klient 100kr. RMI tilbyder så den funktionalitet at man er sikker på at hævning kun blive foretaget præcis engang. Man kunne jo forestille sig følgende senarie hvis man ikke bruger at-most-once...:
en klient spørger til hævning hos banken, pengene hæves og lige da banken skal til at sende et reply tilbage til kliente så går nettet ned og klienten timerout og klienten forespørger igen om at hævning fordi den troede at den sidste hævning(læs pakke) gik tabt. Og da banken net nu er kommet op igen modtager den den nye hævning (pakke) fra klienten og hæver beløbet igen.
Beløbet bliver altså hævet to gange, men burde kun være hævet een gang.

Håber det forklare det lidt bedre...
Avatar billede arne_v Ekspert
20. april 2003 - 17:29 #5
Jeg har lige læst lidt.

Jeg kan ikke finde en referance, men jeg er sikker på at
EJB kald er at-most-once.
Avatar billede trp79 Nybegynder
20. april 2003 - 17:31 #6
Okidoki, så er der jo ingen grund til at bruge RMI :o)
Tak for hjælpen
Avatar billede trp79 Nybegynder
20. april 2003 - 17:32 #7
Har du nogen ide om hvor jeg kan finde en reference der kan bekræfte det?
Avatar billede arne_v Ekspert
20. april 2003 - 17:37 #8
Det lyder iøvrigt som du efterspørger exactly-once semantik.

Det er svært. RMI kan ikke gøre det. En god clusterede EJB løsning
kan nok komme tæt på.

Som jeg forstå at-most-once (efter at have læst om det i 3 minutter)
så betyder det kun at hvis man laver et kald, så kan det enten ikke
blive udført eller blive udført en enekelt gang. OK svar => udført
en gang. Ingen svar => uvist om ingen eller en gang. Mens at-least-once
betyder at kaldet først returnerer når der er kommet et OK svar og
det er udført 1 eller 2 eller 777 gange.
Avatar billede arne_v Ekspert
20. april 2003 - 17:38 #9
Jeg har ledt uden at kune finde nogen referance.
Avatar billede arne_v Ekspert
20. april 2003 - 17:42 #10
Hvis det hele sker indenfor et J2EE system så bruger man bare
twp-phase-commit og XA-compliant databaser.

Så er man sikre på at enten bliver alt committet eller alt
bliver rolledback.

Hvis det drejer sig om noget der ikke er XA-compliant som f.eks.
en penge-automat der skal udbetale kontanter eller en printer
der skal printe noget, så har man et problem.

Man ved ikke hvad man skal gøre i tilfælde af intet svar. Heller
ikke med at-most-once.

Det findes der så andre måder at håndtere.

Jeg ved ikke hvad de gør med penge-automater.

Jeg ved hvad de gør i de systemer jeg arbejder med til daglig.
Avatar billede trp79 Nybegynder
21. april 2003 - 09:23 #11
Tak for uddybningen, jeg tror bare vi lader RMI ligge, når andre faciliteter som EJB tilbyder at-most-once.
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