Avatar billede jespersahner Nybegynder
06. september 2005 - 17:35 Der er 10 kommentarer og
1 løsning

URLClassLoader og tvungen reload

Med URLClassLoader indlæses en klasse og refererende klasser. Hvis f.eks. en klasse A indeholder en reference til en anden klasse B, vil indlæsning af A også omfatte indlæsning af B.

Kan man i den forbindelse tvinge genindlæsning af de almindelige java-klasser (java.lang.* etc.), som der refereres til i A?

Årsag: Jeg indlæser klasser fra en session (inde fra en IDE), hvor f.eks. Session.out ikke peger på output-vinduet, og hvor jeg ved indlæsning af nye klasser indeholdende System.out, ønsker at disse klasser skriver til output-vinduet. Jeg har derfor brug for at genindlæse System.out.
Avatar billede arne_v Ekspert
06. september 2005 - 17:39 #1
Er det et classload problem ?

Er det ikke mere et spørgsmål om at gemme den oprindelige out og sætte den igen ?
Avatar billede jespersahner Nybegynder
06. september 2005 - 17:56 #2
->arne_v: Det kan du for så vidt godt sige. Pointen her er, at jeg egentlig ønsker at operere med de load'ede klasser, som om de kørte i en anden JVM. Her tænker jeg, at jeg kan opnå dette ved at relaod'e alle nødvendige klasser.

Ved at gemme den oprindelige out og sætte den igen, opnår jeg ikke samme adskillelse, så vidt jeg kan overskue (jeg risikerer at skulle frem og tilbage på objekter afhængig af hvor jeg er).
Avatar billede arne_v Ekspert
06. september 2005 - 18:09 #3
har du overvejet faktisk at starte en ny JVM ?
Avatar billede jespersahner Nybegynder
06. september 2005 - 18:14 #4
->arne_v: Ja, det er bestemt en mulighed, og så tænker du RMI, tænker jeg. Jeg er dog i første omgang lidt nysgerrig efter, om jeg kan få det andet til at virke i samme JVM.
Avatar billede arne_v Ekspert
06. september 2005 - 18:25 #5
ja f.eks. RMI

java.lang.* bliver jo loadet af boot classloaderen

og der søges fra oven af

så du skal på en eller anden måde have fusket ret grundigt med java's classloader
mekanisme
Avatar billede jespersahner Nybegynder
06. september 2005 - 20:59 #6
->arne_v: Når jeg tøver lidt med RMI, er det dels fordi der er gået lidt sport i at forfølge den anden ide :-) men også fordi jeg er lidt usikker på, om RMI kan give andre problemer i forhold til ikke serialiserbare objekter mv. (jeg er dog helt blank her, så det er måske ubegrundet).

Jeg har kigget lidt på flg.:
http://www.javagroup.org/echidna/

Siger det dig noget? Synes det lyder spændende, tænker lidt på, hvad teknikken bagved er.
Avatar billede arne_v Ekspert
06. september 2005 - 21:14 #7
jeg kender det ikke

umiddelbart lyder det mere som det samme som du gør end som en løsning på dit
sidste problem
Avatar billede arne_v Ekspert
06. september 2005 - 21:15 #8
jeg er ikke i tvivl om at de også leger med classloadere
Avatar billede arne_v Ekspert
06. september 2005 - 21:15 #9
og det er rigtigt at RMI og faktisk alle multi JVM implementationer kræver
serialiserbare objekter
Avatar billede jespersahner Nybegynder
08. september 2005 - 07:42 #10
->arne_v: Smid lige et svar.
Avatar billede arne_v Ekspert
08. september 2005 - 07:50 #11
ok
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