|
| JEE og cache invalidering af extern system Fra : Frederik Hansen |
Dato : 08-05-06 08:50 |
|
Hejsa
Jeg har et problem som jeg håber nogen her kan hjælpe mig med.
Jeg har en JEE løsning som retter i noget data, som et andet/extern
system skal have af vide. (Det andet system er skrevet i C/C++ og
protocolen for at tale med det er properitært)
Jeg ville meget gerne kunne hooke mig ind et sted, og få en notification
efter der committet eller rollbacked. Jeg har ladet mig fortælle at jeg
kunne gøre dette med noget SessionSynchronization, men desværre så kan
jeg IKKE anvende statefull session beans..
Så nogen ideer til hvordan jeg kommer omkring det?! Jeg ville
naturligvis helst have en ikke-vendor-specific løsning, men hvis det
ikke kan være anderledes så kører løsningen på WebLogic 9.1 og WebSphere..
Venlig hilsen
Frederik
| |
Arne Vajhøj (09-05-2006)
| Kommentar Fra : Arne Vajhøj |
Dato : 09-05-06 02:37 |
|
Frederik Hansen wrote:
> Jeg har en JEE løsning som retter i noget data, som et andet/extern
> system skal have af vide. (Det andet system er skrevet i C/C++ og
> protocolen for at tale med det er properitært)
>
> Jeg ville meget gerne kunne hooke mig ind et sted, og få en notification
> efter der committet eller rollbacked. Jeg har ladet mig fortælle at jeg
> kunne gøre dette med noget SessionSynchronization, men desværre så kan
> jeg IKKE anvende statefull session beans..
>
> Så nogen ideer til hvordan jeg kommer omkring det?! Jeg ville
> naturligvis helst have en ikke-vendor-specific løsning, men hvis det
> ikke kan være anderledes så kører løsningen på WebLogic 9.1 og WebSphere..
Det afhænger jo nok meget af hvordan du gemmer de data.
Entity beans ? Hibernate ? Rå JDBC ?
Arne
| |
Frederik Hansen (09-05-2006)
| Kommentar Fra : Frederik Hansen |
Dato : 09-05-06 06:09 |
|
Hej Arne
Jeg gemmer nogen med hibernate og nogen med jdbc.. Ikke nogen med entity
beans.. Dog er det alt sammen med CMP, og løsningen skal også kunne
understøtte at clienterne bruger UserTransactions.. (Ja, vigtige
detailer, som jeg lige havde glemt at nævne.. <host>..)
Det skal jo ikke være for let..
Venlig hilsen
Frederik
Arne Vajhøj wrote:
>> Så nogen ideer til hvordan jeg kommer omkring det?! Jeg ville
>> naturligvis helst have en ikke-vendor-specific løsning, men hvis det
>> ikke kan være anderledes så kører løsningen på WebLogic 9.1 og
>> WebSphere..
>
>
> Det afhænger jo nok meget af hvordan du gemmer de data.
>
> Entity beans ? Hibernate ? Rå JDBC ?
>
> Arne
| |
Arne Vajhøj (10-05-2006)
| Kommentar Fra : Arne Vajhøj |
Dato : 10-05-06 02:57 |
|
Frederik Hansen wrote:
>Jeg har en JEE løsning som retter i noget data, som et andet/extern
>system skal have af vide. (Det andet system er skrevet i C/C++ og
>protocolen for at tale med det er properitært)
>Jeg ville meget gerne kunne hooke mig ind et sted, og få en
>notification efter der committet eller rollbacked. Jeg har ladet mig
>fortælle at jeg kunne gøre dette med noget SessionSynchronization, men
>desværre så kan jeg IKKE anvende statefull session beans..
>Så nogen ideer til hvordan jeg kommer omkring det?! Jeg ville
>naturligvis helst have en ikke-vendor-specific løsning, men hvis det
>ikke kan være anderledes så kører løsningen på WebLogic 9.1 og
>WebSphere..
> Jeg gemmer nogen med hibernate og nogen med jdbc.. Ikke nogen med entity
> beans.. Dog er det alt sammen med CMP, og løsningen skal også kunne
> understøtte at clienterne bruger UserTransactions..
Det er vanskeligt.
De bedste ideer jeg kan komme på er:
1) håndkode noget ind i de EJB implementationer som kontakter
din C/C++ app
2) bruge AspectJ (eller et andet AOP framework) til at eksekvere
noget kode som kontakter din C/C++ app i tilfælde af en EJBException
(jeg formoder at det er den som trigger rollback) eller normal
return (som må betyde commit)
3) hvis databasen understøtter triggers/stored procedures i
Java så kan I lade en trigger (evt. via en stored procedure)
kontakte din C/C++ app
#1 havde du jo nok tænkt på og det er formentligt ikke muligt.
Arne
| |
Arne Vajhøj (10-05-2006)
| Kommentar Fra : Arne Vajhøj |
Dato : 10-05-06 12:57 |
|
Arne Vajhøj wrote:
> 2) bruge AspectJ (eller et andet AOP framework) til at eksekvere
> noget kode som kontakter din C/C++ app i tilfælde af en EJBException
> (jeg formoder at det er den som trigger rollback) eller normal
> return (som må betyde commit)
Ups - det var jo BMT.
Det er så ut.commit og ut.rollback kaldene man skal fange.
Arne
| |
Frederik Hansen (11-05-2006)
| Kommentar Fra : Frederik Hansen |
Dato : 11-05-06 08:46 |
|
Arne Vajhøj wrote:
> Arne Vajhøj wrote:
>
>> 2) bruge AspectJ (eller et andet AOP framework) til at eksekvere
>> noget kode som kontakter din C/C++ app i tilfælde af en EJBException
>> (jeg formoder at det er den som trigger rollback) eller normal
>> return (som må betyde commit)
>
>
> Ups - det var jo BMT.
Ja, faktisk en blanding. Altså de samme methode kald skal kunne
foretages med CMP, eller hvis clienten ønsker mere kontrol så med
UserTransactions. Men AspectJ er faktisk en god mulighed, som jeg ikke
havde tænkt på, så det vil jeg kigge noget mere på!
> Det er så ut.commit og ut.rollback kaldene man skal fange.
Øh, det forstod jeg ikke?
Frederik
| |
Arne Vajhøj (12-05-2006)
| Kommentar Fra : Arne Vajhøj |
Dato : 12-05-06 02:12 |
|
Frederik Hansen wrote:
> Arne Vajhøj wrote:
>> Det er så ut.commit og ut.rollback kaldene man skal fange.
>
> Øh, det forstod jeg ikke?
Altså med CMT skal du fange:
after returning for din EJB
after throwing for din EJB
Mens du med BMT skal fange:
after Transaction commit
after Transaction rollback
Arne
| |
Johnnie Hougaard Nie~ (09-05-2006)
| Kommentar Fra : Johnnie Hougaard Nie~ |
Dato : 09-05-06 08:07 |
|
Frederik Hansen wrote:
> som retter i noget data, som et andet/extern system skal have af vide
En mulig type løsning kunne være at kikke på at få database softwaren
til at hjælpe dig. Det kunne f.eks. være ved at sætte en trigger på de
tabeller hvor opdateringerne skal sendes videre.
| |
|
|