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.
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?
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.
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.
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.
Tak for uddybningen, jeg tror bare vi lader RMI ligge, når andre faciliteter som EJB tilbyder at-most-once.
Synes godt om
Ny brugerNybegynder
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.